ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Throwable类、异常处理try…catch、JVM的默认处理方案、Throws和Throw的区别、自定义异常

2021-10-13 23:34:24  阅读:164  来源: 互联网

标签:自定义 处理 public 编译 catch Throwable 异常 Throw


Throwable

所在包:java.lang
			java.lang.Object
				java.lang.Throwable
public class Throwable 
	   extends Object 
	   implements Serializable

Throwable的两个需要了解的子类:

Error:
public class Error extends Throwable    //计算机算力或编译器无法控制的错误
-------------------------------------------------------------------------------------------------
Exception:
public class Exception extends Throwable   //异常类、表示程序本身可以解决的问题

Exception的两个需要知道的子类:

  • RuntimeException:在编译期是不检查的,出问题后需要我们回来修改代码(比如1/0出现算术错误)

  • 非RuntimeException:编译期就必须处理的,否则程序不能通过编译,不能正常运行。

      注意:JVM虚拟机的默认处理方案在检测到程序有异常后会输出异常代码的位置、原因
    

Throwable的常用方法(通过Exception的实例对象来调用以下方法):

方法名作用
public String getMessage()返回此throwable的详细信息字符串
public String toString()返回此可抛出异常的简短描述
public void printStackTrace()把异常的错误信息输出在控制台
public void printStackTrace(PrintStream ps)通常用该方法将异常内容保存在日志文件中,以便查询

异常处理try…catch用法

格式:
try{
	可能出现异常的代码;
}catch(异常类名 对象名){  //出现异常,会自动生成一个异常类对象,该异常对象将被提交给JAVA运行时系统当JAVA运行时系统接收到异常对象时,会到catch中去找匹配的异常类,找到后进行异常的处理
	异常的处理代码;
}finally{...}   //最后一定会执行的代码除非JVM提前退出

代码实例:

public static void main(String[] args){
	System.out.println("开始");
	method();
	System.out.println("结束");
}
public static void method(){
	try{
		int[]arr={1,2,3};
		System.out.println(arr[3]);//ArrayIndexOutOfBoundsException()
	}catch(ArrayIndexOutOfBoundsException e){
		System.out.println("访问错误");
		//e.printStackTrace();     printStackTrace()方法是把异常的错误信息输出在控制台
	}
}

Throws异常的处理方法

格式:方法名 throw 异常名

  • 编译时异常必须要进行处理,两种处理方案:try…catch…或者throws这种方案,将来谁调用谁处理
  • 运行时异常可以不处理,出现问题后,需要我们回来修改代码

Throws和Throw的区别:

  • Throws:用在方法声明后面,跟的是异常类名。表示抛出异常,由该方法的调用者来处理。表示出现异常的一种可能性,并不一定会发生这些异常
  • Throw:用在方法体内,跟的是异常对象名。表示抛出异常,由方法体内的语句处理。执行throw一定抛出了某种异常
    代码示例:
public static void method() throws ArithmeticException {// 跟在方法声明后面,后面跟的是异常类名
        int a=10;
        int b=0;
        if(b==0) {
        	throw new ArithmeticException();用在方法体内,后面跟的是异常类对象名 
        }else {
        	System.out.println(a/b);
        }
	}
}

自定义异常

格式:
public class 异常名 extends Exception{
	无参构造();
	带参构造(E){
		super(E);
	}
}

代码示例:

public class ScoreException extends Exception{
	ScoreException();
	ScoreException(String s){
		Super(s);
	}
}
public class Teacher{              //throws用在方法声明后面
	public void score(int score) throws ScoreException{
		if(score<0||score>100){
			throw new ScoreException("你给的分数有误");
		}else{
			System.out.println("分数无误");
		}
	}
}
编译时异常和运行时异常的区别
	编译时异常:必须显示处理,否则程序就会发生错误无法通过编译
	运行时异常:无需显示处理,也可以和编译时异常一样处理

标签:自定义,处理,public,编译,catch,Throwable,异常,Throw
来源: https://blog.csdn.net/qq_46568687/article/details/120754237

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有