Java异常处理详解

需积分: 19 10 下载量 120 浏览量 更新于2024-07-26 收藏 262KB PPT 举报
"Java异常处理是编程中必不可少的一部分,它涉及到程序在运行过程中遇到的错误和异常情况的管理和处理。异常处理确保了程序的稳定性和健壮性,防止因为未预见的问题导致程序崩溃。这份资料主要讲解了Java中的异常处理机制,包括基本概念、try-catch-finally语句的使用以及throw和throws关键字的应用。" 1. 异常的基本概念: 在Java编程中,异常是程序执行期间发生的不正常状况,可能导致程序中断或产生错误结果。异常是通过对象的形式来表示的,这些对象都是`Throwable`类的实例或其子类。异常分为两大类:`Error`和`Exception`。 2. Error类: `Error`类是用来表示严重的问题,这些问题通常与Java运行环境有关,例如虚拟机错误、系统级资源耗尽等。这些错误往往无法通过程序代码进行恢复,因此一般情况下,程序员不会尝试捕获和处理`Error`。 3. Exception类及其子类: `Exception`是异常处理的核心,它是`Throwable`的直接子类,又分为运行时异常(Runtime Exception)和非运行时异常。运行时异常是程序逻辑错误,如除数为零(`ArithmeticException`)、空指针异常(`NullPointerException`)等,编译器会要求必须显式处理这些异常。非运行时异常通常是编译时异常,如文件不存在(`FileNotFoundException`)、输入/输出异常(`IOException`)等,如果可能抛出这类异常,编译器会强制要求在可能抛出异常的代码块前加上`try-catch`或者方法声明中使用`throws`关键字。 4. try-catch-finally语句: 这是Java中处理异常的主要方式。`try`块包含可能抛出异常的代码,`catch`块用于捕获并处理特定类型的异常,而`finally`块则无论是否发生异常都会执行,通常用于资源清理(如关闭文件流)等操作。 5. throw关键字: `throw`关键字用于手动抛出一个异常。程序员可以创建自定义异常类,然后在遇到特定条件时通过`throw`语句抛出这个异常。 6. throws关键字: `throws`关键字用在方法声明上,表示该方法可能会抛出一个或多个异常。这样,调用该方法的代码就必须处理这些异常,或者将异常传递给上层调用者。 通过理解和熟练运用这些异常处理机制,Java开发者可以编写出更健壮、更易于维护的代码,确保程序在遇到错误时能够优雅地处理,而不是突然崩溃。在实际编程中,良好的异常处理习惯能够显著提高代码的质量和可读性。

