java中自定义异常& 编译时异常&运行时异常


编译时异常&运行时异常


A: 编译时期异常:是Exception的子类,非RuntimeExcpetion的子类,在编译时期必须处理

B:RuntimeException和他的所有子类异常,都属于运行时期异常。NullPointerException,ArrayIndexOutOfBoundsException等都属于运行时期异常.

运行时期异常的特点:

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

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




package com.itheima_01;

import java.io.FileWriter;
import java.io.IOException;

/*
 * 异常的分类:
		运行时期异常:RuntimeException的子类就是运行时期异常,在编译时期可以自由选择处理或者不处理
		编译时期异常:是Exception的子类,非RuntimeExcpetion的子类,在编译时期必须处理
 
 */
public class ExceptionDemo6 {
	public static void main(String[] args) {
		//System.out.println(2 / 0);
		
		//String s = null;
		//System.out.println(s.length());
		
		try {
			FileWriter fw = new FileWriter("a.txt");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}






自定义异常


需求:写一个方法,接受考试成绩,如果考试成绩的范围在0-100之间则属于正常,否则属于异常




案例代码:

当成绩0~100范围内,抛出一个运行时异常或者编译时异常,阻止程序继续向下执行


     package com.itheima_01;
/*
 * 需求:写一个方法,接受考试成绩,如果考试成绩的范围在0-100之间则属于正常,否则属于异常
 * 
 * throws:处理异常的一种方式,把异常抛出,由调用者来处理
 * throw:制造异常的方式,并且结束方法
 * 
 * 注意:如果抛出(throw)的是编译时期异常,必须在方法声明处抛出(throws)
 * 
 * 如何自定义一个异常类呢?
 * 		非常简单,写一个类去继承Exception或者RuntimeException,然后实现多个构造即可
 * 
 *  */
public class ExceptionDemo7 {
	public static void main(String[] args) {
		/*boolean flag = checkScore(-10);
		System.out.println(flag);*/
		
		
		
		try {
			checkScore(110);
		} catch (Exception e) {
			//System.out.println(e.getMessage());
			e.printStackTrace();
		}
		
		
		//checkScore(110);
	}
	
/*	public static boolean checkScore(int score) {
		//判断考试成绩是否符合范围,如果不符合则返回false
		if(score < 0 || score > 100) {
			return false;
		}
		
		//符合
		return true;
		
	}*/
	
	public static void checkScore(int score) throws Exception {
		if(score < 0 || score > 100) {
			throw new RuntimeException("考试成绩不符合要求");
			//throw new Exception("考试成绩不符合要求");
		} 
		
		System.out.println("考试成绩符合要求");
	}
	
	
}



 我们也可以自定义一个编译时异常或者运行时异常抛出:


  package com.itheima_01;

public class MyException extends /*RuntimeException*/ Exception{

	public MyException() {
		super();
		// TODO Auto-generated constructor stub
	}

	public MyException(String message) {
		super(message);
		// TODO Auto-generated constructor stub
	}
	/*public MyException() {
		super();
	}
	
	public MyException(String s) {
		super(s);
	}*/
	
	
}



package com.itheima_01;
/*
 * 需求:写一个方法,接受考试成绩,如果考试成绩的范围在0-100之间则属于正常,否则属于异常
 * 
 * throws:处理异常的一种方式,把异常抛出,由调用者来处理
 * throw:制造异常的方式,并且结束方法
 * 
 * 注意:如果抛出(throw)的是编译时期异常,必须在方法声明处抛出(throws)
 * 
 * 如何自定义一个异常类呢?
 * 		非常简单,写一个类去继承Exception或者RuntimeException,然后实现多个构造即可
 * 
 *  */
public class ExceptionDemo7 {
	public static void main(String[] args) {
		/*boolean flag = checkScore(-10);
		System.out.println(flag);*/
		
		
		
		try {
			checkScore(110);
		} catch (Exception e) {
			//System.out.println(e.getMessage());
			e.printStackTrace();
		}
		
		
		//checkScore(110);
	}
	
 
	public static void checkScore(int score) throws Exception {
		if(score < 0 || score > 100) {
		 
			throw new MyException("考试成绩不符合要求");
		} 
		
		System.out.println("考试成绩符合要求");
	}
	
	
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值