异常的基础

异常的基础,第1张

异常的基础

1.算数异常:ArithmeticExecption
空指针异常:NullPointerException
数组下标越界异常:ArrayIndexOutOfBoundsException
类型转换异常:ClassCastException
字符串转换为数字异常:NumberFormatException
输入类型不匹配:inputMisMatchException

2.捕获异常:try-catch-finally
抛出异常:throw,throws

3.try中没有异常的话,此时会忽略所有的catch,执行后面的代码
如果try发生异常了,异常后面的代码都不会执行,程序会去catch中进行匹配,查看是否有一个catch能将这个异常给解决了
//2.1:找到了,则执行catch块中的代码,只要执行了,则认为异常解决了,程序会继续执行try-catch后面的代码
//2.2:没有解决的,程序会报错,停止运行

3.在编写catch中,异常类型需要有小到大
4.finally一定会被执行的代码,不管是否有异常,一定会执行
finally 有一种场景是不会运行的,手动的关闭程序,System.exit(0);
如果try-catch中存在return的话,finally还会执行吗?如果执行,谁先执行?-finally先执行,然后在返回结果运行顺序如下:

ArithmeticException
程序finally代码
程序结束

代码:
try{
System.out.println(“一”);
System.exit(0);
System.out.println(10/0);
System.out.println(“二”);
return;
}catch(ArithmeticException a){
System.out.println(“ArithmeticException”);
}catch (NullPointerException n) {
System.out.println(“三”);
}catch(ClassCastException c){
System.out.println(“四”);
}catch (Exception e) {
e.printStackTrace();//输出异常信息
System.out.println(“五”);
}finally{
System.out.println(“程序finally代码”);
}
System.out.println(“程序结束”);

4.表示的是,这个方法可能存在异常,当调用者来调用这个方法的时候,public int division(int num1, int num2)throws Exception{//声明异常
throws ,抛出异常,—抛给调用者
public int division(int num1, int num2){
int result;
if(num2 == 0){
throw new ArithmeticException(“除数不能为0”);//抛出异常 创建并抛出异常。
}else{
result = num1 / num2;
}
return result;
}

5.throw new ArithmeticException(“除数不能为0”);
抛出异常 创建并抛出异常,括号内加值–(有参构造)
e.printStackTrace()
控制台显示:java.lang.ArithmeticException: 除数不能为0

自定义异常
package com.sky.exception3;
public class AgeMisMatchException extends RuntimeException{
	public AgeMisMatchException() {
		super();
	}
			
	public AgeMisMatchException(String s){
		super(s);
	}
	
}
package com.sky.exception3;
public class User {
	private int age;
	private String name;
	public int getAge() {
		return age;
	}
			
	public void setAge(int age){
		if (age < 1 || age > 120) {
			throw new AgeMisMatchException("输入年龄不匹配");
		}
		this.age = age;
	}
				
	public String getName() {
		return name;
	}
				
	public void setName(String name) {
		this.name = name;
	}
}
package com.sky.exception3;
public class TestAgeMisMatchException {
	public static void main(String[] args){
	User user = new User();
		user.setAge(123);
	}
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5638356.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存