首页 > 编程语言 >关于java项目中常用的异常处理情况

关于java项目中常用的异常处理情况

时间:2022-10-16 20:34:43浏览次数:58  
标签:常用 java 处理 方法 代码 报错 catch 异常

在java语言中,将程序执行中发生的不正常情况成为“异常”,在开发过程中的语法错误或者逻辑错误不算异常。

而常见的运行异常可以分为以下几种:输入不匹配异常,报错信息为InputMismatchException,空指针异常,报错信息为NullPointerException,数学运算异常,报错信息为ArithmeticException,数组下标越界异常,报错信息为ArrayIndexOutOfBoundsException,类型转换异常,报错信息为ClassCastException,数字格式不正确,NumberFormatException

还有一些编译异常的情况: 操作数据库时,查询表可能发生异常,报错信息为SQLException,

操作文件时,发生的异常,报错信息为IOExcepiton ,当操作一个不存在的文件时,发生异常,,报错信息为FileNotFoundException, 加载类,而该类不存在时,异常,报错信息为ClassNotFoundException ,操作文件,到文件末尾,发生异常,报错信息为EOFException,参数异常,报错信息为IIIegalArguementException.

而最为常见的便是编程异常,即编译期间必须处理的异常,否则代码不能通过编译。

为了保持整个程序的正常处理,所以必须对代码进行异常处理。

可以采用try catch语句进行处理,常见格式为:

try{

可能会异常的代码

}

cath(ExceptionNum1 e){

当产生ExceptionNum1异常会在这里进行处理  比如打印异常/比如输出对应的信息,

}

catch(ExceptionNUm2 e){

当产生ExceptionNum2异常会在这里进行处理  比如打印异常/比如输出对应的信息,

}finally{

无论上面是否会产生异常都会执行的代码

}

使用try-catch代码捕捉并处理异常时,不会因为产生异常影响程序的执行。

如果遇到需要处理多种异常信息的情况下,可以在一个try代码块后面跟多个catch代码块,如果使用了多个catch代码块,则catch代码块的异常类顺序一定是先子类后父类,否则直接编译时异常。

 

像数据库连接,输入输出流,网络编程socket等资源,JVM是不能自动回收的,我们需要手动的进行资源的释放。此时的资源的释放,就需要声明在finally中。

 

第二种方法是使用throws+异常类型,即声明抛出异常,但这种方法并不会真正的解决处理掉异常,而是相当于点出异常类型,让调用者想办法解决。

如果一个方法(中的语句执行时)可能生成某种异常,但是并不能确定如何处理这种异常,则此方法应显示地声明抛出异常,表面该方法不对这些异常进行处理,而由该方法的调用者负责处理。

在方法声明中用throws语句可以声明抛出的异常的列表(可以抛出多个异常),throws后面的异常类型可以是方法中产生的异常类型,也可以是它的父类(多个异常用一个exception代替)。

该方法写在方法的声明处,此时此方法执行时,可能会抛出的类型。 如果一个方法(中的语句执行时)可能生成某种异常, 但是并不能确定如何处理这种异常, 则此方法应显示地声明抛出异常,表明该方法将不对这些异常进行处理,而由该方法的调用者负责处理。 在方法声明中用throws语句可以声明抛出异常的列表, throws后面的异常类型可以是方法中产生的异常类型, 也可以是它的父类。 一旦方法体执行时,出现异常,仍会在异常代码处,生成一个异常类的对象,此对象满足throws后异常类型是,就会被抛出。异常代码后续的代码,就不在执行。 throws的方式只是将异常抛给了方法的调用者,并没有真正将异常处理掉。

此外用户还可以通过自定义异常类去对错误信息进行描述和输出:

基本概念: 当程序中出现了某些“错误”,但是该错误信息并没有在 Throwable 子类中描述处理,这个时候可以自己设计异常类,用于描述该错误信息。

基本步骤:定义类:自定义异常类名(程序员自己写)继承 Exception或者RuntimeException。

如果继承Exception,属于编译异常。如果继承RuntimeException,属于运行异常(一般来说,继承RuntimeException)。一般情况下,我们自定义异常是继承 RuntimeException, 即把自定义异常做成 运行时异常,好处是,我们可以使用默认的处理机制。比较方便。

同时异常类的方法也很重要:getMessage()方法用于返回该异常的详细描述字符,

printStackTrace()方法用于将该异常的跟踪栈信息输出到标准错误输出。(异常链)

printStackTrace(PrintStream s)方法用于将该异常的跟踪栈信息输出到指定的输出流

getStackTrace()方法用于返回该异常的跟踪栈信息。

最后要注意异常处理的规则:

异常处理机制只能用于处理不可预知的异常(将其与业务代码分离开),不能用来代替正常的流程控制,一般尽量避免catch all语句(导致无法对不同异常区分处理),不要忽略捕获到的异常

在平时的开发过程中,不要忽略异常,在那些容易产生错误的地方,或者自己不确定的地方,多使用try catch语句保证做到心中有数。

标签:常用,java,处理,方法,代码,报错,catch,异常
From: https://www.cnblogs.com/jiazq/p/16797017.html

相关文章

  • Java如何将两个数组合并为一个数组呢?
    转自:​​http://www.java265.com/JavaJingYan/202204/16502899232926.html​​数组:   数组(Array)是有序的元素序列。若将有限个类型相同的变量的集合命名,那么这个名称......
  • 异常捕获与处理
    目录异常捕获和处理异常捕获和处理1、什么是异常当我们写程序难免遇到报错,专业的称呼叫做异常,行业俗语叫做bug,由于异常情况出现会导致代码停止运行,所以在编写过程中要......
  • Java学习之路01
    基本数据类型byte8位默认值为0short16位默认值为0int32位默认值为0long64位默认值为0Lfloat32位默认值......
  • vue 的常用指令以及作用 ·
    1、v-model多用于表单元素实现双向数据绑定(同angular中的ng-model)2、v-for格式:v-for="字段名in(of)数组json"循环数组或json(同angular中的ng-repeat),需......
  • JAVAWEB学习——JDBC连接及相关操作
    //加载数据库驱动MySQL://1MySQL驱动:com.mysql.jdbc.Drive//2Oracle驱动:oracle.jdbc.driver.OracleDriver//3SQLS......
  • 学习Java我们能做些什么
      初学的同学在刚开始会觉得Java的知识体系内容非常的庞杂,但在当前互联网空前发达,学习资料极为丰富的环境下,对于现在的初学者来说最难的地方不是在于如何获得学习资料,而......
  • 第二季:6.GC垃圾回收算法和垃圾收集器的关系?分别是什么请你谈谈【Java面试题】
    第二季:6.GC垃圾回收算法和垃圾收集器的关系?分别是什么请你谈谈【Java面试题】​​前言​​​​推荐​​​​6.GC垃圾回收算法和垃圾收集器的关系?分别是什么请你谈谈​​​......
  • 第二季:GitHub的骚操作【Java面试题】
    第二季:GitHub的骚操作【Java面试题】​​前言​​​​推荐​​​​GitHub的骚操作​​​​常用词含义​​​​in关键字限制搜索范围​​​​stars或fork数量关键字查找​​......
  • Java 枚举类的简单介绍
    综述  enum的全称为enumeration,是Java1.5引入的新特性,通过关键字enum来定义枚举类。它是一种特殊类,和普通类一样可以使用构造器、定义成员变量和方法,也能实现一个或......
  • Java SE学习笔记
    java方法中可变参数可变参数的使用细节:代码publicclassMain{publicstaticvoidmain(String[]args){Tt=newT();//1.可以数组传入......