Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Кіріспе
Ерекшелік тізбегі немесе ерекшелік орауы – жаңа ерекшелік ішінде оралғаннан кейін ұсталған ерекшелікті қайта лақтыру арқылы ерекшеліктерді өңдеудің объектіге бағытталған бағдарламалау әдісі. Бастапқы ерекшелік жаңа ерекшеліктің қасиеті (мысалы, себебі) ретінде сақталады. Бұл әдістің мәні – әдіс өзінің абстракция деңгейінде анықталған ерекшеліктерді лақтыруы керек, бірақ төменгі деңгейлерден алынған ақпаратты жоғалтпауы. Мысалы, кинофайлды ойнату әдісі файлды оқу кезінде туындаған ерекшеліктерді кино ойнату ерекшелігіне қайта лақтыру арқылы өңдей алады. Пайдаланушы интерфейсі қате байттардың бөлігін оқығанда немесе EOF шақырғанда туындағанын білуі қажет емес. Оған тек себебінен алынған ерекшелік хабары ғана керек. Пайдаланушы интерфейсі қабатының өзіндік ерекшеліктері болады. Себебіне қызығушылық танытқан адам оның стек іздерін жөндеу кезінде немесе тиісті журналда көре алады. Ерекшеліктердің дұрыс түрін лақтыру, әсіресе Java бағдарламалау тіліндегі тексерілген ерекшеліктер арқылы қамтамасыз етіледі, ал 1.4 нұсқасынан бастап дерлік барлық ерекшеліктер тізбектелуді қолдайды. Java немесе .NET сияқты орындалу орталарында орындалу ортасына қосылатын құралдар бар. Олар қызығушылық тудырған ерекшелік пайда болған сайын, ерекшелік лақтырылған кезде жадыда болған жөндеу ақпаратын (стек және үйірме мәндерін) жазады. Бұл құралдар Exception Interception деп аталады және олар өндірісте, тестілеуде немесе даму ортасында жұмыс істейтін Java бағдарламаларындағы ерекшеліктер үшін "нақты себеп" туралы ақпаратты ұсынады.
Exception chaining, or exception wrapping, is an object oriented programming technique of handling exceptions by re throwing a caught exception after wrapping it inside a new exception. The original exception is saved as a property (such as cause) of the new exception. The idea is that a method should throw exceptions defined at the same abstraction level as the method itself, but without discarding information from the lower levels. For example, a method to play a movie file might handle exceptions in reading the file by re throwing them inside an exception of movie playing. The user interface doesn't need to know whether the error occurred during reading chunk of bytes or calling eof It needs only the exception message extracted from cause. The user interface layer will have its own set of exceptions. The one interested in cause can see its stack trace during debugging or in proper log. Throwing the right kind of exceptions is particularly enforced by checked exceptions in the Java programming language, and starting with language version 1.4 almost all exceptions support chaining. In runtime engine environments such as Java or NET there exist tools that attach to the runtime engine and every time that an exception of interest occurs they record debugging information that existed in memory at the time the exception was thrown (stack and heap values). These tools are called Exception Interception and they provide "root cause" information for exceptions in Java programs that run in production, testing, or development environments.