ColdFusion, не ловя NoClassDefFoundError

Я использую ColdFusion 8. Я хотел бы поймать NoClassDefFoundError исключение в ColdFusion, однако, я не могу... Это все еще подводит и регистрирует ошибку в exception.log файле. Вот то, что я попробовал.


    
    
        
    
    
        Horrible exception.
        
    

Но это не работает. Не могли бы Вы показать мне, как сделать это? Я должен зафиксировать эту ошибку в конкретном месте а не в OnError функция моего Application.cfc.

6
nl ja de
NoClassDefFoundError является незарегистрированным исключением, вы, верный ColdFusion ловит тех?
добавлено автор fge, источник
Только, чтобы развить, документация неправильная (или есть ошибка). cfcatch не ловит java.lang. Error' s. Если вы застреваете с Application.cfm , попытайтесь использовать .
добавлено автор Leigh, источник
Только, чтобы развить, документация неправильная (или есть ошибка). cfcatch не ловит java.lang. Error' s. Если вы застреваете с Application.cfm , попытайтесь использовать .
добавлено автор Leigh, источник
@Abbadon - Ре , я должен зафиксировать эту ошибку в конкретном месте Сначала, я спросил бы почему ? NoClassDefFound предлагает проблему конфигурации, которая не является чем-то вы обычно, сталкивается в производственной среде. Ни это не что-то, что можно "зафиксировать" во времени выполнения. Таким образом, можно ли уточнить то, что вы пытаетесь сделать и почему? К сожалению, учитывая, что cfcatch не обращается java.lang. Ошибка ' s, который оставляет общие обработчики ошибок. Если те отсутствуют, который является в значительной степени игрой с мячом afaik..
добавлено автор Leigh, источник
@Abbadon - Ре , я должен зафиксировать эту ошибку в конкретном месте Сначала, я спросил бы почему ? NoClassDefFound предлагает проблему конфигурации, которая не является чем-то вы обычно, сталкивается в производственной среде. Ни это не что-то, что можно "зафиксировать" во времени выполнения. Таким образом, можно ли уточнить то, что вы пытаетесь сделать и почему? К сожалению, учитывая, что cfcatch не обращается java.lang. Ошибка ' s, который оставляет общие обработчики ошибок. Если те отсутствуют, который является в значительной степени игрой с мячом afaik..
добавлено автор Leigh, источник
Да, но это только работало, потому что ClassNotFound - Исключение , не Ошибка как NoClassDefFound. (Таким образом, это действительно не работало) В CF10, Application.onError, кажется, фиксирует Ошибку . Потребность сделать еще некоторое тестирование все же.
добавлено автор Leigh, источник
Да, но это только работало, потому что ClassNotFound - Исключение , не Ошибка как NoClassDefFound. (Таким образом, это действительно не работало) В CF10, Application.onError, кажется, фиксирует Ошибку . Потребность сделать еще некоторое тестирование все же.
добавлено автор Leigh, источник
@Travis - Я удалил свой ответ, поскольку это неправильно. Я по ошибке проверял с ClassNotFound вместо NoClassDefFound. Недостаточно кофе, понятное дело!
добавлено автор Leigh, источник
@Travis - Я удалил свой ответ, поскольку это неправильно. Я по ошибке проверял с ClassNotFound вместо NoClassDefFound. Недостаточно кофе, понятное дело!
добавлено автор Leigh, источник
Я добавил ColdFusion признак к вашему вопросу, таким образом, больше людей будет видеть его. У вас есть несколько опечаток в том примере кода. Заканчивающийся cftry и не должен быть никакими местами между знаками фунта и именем переменной, #cfcatch# . Тип выгоды ' any' должен получить ошибку, не уверенную в ' java.lang. Throwable' напечатать?
добавлено автор Miguel-F, источник
Я нашел эту подобную почту относительно CF 8 - не ' catching' ошибка. См. ответ ниже от @Leigh. Попробуйте это.
добавлено автор Miguel-F, источник
Я нашел эту подобную почту относительно CF 8 - не ' catching' ошибка. См. ответ ниже от @Leigh. Попробуйте это.
добавлено автор Miguel-F, источник
Я добавил ColdFusion признак к вашему вопросу, таким образом, больше людей будет видеть его. У вас есть несколько опечаток в том примере кода. Заканчивающийся cftry и не должен быть никакими местами между знаками фунта и именем переменной, #cfcatch# . Тип выгоды ' any' должен получить ошибку, не уверенную в ' java.lang. Throwable' напечатать?
добавлено автор Miguel-F, источник
@Leigh didn' t вы проверяют хороший с ' any'?
добавлено автор Travis, источник
@Leigh didn' t вы проверяют хороший с ' any'?
добавлено автор Travis, источник
@Leigh ТАК капризничает, или вы удаляли свой ответ? Я don' t больше видят его.
добавлено автор Travis, источник
@Leigh ТАК капризничает, или вы удаляли свой ответ? Я don' t больше видят его.
добавлено автор Travis, источник
если у вас будут какие-либо ошибки в вашей выгоде, то она бросит ошибку CF. как Мигель-Ф сказал, если те места существуют в вашем коде, это - синтаксическая ошибка, и CF реагирует правильно. обработчики ошибок должны быть прекрасными, или они чрезвычайно бесполезны.
добавлено автор Travis, источник
@Leigh я должен поймать исключение, чтобы загрузить база данных. Проблема состояла в том, что я не мог изменить Application.cfm на Application.cfc, чтобы осуществить функцию onError. What' s странный то, что согласно Документации по ColdFusion возможно зафиксировать явские Ошибки. "Отметьте: Любой тип включает всю ошибку с Явским типом объекта java.lang. Исключение. Это не включает java.lang. Ошибки Throwable. Чтобы зафиксировать ошибки Throwable, определите java.lang. Throwable в cfcatch признаке типа тега". (livedocs.adobe.com/coldfusion/8/htmldocs/…)
добавлено автор Abbadon, источник

