首页 > 编程语言 >Java异常处理

Java异常处理

时间:2022-10-17 21:16:27浏览次数:53  
标签:Java 处理 try catch 异常 throws

一、异常概念:

异常:即指在程序执行的过程中,出现非正常情况,最终导致JVM的非正常停止。

在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建一个异常对象并抛出一个异常对象。Java虚拟机处理异常的方式就是中断处理。

异常指的不是语法错误,语法错误时,编译不通过,不会产生字节码文件,根本不能运行。
二、异常分类:

1,Error:严重错误Error,无法处理,只能事先避免,相当于绝症这种无法治愈的问题。必须修改源代码,程序才能继续执行。java虚拟机无法解决的严重问题.如:jvm系统错误,资源耗尽等严重问题,比如栈的溢出属于严重错误,程序会崩溃

2,Exception:表示异常,异常产生后,程序员可以通过代码去纠正,使得程序继续去运行,相当于感冒发烧这种小毛病,进行处理后可以恢复。其他因编程错误或偶然的外在因素导致的一般性问题,可以使用指定的代码去快速定位。

三、常见异常:

(一)常见的运行异常
1.NullPointerException空指针异常

2.ArithmeticException数学运算异常

3.ArrayIndexOutOfBoundsException数组下标越界异常

4.ClassCastException类型转换异常

5.NumberFormatException数字格式不正确

(二)常见的编译异常

SQLException 操作数据库时,查询表可能发生异常

IOExcepiton 操作文件时,发生的异常

FileNotFoundException当操作一个不存在的文件时,发生异常

ClassNotFoundException 加载类,而该类不存在时,异常

EOFException 操作文件,到文件末尾,发生异常

IIIegalArguementException 参数异常
 四、异常处理

异常处理的方式

1.try-catch-finally

2.throws + 异常类型

Java提供的是异常处理的抓抛模型。
过程一:Java程序的执行过程中如出现异常, 会生成一个异常类对象,该异常对象将被提交给Java运行时系统, 这个过程称为抛出(throw)异常。
过程二:抓,可以理解为异常的护理方式
 

try catch 语法
try{ 可能会异常的代码 } cath(ExceptionNum1 e){ 当产生ExceptionNum1异常会在这里进行处理 比如打印异常/比如输出对应的信息, } catch(ExceptionNUm2 e){ 当产生ExceptionNum2异常会在这里进行处理 比如打印异常/比如输出对应的信息, }finally{ 无论上面是否会产生异常都会执行的代码 }

注意事项:

1,try中可能会出现多个异常对象,可以使用多个catch来处理这些异常对象

2,如果try中产生了异常,那么就会执行catch中的异常处理逻辑,执行完catch中的异常处理逻辑,继续执行try...catch后的代码

如果try中没有产生异常,那么不执行catch的异常处理逻辑,即执行完try中的语句,继续处理try...catch后的代码

throws +异常类型 声明抛出异常是Java中处理异常的第二种方式 throws +异常类型,写在方法的声明处,此时此方法执行时, 可能会抛出的类型。 可以使用throws关键字进行异常处理,会把异常对象抛出给方法的调用者处理(自己不处理,交给别人处理),若没人处理,最终交给JVM处理——>中断处理 在方法声明中用throws语句可以声明抛出异常的列表, throws后面的异常类型可以是方法中产生的异常类型, 也可以是它的父类。 一旦方法体执行时,出现异常,仍会在异常代码处,生成一个异常类的对象,此对象满足throws后异常类型是,就会被抛出。异常代码后续的代码,就不在执行。throws的方式只是将异常抛给了方法的调用者,并没有真正将异常处理掉。 throw关键字后边创建的是RuntimeException或者是RuntimeException的子类对象我们可以不处理,默认交给JVM去处理

那么何选择try-catch和throws
如果父类中被重写的方法中没有throws方式处理异常,则子类重写的方法中也不能使用throws,意味如果子类重写的方法中有异常,必须使用try-catch。 执行的方法a中,先后又调用了另外的几个方法,这九个方法是递进关系执行的,我们建议这几个方法使用throws的方式进行处理。
而执行的方法a可以考虑使用try-catch

 

五、final

finally代码块:

格式:

try{可能产生异常的代码

} catch(定义一个异常的变量,用来接收try中抛出的异常对象){

异常的处理逻辑,产生异常之后,怎么处理异常对象

一般在工作中,会把异常信息记录在日志中

}

catch(异常类名 变量名){

}finally{

无论是否出现异常都会执行

}

标签:Java,处理,try,catch,异常,throws
From: https://www.cnblogs.com/fan-wang/p/16800670.html

相关文章

  • 1003 我要通过!(JAVA)
    “答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于PAT的“答案正确”大派送——只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”......
  • 1002 写出这个数(JAVA)
    读入一个正整数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。输出格式:在一行......
  • 1001 害死人不偿命的(3n+1)猜想(JAVA)
    卡拉兹(Callatz)猜想:对任何一个正整数n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把(3n+1)砍掉一半。这样一直反复砍下去,最后一定在某一步得到n=1。卡拉兹在1950......
  • 1005 继续(3n+1)猜想(JAVA)
    卡拉兹(Callatz)猜想已经在1001中给出了描述。在这个题目里,情况稍微有些复杂。当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数。例如对n=......
  • 1004 成绩排名(JAVA)
    读入n(>0)名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。输入格式:每个测试输入包含1个测试用例,格式为第1行:正整数n第2行:第1个学生的姓名......
  • JavaGUI编程个人笔记
    GUI编程(了解)组件窗口弹窗面板文本框列表框按钮图片监听事件鼠标事件键盘事件破解工具简介Gui开发核心技术:SwingAWT界面不美观需要jre环境但还要学习......
  • 异常处理与生成器对象和生成器表达式
    异常常见类型syntaxError语法错误NameError当你引用了变量、模块、类、函数或代码中没有定义的其他名称时,将引发NameErrorIndexError当你尝试从序列(如列表或......
  • 【Java】Java中的零拷贝
    物理内存计算机物理内存条的容量,比如我们买电脑会关注内存大小有多少G,这个容量就是计算机的物理内存。虚拟内存操作系统为每个进程分配了独立的虚拟地址空间,也就是虚拟......
  • 1010 一元多项式求导(JAVA)
    设计函数求一元多项式的导数。(注:xn(n为整数)的一阶导数为nxn−1。)输入格式:以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。输出......
  • 1045 快速排序(JAVA)
    著名的快速排序算法里有一个经典的划分过程:我们通常采用某种方法取一个元素作为主元,通过交换,把比主元小的元素放到它的左边,比主元大的元素放到它的右边。给定划分后的N个......