异常处理 Bertha 。 2022-06-12 05:12 292阅读 0赞 所谓异常,就是以对象的方式表示一个或一类错误,该异常对象不仅封装了错误信息,还包含了错误发生时的“上下文”信息。传统的错误处理方式是,每当程序调用了某个方法进行了某种操作,程序应该立即检查该方法的返回值,判断是否有错误发生。若有错误发生,通常要访问一个全局变量如 err 来获取具体的错误·代码,以得到进一步的错误信息。在Java中,这种传统的处理方式仍然有效,但是Java从c++中继承了以面向对象的方式处理错误机制,并做了进一步改进。 在Java中,任何异常对象都是java.lang.Throwable类或其子类的对象Throwable类是Java异常类体系中的根系,它有两个子类:一个是Error 类,另一个是Exception类。Error类及其子类的对象,代表了程序运行是Java系统内部的错误,这样的错误程序员一般不用关心。Exception 类及其子类的对象是程序员应该关心并尽可能加以处理的,Exception类有许多的子类,其中如 RuntimeException 类表示Java程序运行时错误,如数组下表越界、对象类型强制转换错误、空指针访问错误等。 所有异常分为两类:必须要检查的异常(checked exceptions)和非检查的异常(unchecked exception)。Error 和 RuntimeException 类及其子类都属于unchecked exceptions ,表示编译器在编译程序时对这类异常不做检查。Exception 类及其子类(RuntimeException除外)属于checked execptions,便、编译器在编译程序时,要检查程序是否对这类异常做了处理(如try 捕获或throws 声明抛出异常),若没有处理,则编译器会报错,要求对此必须进行处理。 **异常的捕获与处理** Java中使用try-catch-finally 语句来捕获并处理异常,try-catch-finally 语句的语法格式如下: try{ //可能会产生异常的程序代码 }catch(Excption_1 e1){ //处理异常Exception_1 的代码 }catch(Exception_2 e2){ //处理异常Exception_2的代码 } …… catch(Exception_n en){ //处理异常Exception_n的代码 }finally{ //通常是释放资源的程序代码 } 整个语句由try语句块、catch语句块和finally语句块三部分组成。catch语句块和finally语句块都是默认的,但是Java规范不允许两者同时默认。 (1)try语句块 将可能产生的异常的程序代码放在此处,该段代码是程序正常情况下应该要完成的功能。在执行过程中,该段代码可能会产生并抛出一种或几种类型的异常对象,它后面的catch语句块要分别对这些异常做相应的处理。 (2)catch语句块 每个catch语句块声明其能处理的一种的特定类型的异常并提供处理的方法。当异常发生时,程序会中止当前流程,根据获取异常的类型去执行相应的catch语句块。在catch中声明的异常对象封装了异常事件发生的信息,在catch语句块中可以使用这个对象的一些方法来获取这些信息。例如下面的方法: getMessage(): 用来得到有关异常事件的信息 printStackTrace():用来跟踪异常事件发生时执行堆栈的内容。 (3)finally语句块 无论try所指定的程序块是否抛出异常,finally所指定的代码都要被执行。finally语句为异常处理提供一个统一的接口,使得在控制流程转到程序的其它部分以前,能够对程序的状态作统一的管理。通常在finally语句中进行资源的释放工作,如关闭打开的文件,删除临时文件等。 try-catch-finally语句的语义: 首先执行try语句块中的代码,若一切正常,则跳过catch语句块,执行finally语句块中的代码,执行完后,整个try-catch-finally语句才算执行完成。若执行try语句块时产生异常,则立即跳转到catch语句块。Java虚拟机会把实际抛出的异常对象一次和各个catch语句块声明的异常类型匹配,如果异常对象为某个异常类型或其子类的对象,就执行这个catch语句块,而不会在执行其它的catch语句块,之后跳转到finally语句块,再执行完finally语句块,该语句才算执行完成。 package javademo; import java.io.*; public class UseException { public static void main(String[] args) { // TODO Auto-generated method stub try{ int a,b; a = Integer.parseInt(args[0]); b = Integer.parseInt(args[1]); System.out.println(a+"/"+b+"="+(a/b)); }catch(ArithmeticException e){ System.out.println("捕获一个异常,除数不能为0!"); } } } 声明抛出异常子句 声明抛出一个异常子句,只能加在方法头部的后面,语法格式如下: throws<异常列表> 例如,public int read() throws IOException\{……\} 若一个方法声明抛出异常,则表示该方法可能会抛出所声明的那些异常,从而要求该方法的调用者,在程序中对这些异常加以注意和处理,比如用try-catch-finally语句来处理。 若一个方法没有声明抛出异常,则该方法仍可能会抛出异常,只不过这些异常不要求调用者加以注意。时、即使一个方法声明抛出异常,则该方法仍可能会抛出不在异常列表之中列 出的异常。通常异常列表中的异常,都要求调用者要在程序中明确加以处理的。方式可以是用try-catch-finally语句捕获处理。
相关 异常处理 异常处理 错误分类 语法错误 if 2 > 1 print(222) 未加冒号 dic = {"name"; "alex"} 字典中用冒号分隔键和 淩亂°似流年/ 2023年10月10日 10:15/ 0 赞/ 58 阅读
相关 异常处理 1、异常与错误 错误对于程序而言是致命的,运用java的异常处理机制,异常发生后经过处理,程序还是能正常运行的。如:数组越界异常、除数为0异常等。异常类是指Exception ╰半夏微凉°/ 2023年08月17日 16:09/ 0 赞/ 117 阅读
相关 异常处理 异常 1.什么是异常 在正常运行程序当中,即使语句或表达式在语法上是正确的,但在尝试执行时,它仍可能会引发错误。 在执行时检测到的错误被称为 “异常”,异常不一定会 ╰半橙微兮°/ 2022年12月30日 07:45/ 0 赞/ 132 阅读
相关 异常处理 所谓异常,就是以对象的方式表示一个或一类错误,该异常对象不仅封装了错误信息,还包含了错误发生时的“上下文”信息。传统的错误处理方式是,每当程序调用了某个方法进行了某种操作,程序 Bertha 。/ 2022年06月12日 05:12/ 0 赞/ 293 阅读
相关 异常处理 异常定义: 程序在运行时出现不正常情况。 问题也是现实生活中的一个具体事物,可以通过java类的形式进行描述。并封装成对象。Java对不正常 悠悠/ 2022年06月11日 08:12/ 0 赞/ 219 阅读
相关 异常处理 C++的异常处理机制被称为是不可恢复的:一旦异常被处理,程序的执行就不能够在异常被抛出的地方继续。如果这些 catch 子句不包含返回语句,在catch子句完成它的工作之后,程 忘是亡心i/ 2022年05月23日 03:55/ 0 赞/ 268 阅读
相关 异常处理 异常写入日志 package javaBase.io.others; import java.io.; import java.text.S 妖狐艹你老母/ 2021年12月21日 18:49/ 0 赞/ 397 阅读
相关 异常处理 概念 如果某个方法不能按照正常的途径完成任务,就可以通过另一种路径退出方法。在这种情况下会抛出一个封装了错误信息的对象。此时,这个方法会立刻退出同时不返 系统管理员/ 2021年12月14日 08:49/ 0 赞/ 410 阅读
相关 异常处理 1.异常概述 异常的类型:Error(致命的),Exception(非致命的)以及必检和免检异常。 异常就是一种对象,表示阻止正常进行程序执行的错误或者情况。 异常 待我称王封你为后i/ 2021年11月16日 13:22/ 0 赞/ 444 阅读
相关 异常处理 一、Error java虚拟机无法解决的严重问题。比如:JVM系统内部错误、资源耗尽等严重情况。StackOverflowError。 针对这类错误,一般不编写针对性的代码 痛定思痛。/ 2021年11月16日 10:28/ 0 赞/ 352 阅读
还没有评论,来说两句吧...