2 ответы

Теперь, когда у меня было больше кофе, я не думаю cfcatch способно к ловле NoClassDefFoundError . Согласно документации, это только обрабатывает Исключения:

Исключениями являются события, которые разрушают нормальный поток инструкций на странице ColdFusion, такой как подведенные операции по базе данных, отсутствуя включайте файлы и определенные разработчиками события.

NoClassDefFoundError is an Error.

Ошибка указывает на серьезные проблемы что разумное применение не должен пытаться поймать

Это походит cfcatch был только разработан, чтобы решить нормальные "восстанавливаемые" проблемы. Есть действительно не очень, можно сделать, как только вы получаете NoClassDefFoundError . Это - серьезная ошибка, и вы не можете закончить его (при нормальных обстоятельствах). Большинство, которое можно сделать, показать сообщение об ошибке и выход.

Application.onError seems to handle uncaught Errors like NoClassDefFoundError, as well as Exceptions. So I think the best you can do is implement onError and have it display an error page.

    <!---- test code --->
    
    

    <!---- Application.cfc --->
    
         .... settings ...
          
              
              
             

onError Test

//test class public class MyClass { public void myMethod() { throw new NoClassDefFoundError ("Testing..."); } }

Обновление

Любой тип включает всю ошибку с Явским типом объекта java.lang. Исключение. Это не включает java.lang. Ошибки Throwable. Чтобы зафиксировать ошибки Throwable, определите java.lang. Throwable в cfcatch признак типа тега

Despite what the documentation says, catching Throwable does not work in any of my tests (or yours). That strongly suggests a bug in the behavior or the documentation. Either way it does not work as advertised, so as mentioned above, the only alternative I know of is using a general error handler. If you must stick with an Application.cfm file for some reason, try using

(Абсурдный) Тестовый сценарий:


   
   
   
      CAUGHT java.lang.NoClassDefFoundError
   
   
      CAUGHT java.lang.LinkageError
   
   
      CAUGHT java.lang.Error
   
   
      CAUGHT java.lang.Throwable 
   
   
      CAUGHT ANY
   
   
      CAUGHT
   

9
добавлено
Да, я был на той нити также. Полностью забыл cfcatch не помог бы, пока я не имел остальную часть моего кофе, затем думал "понятное дело!"
добавлено автор Leigh, источник
@Abbadon - Печально это не была бы первая ошибка в документации... Это сказало - я не вспоминаю все тесты, которые я запустил на прошлой неделе. Но если это не работало на вас, который предполагает, что это могло просто быть быть ошибкой в документации. Я запущу повторно свои тесты позже (с CF8) и видеть то, что я поднимаю.
добавлено автор Leigh, источник
@Abbadon - Я запустил повторно свои тесты и вполне уверен, документация неправильная. См. мой обновленный ответ выше.
добавлено автор Leigh, источник
@Abbadon - Довольный я мог помочь:)
добавлено автор Leigh, источник
+1 Это - то же самое заключение, что они прибыли в в другом вопросе, на который я сослался (в комментариях). Я don' t даже думают, что OP обращает внимание больше...
добавлено автор Miguel-F, источник
Я can' t принимают этот ответ согласно Документации по ColdFusion: Любой тип включает всю ошибку с Явским типом объекта java.lang. Исключение. Это не включает java.lang. Ошибки Throwable. Чтобы зафиксировать ошибки Throwable, определите java.lang. Throwable в cfcatch признаке типа тега. (livedocs.adobe.com/coldfusion/8/htmldocs/…)
добавлено автор Abbadon, источник
@Leigh начиная с вашего ответа кажется теперь полностью полным, я приму его! Спасибо за это подробно рассмотрите:).
добавлено автор Abbadon, источник

Теперь, когда у меня было больше кофе, я не думаю cfcatch способно к ловле NoClassDefFoundError . Согласно документации, это только обрабатывает Исключения:

Исключениями являются события, которые разрушают нормальный поток инструкций на странице ColdFusion, такой как подведенные операции по базе данных, отсутствуя включайте файлы и определенные разработчиками события.

NoClassDefFoundError is an Error.

Ошибка указывает на серьезные проблемы что разумное применение не должен пытаться поймать