SELECT PIS.SHOW_FLT_DETAIL AS SHOW_FLT_DETAIL -- new , PIS.SHOW_AWB_DETAIL AS SHOW_AWB_DETAIL -- new , PIS.DISPLAY_AIRLINE_CODE AS CARRIER_CODE , DECODE(PIS.REVERT_FLOW,'N',PIS.FLOW_TYPE,DECODE(PIS.FLOW_TYPE,'I','E','I')) AS FLOW_TYPE , PIS.SHIP_TO_LOCATION AS SHIP_TO_LOCATION , PIS.INVOICE_SEQUENCE AS INVOICE_SEQUENCE , PFT.FLIGHT_DATE AS FLIGHT_DATE , PFT.FLIGHT_CARRIER_CODE AS FLIGHT_CARRIER_CODE , PFT.FLIGHT_SERIAL_NUMBER AS FLIGHT_SERIAL_NUMBER , PFT.FLOW_TYPE AS AIRCRAFT_FLOW , FAST.AIRCRAFT_SERVICE_TYPE AS AIRCRAFT_SERVICE_TYPE , PPT.AWB_NUMBER AS AWB_NUMBER , PPT.WEIGHT AS WEIGHT , PPT.CARGO_HANDLING_OPERATOR AS CARGO_HANDLING_OPERATOR , PPT.SHIPMENT_PACKING_TYPE AS SHIPMENT_PACKING_TYPE , PPT.SHIPMENT_FLOW_TYPE AS SHIPMENT_FLOW_TYPE , PPT.SHIPMENT_BUILD_TYPE AS SHIPMENT_BUILD_TYPE , PPT.SHIPMENT_CARGO_TYPE AS SHIPMENT_CARGO_TYPE , PPT.REVENUE_TYPE AS REVENUE_TYPE , PFT.JV_FLIGHT_CARRIER_CODE AS JV_FLIGHT_CARRIER_CODE , PPT.PORT_TONNAGE_UID AS PORT_TONNAGE_UID , PPT.AWB_UID AS AWB_UID , PIS.INVOICE_SEPARATION_UID AS INVOICE_SEPARATION_UID , PFT.FLIGHT_TONNAGE_UID AS FLIGHT_TONNAGE_UID FROM PN_FLT_TONNAGES PFT , FZ_AIRLINES FA , PN_TONNAGE_FLT_PORTS PTFP , PN_PORT_TONNAGES PPT , FF_AIRCRAFT_SERVICE_TYPES FAST , SR_PN_INVOICE_SEPARATIONS PIS --new , SR_PN_INVOICE_SEP_DETAILS PISD--new , SR_PN_INV_SEP_PORT_TONNAGES PISPT --new WHERE PFT.FLIGHT_OPERATION_DATE >= trunc( CASE :rundate WHEN TO_DATE('01/01/1900', 'DD/MM/YYYY') THEN ADD_MONTHS(SYSDATE,-1) ELSE ADD_MONTHS(:rundate,-1) END, 'MON') AND PFT.FLIGHT_OPERATION_DATE < trunc( CASE :rundate WHEN TO_DATE('01/01/1900', 'DD/MM/YYYY') THEN TRUNC(SYSDATE) ELSE TRUNC(:rundate) END, 'MON') AND PFT.TYPE IN ('C', 'F') AND PFT.RECORD_TYPE = 'M' AND (PFT.TERMINAL_OPERATOR NOT IN ('X', 'A') OR (PFT.TERMINAL_OPERATOR <> 'X' AND FA.CARRIER_CODE IN (SELECT * FROM SPECIAL_HANDLING_AIRLINE) AND PPT.REVENUE_TYPE IN (SELECT * FROM SPECIAL_REVENUE_TYPE) AND PPT.SHIPMENT_FLOW_TYPE IN (SELECT * FROM SPECIAL_SHIPMENT_FLOW_TYPE) AND PFT.FLIGHT_OPERATION_DATE >= (select EFF_DATE from SPECIAL_HANDLING_EFF_DATE) )) AND PFT.DELETING_DATETIME IS NULL AND FA.AIRLINE_UID = PFT.AIRLINE_UID AND FA.DELETING_DATETIME IS NULL AND PTFP.FLIGHT_TONNAGE_UID = PFT.FLIGHT_TONNAGE_UID AND PTFP.RECORD_TYPE = 'M' AND PTFP.DELETING_DATETIME IS NULL AND PPT.TONNAGE_FLIGHT_PORT_UID (+)= PTFP.TONNAGE_FLIGHT_PORT_UID AND PPT.RECORD_TYPE (+)= 'M' AND PPT.DISCREPANCY_TYPE (+)= 'NONE' AND PPT.ADJUSTMENT_INC_FLAG (+)= 'Y' AND PPT.DELETING_DATETIME (+) IS NULL AND FAST.AIRCRAFT_SERVICE_TYPE_UID = PFT.AIRCRAFT_SERVICE_TYPE_UID AND FAST.DELETING_DATETIME IS NULL AND PIS.TEMPORAL_NAME = TO_CHAR((CASE :rundate --new WHEN TO_DATE('01/01/1900', 'DD/MM/YYYY') THEN TRUNC(SYSDATE) ELSE TRUNC(:rundate) END ), 'YYYYMM') || '00' AND PIS.INVOICE_SEPARATION_UID = PISD.INVOICE_SEPARATION_UID --new AND PISD.INVOICE_SEP_DETAIL_UID = PISPT.INVOICE_SEP_DETAIL_UID --new AND PISPT.PORT_TONNAGE_UID = PPT.PORT_TONNAGE_UID --new AND PIS.PRINT_SUPPORTING_DOC = 'Y';上面是oracle的写法,请转成spark SQL的写法。

2023-06-02 上传