<cfcatch> не «ловит» ошибку - PullRequest
1 голос
/ 31 января 2011

У меня есть CFC для обработки изображений для обработки загруженных изображений.В этом методе я создаю новое изображение загруженного файла с ImageNew(), а затем изменяю его размер при необходимости (наряду с некоторой другой проверкой, чтобы убедиться, что это изображение).Вот фрагмент кода:

<cftry>
        <cfset ImageScaleToFit(#local.uploadedImage#, 72, "", "highestPerformance")>
        <cfimage action="write" source="#local.uploadedImage#" destination="#local.newThumbName#" overwrite="yes" >
        <cfcatch type="any">
            <cfset local.response['catcher'] = #cfcatch.Detail#>
            <cfset local.response['success'] = false>
            <cfreturn local.response>
        </cfcatch>
    </cftry>

После того, как я загрузил код на рабочий сервер, он начал выдавать ошибку, потому что «самая высокая производительность» не доступна для сжатия изображений на рабочем сервере.

В качестве резервной копии для обработки исключений <cftry> у меня есть Application.cfc, который отправляет мне электронное письмо с подробностями, маскируя ошибки пользователя, если 'try' не исправляет ошибку.

По всему CFC <cftry> ловит ошибку и отправляет ее обратно на мою страницу.где он выводит данные на консоль.

Мой вопрос: почему этот конкретный блок кода не работает с <cftry>, и ошибка передается непосредственно в обработку исключений в моем Application.CFC?

Существует ли какой-то «порог ошибки», который не может обработать моя встроенная обработка исключений?

Кстати, «highPerformance» работает по какой-то причине, хотя в документации Adobe сказано, что «самая высокая производительность»доступная опция ...

РЕДАКТИРОВАТЬ:

Вот ошибка, которую я получаю из Application.cfc

Could not initialize class javax.media.jai.JAI

И трассировка стека:

ava.lang.NoClassDefFoundError: Could not initialize class javax.media.jai.JAI at coldfusion.image.Image.resizeImageWithJAI(Image.java:1189) at coldfusion.image.Image.resize(Image.java:1119) at coldfusion.image.Image.scaleToFit(Image.java:974) at coldfusion.image.Image.scaleToFit(Image.java:959) at coldfusion.runtime.CFPage.ImageScaleToFit(CFPage.java:6189) at cfspecials2ecfc103515531$funcUPLOADFILEXHR.runFunction(C:\cfc\thecfc.cfc:143) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:418) at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47) at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:360) at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:324) at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:59) at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:277) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:192) at coldfusion.runtime.CfJspPage._invokeUDF(CfJspPage.java:2471) at cfspecials2ecfc103515531$funcMULTIUPLOAD.runFunction(C:\cfc\thecfc.cfc:32) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:418) at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47) at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:360) at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:324) at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:59) at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:277) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:463) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:453) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:320) at coldfusion.filter.ComponentFilter.invoke(ComponentFilter.java:183) at coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:282) at coldfusion.filter.RequestMonitorFilter.invoke(RequestMonitorFilter.java:48) at coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java:40) at coldfusion.filter.PathFilter.invoke(PathFilter.java:86) at coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:70) at coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28) at coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:38) at coldfusion.filter.NoCacheFilter.invoke(NoCacheFilter.java:46) at coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38) at coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22) at coldfusion.xml.rpc.CFCServlet.invoke(CFCServlet.java:138) at coldfusion.xml.rpc.CFCServlet.doPost(CFCServlet.java:289) at javax.servlet.http.HttpServlet.service(HttpServlet.java:760) at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89) at jrun.servlet.FilterChain.doFilter(FilterChain.java:86) at com.seefusion.Filter.doFilter(Filter.java:49) at com.seefusion.SeeFusion.doFilter(SeeFusion.java:1494) at jrun.servlet.FilterChain.doFilter(FilterChain.java:94) at coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:42) at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46) at jrun.servlet.FilterChain.doFilter(FilterChain.java:94) at jrun.servlet.FilterChain.service(FilterChain.java:101) at jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:106) at jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42) at jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:286) at jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:543) at jrun.servlet.jrpp.JRunProxyService.invokeRunnable(JRunProxyService.java:203) at jrunx.scheduler.ThreadPool$DownstreamMetrics.invokeRunnable(ThreadPool.java:320) at jrunx.scheduler.ThreadPool$ThreadThrottle.invokeRunnable(ThreadPool.java:428) at jrunx.scheduler.ThreadPool$UpstreamMetrics.invokeRunnable(ThreadPool.java:266) at jrunx.scheduler.WorkerThread.run(WorkerThread.java:66)

Ответы [ 2 ]

3 голосов
/ 31 января 2011

Если вы используете ColdFusion 8, убедитесь, что у вас установлены все исправления и обновления. У CF 8 было много серьезных проблем с функциями изображения и тегами, и если Java вызывает ошибку под CF, возможно, не сможет ее перехватить. Даже если вы не используете CF 8, убедитесь, что все обновлено.

0 голосов
/ 02 февраля 2011

Поймать не удается, потому что вызов ImageScaleToFit () приводит к сбою JVM. Похоже, что на вашем производственном сервере отсутствует Java Advanced Imaging API (javax.media.jai.JAI) или он не включен в classpath.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...