首页 > 编程语言 >Java异常类

Java异常类

时间:2022-11-28 14:12:17浏览次数:34  
标签:Java void throws finally catch 异常 public

什么是异常:

在java中,把异常封装成了一个类,当出现问题时,就会创建异常类对象并抛出异常相关的信息(如详细信息,名称以及异常所处的位置)

二、异常的继承关系:

Throwable类是所有错误跟异常类的超类(祖宗类)。

Exception异常类及其子类都是继承自Throwable类,用来表示java中可能出现的异常,并且合理的处理这些异常。

RuntimeException类是运行异常类,继承自Exception类,它以及它的子类只能在运行过程中存在,当出现时,只能修改源代码,此异常无法处理。

Error类是与Exception的平级的类,用来表示Java中存在的严重错误,只能通过修改代码来解决问题。

继承体系的总结:

Throwable: 它是所有错误与异常的超类(祖宗类)
|- Error 错误
|- Exception 编译期异常,进行编译JAVA程序时出现的问题
|- RuntimeException 运行期异常, JAVA程序运行过程中出现的问题

三、异常与错误的区别:

异常是指程序在编译或者运行时出现的某种异常问题,我们可以对异常进行某种处理,如果不处理异常的话,程序将会停止运行。

错误是指程序在运行时出现的严重问题,无法处理,程序将会停止运行,Error通常都是系统级别的问题,都是虚拟机jvm所在系统发生的,只能通过修改源代码解决问题。

五、抛出异常throw

在java中,提供了一个throw关键字,用来抛出一个指定的异常。

使用方法:

1.创建一个异常对象。封装一些提示信息

2.将这个异常告知调用者

使用格式:

throw new 异常类名(参数);

六、声明异常throws

声明异常格式:

修饰符 返回值类型 方法名称 (参数)throws 异常1名称,异常2名称{

}

七、捕获异常try...catch...finally

try {

//需要被检测的语句。

}

catch(异常类 变量) { //参数。

//异常的处理语句。

}

finally {

//一定会被执行的语句。

}

try:该代码块中编写可能产生异常的代码。

catch:用来进行某种异常的捕获,实现对捕获到的异常进行处理。

finally:有一些特定的代码无论异常是否发生,都需要执行。另外,因为异常会引发程序跳转,导致有些语句执行不到。而finally就是解决这个问题的,在finally代码块中存放的代码都是一定会被执行的。


捕获异常的组合方式:

1. try catch finally组合:检测异常,并传递给catch处理,并在finally中进行资源释放。

2. try catch组合 : 对代码进行异常检测,并对检测的异常传递给catch处理。对异常进行捕获处理。

3. 一个try 多个catch组合 : 对代码进行异常检测,并对检测的异常传递给catch处理。对每种异常信息进行不同的捕获处理。

注意:这种异常处理方式,要求多个catch中的异常不能相同,并且若catch中的多个异常之间有子父类异常的关系,那么子类异常要求在上面的catch处理,父类异常在下面的catch处理。

4. try finally 组合: 对代码进行异常检测,检测到异常后因为没有catch,所以一样会被默认jvm抛出。异常是没有捕获处理的。但是功能所开启资源需要进行关闭,所有finally。只为关闭资源。


八、运行时期异常 RuntimeExecption

特点:

   方法中抛出运行时期异常,方法定义中无需throws声明,调用者也无需处理此异常

    运行时期异常一旦发生,需要程序人员修改源代码

九、异常在方法重写中细节

1. 子类覆盖父类方法时,如果父类的方法声明异常,子类只能声明父类异常或者该异常的子类,或者不声明。


class Fu {
public void method () throws RuntimeException {
}
}
class Zi extends Fu {
public void method() throws RuntimeException { } //抛出父类一样的异常
//public void method() throws NullPointerException{ } //抛出父类子异常
}

 

2.当父类方法声明多个异常时,子类覆盖时只能声明多个异常的子集


class Fu {
public void method () throws NullPointerException, ClassCastException{
}
}
class Zi extends Fu {
public void method()throws NullPointerException, ClassCastException { }
public void method() throws NullPointerException{ } //抛出父类异常中的一部分
public void method() throws ClassCastException { } //抛出父类异常中的一部分
}

 

3.当被覆盖的方法没有异常声明时,子类覆盖时无法声明异常的。


class Fu {
public void method (){
}
}
class Zi extends Fu {
public void method() throws Exception { }//错误的方式
}

十、异常中常用方法

