文档章节

JAVA学习日志(9-3-异常练习)

Almon
 Almon
发布于 2016/08/02 21:23
字数 642
阅读 5
收藏 0

Exception中有一个特殊的子类异常 RuntimeException 运行时异常

如果在函数内容中抛出了该异常,函数上可以不用声明,编译一样通过

如果在函数上声明了该异常,调用者可以不用进行处理,编译一样通过

    之所以不用在函数上声明,是因为不需要让调用者处理

    当该异常发生,希望程序停止

    因为在运行时,出现了无法继续运算的情况,希望停止程序后

    对代码进行修正

class rDemo{
	int div(int a,int b){
		if(b==0){
			throw new ArithmeticException("除数为零");
		}
		return a/b;
	}
}
class ExceptionDemo3{
	public static void main(String[] args){
		rDemo r=new rDemo();
		int x=r.div(4,0);
		System.out.println("x="+x);
		System.out.println("over");
	}
}
/*编译通过,输出结果为:
Exception in thread "main" java.lang.ArithmeticException: 除数为零
        at rDemo.div(ExceptionDemo3.java:4)
        at ExceptionDemo3.main(ExceptionDemo3.java:12)
*/

自定义异常时,如果该异常的发生,无法再继续进行运算

就让自定义异常继承RuntimeException

class FuShuException extends RuntimeException{
	FuShuException(String msg){
		super(msg);
	}
}

class Demo{
	int div(int a,int b){
		if(b<0){
			throw new FuShuException("除数为负数");
		}
		if(b==0){
			throw new ArithmeticException("除数为零");
		}
		return a/b;
	}
}
class ExceptionDemo4{
	public static void main(String[] args){
		Demo d=new Demo();
		int x=d.div(4,-1);
		System.out.println("x="+x);
		System.out.println("OVER");
	}
}

对于异常分为两种:

    1.编译时被检测的异常

    2.编译时不被检测的异常(运行时异常,RuntimeException以及其子类)


异常练习

v1.0

/* 
需求:老师用电脑上课
	
	  
 */
 class Computer{
	 public void run(){
		 System.out.println("Computer_Run");
	 }
	 public void reset(){
		 System.out.println("Computer_Reset");
	 }
 }
 class Teacher{
	 private String name;
	 private Computer cmpt;
	 Teacher(String name){
		 this.name=name;
		 cmpt=new Computer();
	 }
	 public void prelect(){
		 cmpt.run();
		 System.out.println("Teacher_Run");
	 }
 }
 class ExceptionTest{
	 public static void main(String[] args){
		 Teacher t=new Teacher("毕老师");
		 t.prelect();
	 }
 }

v2.0 加入异常

/* 
需求:老师用电脑上课
上课中的异常:电脑蓝屏 电脑冒烟
 */
 class bluesrException extends Exception{	//将异常进行描述,封装成对象
	 bluesrException(String message){
		 super(message);
	 }
 }
 class smokeException extends Exception{	//冒烟发生后讲课进度无法继续
	 smokeException(String message){		//出现讲师异常
		 super(message);
	 }
 }
 class noPlanException extends Exception{
	 noPlanException(String message){
		 super(message);
	 }
 }
 class Computer{
	 private int state=3;
	 public void run()throws bluesrException,smokeException{
		 if(state==2){
			 throw new bluesrException("蓝屏");
		 }
		 if(state==3){
			 throw new smokeException("冒烟");
		 }
		 System.out.println("Computer_Run");
	 }
	 public void reset(){
		 state=1;
		 System.out.println("Computer_Reset");
	 }
 }
 class Teacher{
	 private String name;
	 private Computer cmpt;
	 Teacher(String name){
		 this.name=name;
		 cmpt=new Computer();
	 }
	 public void prelect()throws noPlanException{
		 try{
			 cmpt.run();
		 }
		 catch(bluesrException e){
			 cmpt.reset();
		 }
		 catch(smokeException e){			 //抛出讲师异常
			 test();
			 throw new noPlanException("课时无法继续"+e.getMessage());		//和return一样属于结束语句		
		 }
		 System.out.println("Teacher_Run");
	 }
	 public void test(){
		 System.out.println("Test");
	 }
 }
 class ExceptionTest{
	 public static void main(String[] args){
		 Teacher t=new Teacher("毕老师");
		 try{
			 t.prelect();
		 }
		 catch(noPlanException e){
			 System.out.println(e.toString());
			 System.out.println("换老师或者放假");
		 }
	 }
 }

 

© 著作权归作者所有

Almon
粉丝 2
博文 71
码字总数 48982
作品 0
江北
私信 提问
【给初学者】Android学习路线

很多朋友都对学习路线问题感到迷茫,特别是还在上学的朋友们。在这里就详细的为大家介绍一下。 1.Java基础 很多朋友一上手就开始学习Android,似乎太着急了一些。Android应用程序开发是以Jav...

Jimmy Xie
2012/09/08
0
1
Java__线程---基础知识全面实战---坦克大战系列为例

今天想将自己去年自己编写的坦克大战的代码与大家分享一下,主要面向学习过java但对java运用并不是很熟悉的同学,该编程代码基本上涉及了java基础知识的各个方面,大家可以通过练习该程序对自...

x-knight_勋爵
2016/04/02
0
0
用Eclipce在java视图中使用hibernate可以正常查询,但在javaee中复制过去就无法加载

目前正在学习ssh三大框架,学习了hibernate和struts2两个,目前做个小练习把两个框架一起使用,结果我在java视图中定义的实体类和获取sessiong的工具直接复制到web项目中就无法加载了,这是为什么...

H_先生
2016/10/05
80
0
大数据开发培训:0基础学习Java编程语言有哪些知识点?

Java 技术通用、高效、具有平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网等,学习Java首先要知道学习知识点有哪些。在这就用加米谷大数据培训...

加米谷大数据
2018/07/25
0
0
几周内搞定Java的10个方法

不要将Java与JavaScript弄混了,Java的目标是“一次编译,到处调试”(呃,不对,是“到处运行”)。简单来说,就是Java程序可以直接在任何设备上运行。 Java语言是什么? 不管我们是否意识到...

拉偶有所依
2015/03/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

idea运行spring boot(推荐)

下载idea 注册激活:http://idea.lanyus.com/ 照着网上的步骤创建spring boot,这里记录存在的坑 首先gradle需要在本地配置环境变量,配制成本地的,联网下载的话要很久很久 第一次不要使用g...

安卓工程师王恒
32分钟前
2
0
java final学习笔记

代码如下:class Circle{ double r; double pi=3.14; public Circle(double r) { this.r=r; } public void getArea() { System.out.......

hellation_
50分钟前
1
0
JavaConfig版

中心思想:去xml配置文件。 在Spirng Boot和Spring Cloud中,大量使用了注解与JavaConfig。 xml文件 对应的Java类 spring.xml SpringConfig.java spring-mvc.xml SpringMvcConfig.java web.x...

流小文
今天
6
0
Go 定时器内部实现原理剖析

前言 前面我们介绍了一次性定时器Timer和周期性定时器Ticker,这两种定时器内部实现机制相同。创建定时器的协程并不负责计时,而是把任务交给系统协程,系统协程统一处理所有的定时器。 本节...

恋恋美食
今天
6
0
分布式协调神器 ZooKeeper 之整体概述

ZooKeeper 最早起源于雅虎研究院的一个研究小组。当时,雅虎内部很多大型系统基本都需要依赖一个类似的系统来进行分布式协调,但是这些系统往往都存在分布式单点问题。所以,雅虎的开发人员就...

别打我会飞
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部