Это походит cfcatch был только разработан, чтобы решить нормальные "восстанавливаемые" проблемы. Есть действительно не очень, можно сделать, как только вы получаете NoClassDefFoundError . Это - серьезная ошибка, и вы не можете закончить его (при нормальных обстоятельствах). Большинство, которое можно сделать, показать сообщение об ошибке и выход.

Application.onError seems to handle uncaught Errors like NoClassDefFoundError, as well as Exceptions. So I think the best you can do is implement onError and have it display an error page.

    <!---- test code --->
    
    

    <!---- Application.cfc --->
    
         .... settings ...
          
              
              
             

onError Test

//test class public class MyClass { public void myMethod() { throw new NoClassDefFoundError ("Testing..."); } }

Обновление

Любой тип включает всю ошибку с Явским типом объекта java.lang. Исключение. Это не включает java.lang. Ошибки Throwable. Чтобы зафиксировать ошибки Throwable, определите java.lang. Throwable в cfcatch признак типа тега

Despite what the documentation says, catching Throwable does not work in any of my tests (or yours). That strongly suggests a bug in the behavior or the documentation. Either way it does not work as advertised, so as mentioned above, the only alternative I know of is using a general error handler. If you must stick with an Application.cfm file for some reason, try using

(Абсурдный) Тестовый сценарий:


   
   
   
      CAUGHT java.lang.NoClassDefFoundError
   
   
      CAUGHT java.lang.LinkageError
   
   
      CAUGHT java.lang.Error
   
   
      CAUGHT java.lang.Throwable 
   
   
      CAUGHT ANY
   
   
      CAUGHT
   

9
добавлено
Да, я был на той нити также. Полностью забыл cfcatch не помог бы, пока я не имел остальную часть моего кофе, затем думал "понятное дело!"
добавлено автор Leigh, источник
@Abbadon - Печально это не была бы первая ошибка в документации... Это сказало - я не вспоминаю все тесты, которые я запустил на прошлой неделе. Но если это не работало на вас, который предполагает, что это могло просто быть быть ошибкой в документации. Я запущу повторно свои тесты позже (с CF8) и видеть то, что я поднимаю.
добавлено автор Leigh, источник
@Abbadon - Я запустил повторно свои тесты и вполне уверен, документация неправильная. См. мой обновленный ответ выше.
добавлено автор Leigh, источник
@Abbadon - Довольный я мог помочь:)
добавлено автор Leigh, источник
+1 Это - то же самое заключение, что они прибыли в в другом вопросе, на который я сослался (в комментариях). Я don' t даже думают, что OP обращает внимание больше...
добавлено автор Miguel-F, источник
Я can' t принимают этот ответ согласно Документации по ColdFusion: Любой тип включает всю ошибку с Явским типом объекта java.lang. Исключение. Это не включает java.lang. Ошибки Throwable. Чтобы зафиксировать ошибки Throwable, определите java.lang. Throwable в cfcatch признаке типа тега. (livedocs.adobe.com/coldfusion/8/htmldocs/…)
добавлено автор Abbadon, источник
@Leigh начиная с вашего ответа кажется теперь полностью полным, я приму его! Спасибо за это подробно рассмотрите:).
добавлено автор Abbadon, источник
pro.jvm
pro.jvm
3 503 участник(ов)

Сообщество разработчиков Java Scala Kotlin Groovy Clojure Чат для нач-их: @javastart Наш сайт: projvm.com projvm.ru Наш канал: @proJVM Вакансии: @jvmjobs Конфы: @jvmconf

Java & Co
Java & Co
2 370 участник(ов)

Можно обсуждать с матом и без всё, что касается жабы, вплоть до холиваров. НЕ ИМЕЕТ ОТНОШЕНИЯ К САЙТУ JAVARUSH.RU ПРАВИЛА - https://t.me/javarush/75723 Вакансии сюда - https://telegram.me/joinchat/B7IzvUCnfo6d8t3yIxKguQ По вопросам - @thedude

learn.java
learn.java
1 888 участник(ов)

Чат для начинающих и не только Статистика: https://combot.org/chat/-1001083535868 Основной чат - @jvmchat

Java Underground
Java Underground
169 участник(ов)

https://vk.com/javatutorial

Javanese Questions
Javanese Questions
109 участник(ов)

Чат предназначен для обмена знаниями строго в формате в вопрос-ответ. Тема — Java, Kotlin и Android. Вопрос должен быть предварительно прогуглен, понятно и грамотно сформулирован, помечен хэштегами. Ответ — тем более. Куски кода размером в несколько строк можно писать прямо здесь, для больших кусков кода стоит использовать http://gist.github.com/, http://pastebin.com/, https://codeshare.io/ или любой аналогичный сервис. В некоторых случаях можно прикреплять скриншоты. Стикеры и гифки запрещены. Дополнять и уточнять вопросы и ответы — редактированием исходного сообщения. Обсуждения должны приводить к редактированию вопроса/ответа и удаляться. По хештегам можно искать существующие вопросы и овтеты: #вопрос #ответ #git #generics #java #server #awt #javafx #swing #kotlin #anko #tornadofx #ktor #android #recyclerView #performance #arch #network #permissions #storage #async