素材巴巴 > 程序开发 >

异常try catch finally

程序开发 2023-09-08 15:45:57

异常:不正常,代码出现编译或运行时的错误

Throwable(最顶层)

Error:出现的不能够处理的严重问题

Exception:可以处理的问题

异常分类:

        运行时异常:RuntimeException的子类,可以选择处理或者不处理

        编译时异常:在编译时期必须处理,捕获或者抛出

        如果出现异常我们没有处理,jvm会帮我们进行处理,他会把异常的类型,原因还有位置显示在命令行并且还终止了程序,异常后面的代码将不在执行

捕获异常

        执行顺序:首先执行try语句,如果发现异常,异常下面的代码不在执行,直接跳入catch语句结束,整个try...catch结束

        如果没有发现异常,try语句执行结束后,整个try...catch结束,不再执行catch

多个catch之间的顺序:

        多个catch之间可以有多个子父类,平级之间没有顺序关系;如果有父类,父类必须放在最后面

包住 +右键+Surround With+Try/catch Block

        finally:一定执行,用于释放资源,收尾工作

try {//需要被检测的语句。
 }
 catch(异常类 变量) { //参数。//异常的处理语句。
 }
 finally {//一定会被执行的语句。
 }

抛出异常:当我们没能力处理异常就抛出异常,可以抛出它的父类

关键字是throws 谁调用方法谁抛出异常

主方法抛出异常,jvm虚拟机帮我们抛出异常

throw:制造异常,并且结束方法

如果抛出(throw)的是编译时期异常,必须在方法声明处抛出(throws)

自定义异常:写一个类去继承Exception或者RuntimeException,然后实现多个构造方法

右键+Source+Generate Constructors from Superclass

Throwable常用方法:

        String getMessage()  返回此 throwable 的详细消息字符串

        String toString()  返回此 throwable 的简短描述

        void printStackTrace()  打印异常的堆栈的跟踪信息

public class ExceptionDemo4 {public static void main(String[] args) {try {System.out.println(2 / 0);} catch (ArithmeticException e) {// TODO Auto-generated catch blocke.printStackTrace();}}private static void method() {try {System.out.println(2 / 0);} catch(ArithmeticException e) {//String getMessage() : 原因//System.out.println(e.getMessage());//String toString()  类型和原因//System.out.println(e.toString());//void printStackTrace():类型原因和位置e.printStackTrace();}//System.out.println("hello");}
 }


标签:

素材巴巴 Copyright © 2013-2021 http://www.sucaibaba.com/. Some Rights Reserved. 备案号:备案中。