码迷,mamicode.com
首页 > 编程语言 > 详细

Java异常

时间:2020-07-30 01:32:17      阅读:69      评论:0      收藏:0      [点我收藏+]

标签:返回结果   pac   抛出异常   ice   哈哈哈   没有   ++i   oid   哈哈   

1. 异常的概念

技术图片

技术图片

 

 

 2. 异常的分类

技术图片

 

 

3. 异常的捕获

技术图片

package com.qf.demo02;

public class Test4Finally {

	public static void main(String[] args) {
		/*
		 * try...catch...finally完整的语法结构
		 * finally可选的
		 * 
		 * 操作数据库:向数据库中添加一条记录。。
		 * step1:和数据库建立连接。。
		 * 
		 * step2:增加一条数据
		 * 
		 * step3:和数据库断开连接,释放资源
		 */
		
		try{
			/*
			 * 有可能产生异常的代码。。
			 * 10行
			 * 5行问题啦
			 * 后5行不能执行了。。
			 * 
			 * step1:和数据库建立连接。。
			 * 
			 * step2:增加一条数据
			 * 
			 */
		}catch (ArithmeticException e) {
			/*
			 * 处理某个类型的异常。。
			 */
		}catch (Exception e) {
			/*
			 * 处理其他类型的异常。。
			 * 
			 * step3:和数据库断开连接,释放资源
			 */
		}finally {
			/*
			 * 可选的操作
			 * step3:和数据库断开连接,释放资源
			 * 文件断开,资源的释放,临时文件的删除。。。
			 */
			System.out.println("此处的代码,无论是否产生异常,一定会被执行的。。。");
		}
	}

}

return

package com.qf.demo01;

import java.util.Arrays;

/*
 * 1.try和catch中有return语句,finally里面的代码也会被执行。。
 * 
 * 2.应该避免finally中出现return语句:Eclipse会给出警告:"finally block does not complete normally"
 * 		finally中return语句,会覆盖前面的return语句。
 * 
 * 		return的作用?
 * 			A:返回一个结果,
 * 			B:结束这个方法。
 * 		finally的作用?
 * 			首尾工作:可能产生异常catch,也可能不产生异常try,有些必须要执行的代码--->finally
 * 				断开连接,释放资源,删除临时文件。。。。
 * 3.finally中尝试修改变量
 * 		验证出:finally语句在return语句执行之后,return返回结果之前执行。
 */
public class Test2Return {

	public static int test1() {
		int i = 10;
		try {
			int j = i / 0;// 产生异常。。
			System.out.println("try...");
			return 1;// 1.返回一个结果,2.同时结束了该方法的执行。。
		} catch (Exception e) {
			System.out.println("catch..");
			return 0;
		} finally {
			// 无论是否产生异常:try,,catch,,此处的代码一定会被执行。。
			System.out.println("finally...");
			// return 100;//逻辑有误
		}

	}

	// 该方法返回一个引用类型的数据:数组,对象,StringBuffer。。。。
	public static int[] test3() {
		int[] arr = { 1, 2, 3 };
		try {
			// int i = 10/0;
			System.out.println("try...");
			return arr;//引用类型:地址
		} catch (Exception e) {
			System.out.println("catch...");
			return null;
		} finally {
			System.out.println("finally...");
			arr[0] = 100;// 在finally中修改引用类型的数据。。
		}
	}

	private static int doSome() {
		int i = 100;
		try {
			return i;//基本类型:数值
		} finally {
			System.out.println("....");
			i = 30;
//			++i;
//			i++;
		}
	
	}

	public static int test2() {
		int j = 5;
		if (j > 0) {
			return 0;
		}
		return 100;
	}

	public static void main(String[] args) {
		// System.out.println(test1());
		System.out.println(Arrays.toString(test3()));
		
		System.out.println(doSome());
	}

}

4. 抛出异常

package com.qf.demo03;

public class Test7Throw {

	public static void main(String[] args) {
		Exception e = new Exception("自己抛着玩的");
		try {
			throw e;//程序中主动抛出一个异常对象,什么时候自己扔了异常,打断程序的执行。。
		} catch (Exception e1) {
			e1.printStackTrace();
		}
		
		System.out.println("main..over...");
		
		String s1 = "abc";
		s1.charAt(0);
	}

}
package com.qf.demo03;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;

public class Test6Throws {
	// 该方法用于求2个数商
	/*
	 * throws关键字,表示该方法对外声明,表示该方法不处理异常,调用处处理。
	 */
	public static void test1() throws ArithmeticException {//运行时异常
		int i = 10;
		int j = 0;
		int div = i / j;
		System.out.println(div);

	}
	
	public static void test2() throws FileNotFoundException {//受检异常:必须处理
		File file = new File("C:\\Ruby\\chutian.jpeg");
		FileInputStream fis = new FileInputStream(file);
	}

	
	public static void test3(){
		try {
			test2();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}//方法调用处
	}
	
	public static void main(String[] args) {//JVM

		test1();

		
		test3();
		System.out.println("啊哈哈哈哈哈哈哈哈");

	}
}

5. 子类不能抛出比子类更大的异常

技术图片

 

 

技术图片

 

 

6. throws和throw

 

技术图片

 

 

技术图片

 

 

7. 自定义异常

package com.qf.demo01;
/*
 * 我自己定义的异常
 */
class MyException extends Exception{
	//提供有参构造方法。。
	public MyException(String msg){
		super(msg);//调用父类的有参构造:提供异常的信息
	}
	
	public MyException(){
		super();//父类的无参构造,没有提供异常的信息
	}
	
}
public class Test1Exception {
	
	
	/*
	 * 设计一个方法,用于检验年龄,年龄不合法,抛出一个异常
	 */
	public static void checkAge(int age) throws MyException{
		if(age < 0){
//			return;
			throw new MyException("年龄不能为负数。。");
		}
		System.out.println("年龄输入正确,请继续。。。");
	}
	
	public static void checkName(String name){//"" , null
		if(name== null || name.length() == 0){
			throw new RuntimeException("请正确输入用户名,为空。。");
		}
		System.out.println("用户名正确,请继续。。。");
	}

	public static void main(String[] args) {
//		MyException e = new MyException("我自己抛着玩的");
//		try {
//			throw e;
//		} catch (MyException e1) {
//			e1.printStackTrace();
//			System.out.println("我自己定义的异常。。。");
//		}
		
//		try {
//			checkAge(-30);//调用处
//		} catch (MyException e) {
//			e.printStackTrace();
//		}
//		
//		System.out.println("go on....");
		
		
		checkName("");
		
 	}

}

  

 

Java异常

标签:返回结果   pac   抛出异常   ice   哈哈哈   没有   ++i   oid   哈哈   

原文地址:https://www.cnblogs.com/yzg-14/p/13401413.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!