在Throwable类中为我们提供了很多操作异常对象的方法,常用的如下:

 

1.getMessage方法:返回该异常的详细信息字符串,即异常提示信息

2. toString方法:返回该异常的名称与详细信息字符串

3. printStackTrace:在控制台输出该异常的名称与详细信息字符串、异常出现的代码位置

 

例题   输入三条边判断能否构成三角形

public class IllegalArgumentException extends Exception{

public IllegalArgumentException(){

}

public IllegalArgumentException(String s){
super(s);

}
}

 

public class IllegalArgumentExceptionDemo {

public static void main(String[] args) throws IllegalArgumentException {

System.out.print("请输入三角形三边长:");
Scanner sc = new Scanner(System.in);

try {
int a = sc.nextInt();
int b = sc.nextInt();
int c = sc.nextInt();
triangle(a,b,c);
}catch (Exception e){
throw new IllegalArgumentException("请输入整数作为三角形的边长");
}
}

 

public static void triangle(int a,int b,int c) throws IllegalArgumentException {

System.out.println("三角形的三边长为: " + a + "," + b + "," + c);

if (a + b < c || a + c < b || b + c < a) {
try {
throw new IllegalArgumentException(a + "," + b + "," + c + "不能构成三角形");
}catch (IllegalArgumentException e){
e.printStackTrace();
}

}
}

标签:Java,void,throws,finally,catch,异常,public
From: https://www.cnblogs.com/w2829308301/p/16932042.html

相关文章

  • 【Web技术】188-[译] 现代 JavaScript 与 CSS 滚动实现指南
    编者按:本文由sea_ljf翻译并发表于众成翻译平台,原标题“滑向未来(现代JavaScript与CSS滚动实现指南)”一些(网站)滚动的效果是如此令人着迷但你却不知该如何实现,本文将为......
  • 【正则】174-《JavaScript 正则迷你书》知识点小抄本(下)
    四、正则表达式回溯法原理概念理解起来比较容易。比如用 ​​​/ab{1,3}c/​​ 去匹配下面两个字符串。当匹配 ​​abbbc​​,按顺序匹配,到了第3个 ​​b​​ 后,直接......
  • 【JS】165-JavaScript设计模式——工厂模式
    二、工厂模式(FactoryPattern)1.概念介绍工厂模式的目的在于创建对象,实现下列目标:可重复执行,来创建相似对象;当编译时位置具体类型(类)时,为调用者提供一种创建对象的接口;通过......
  • 【JS】164-JavaScript设计模式——单体模式
    一、单体模式(SingletonPattern)1.概念介绍单体模式(SingletonPattern)的思想在于保证一个特定类仅有一个实例,即不管使用这个类创建多少个新对象,都会得到与第一次创建的对......
  • 启动报Error while adding the mapper 'xxx.xxx.xxx' to configuration.[java.lang.Il
    【问题】启动报异常错误Errorwhileaddingthemapper'xxx.xxx.xxx'toconfigurationjava.lang.IllegalStateException:Notypehandlerfoundforpropertyxxx【......
  • JavaWeb项目实战一(Servlet+Jsp项目项目搭建及登录界面)
    之前JavaWeb学的不是太好,准备从下边列的三个发展阶段,每个阶段以项目形式去补充基础JavaWeb发展阶段:Servlet+JspSSM:SpringMVC+Spring+MyBatis其实在中间阶段还存在......
  • JavaWeb项目实战三(Spring快速入门IOC)
    Spring介绍官网:​​https://spring.io​​目前版本:​​Springweb5.3.19maven​​​,​​仓库地址​​Spring是一个支持快速开发JavaEE应用程序的框架,简化了Javaweb......
  • Java 面试 3年
    Java基础hashmap是怎么遍历的?hashmap对象遇到多线程共享怎么办?https://blog.csdn.net/weixin_51423778/article/details/125957924循环查询数据库,直到查不到数据位置,该怎么......
  • JavaWeb-JDBC
    JavaWeb-JDBC1,JDBC概述1.1JDBC概念JDBC就是使用Java语言操作关系型数据库的一套API全称:(JavaDataBaseConnectivity)Java数据库连接1.2JDBC本质官方......
  • 从零开始学习Java系列之Java运行机制与跨平台特性
    全文大约【4000】字,不说废话,只讲可以让你学到技术、明白原理的纯干货!并带有丰富的案例及配图,让你更好地理解和运用文中的技术概念,给你带来具有足够启迪的思考……在上一篇......