java新手笔记23 异常

1.import

package com.yfs.javase;

import java.util.Scanner;

//import java.lang.String;//默认导入
public class Demo1 {

	public static void main(String[] args) {
		String s = new String("abc");//java.lang.String
		String s1 = "abc";

		System.out.println("影分身");//输出
		Scanner scan = new Scanner(System.in);//输入
		System.err.println("我没错...");//错误流

		long now = System.currentTimeMillis();
		System.out.println("系统时间  " + String.format("%tF %<tT",  now));
	    //System.exit(0);

		System.out.println (System.getenv("java_home"));

	    System.out.println("程序执行到此...");

	}

}

2.异常

package com.yfs.javase;
//异常
//执行出现异常 jvm 终止代码执行
//报告错误原因
//机制
public class ExpDemo1 {

	public static void main(String[] args) {
		String s = null;//没有对象
		//s.toString();//NullpointException
		int[] a = new int[5];
		//a[5] = 20; //ArrayIndexOutOfBoundsException

		int b = 3;
		int c = 0;
		int d = b / c;//ArithmeticException

		System.out.println("程序执行结束...");
	}

}

3.运行时异常

Person 类

package com.yfs.javase;

public class Person {

	private String name;
	private int age;
	private char sex;

	public Person() {

	}

	public Person(String name) {
		this.name = name;
	}

	public Person(String name, int age, char sex) {
		this.name = name;
		this.age = age;
		this.sex = sex;
	}

	public void introduce() {
		System.out.println("I am Person....");
	}

	public String toString() {
		return "姓名:" + name + "  年龄 :" + age + "  性别:" + sex;
	}

	public void speak() {
		System.out.println(name + " 工件了吗?");
	}

	public void sleep() {
		System.out.println(name + " 睡觉了吗?");
	}

	public void eat() {
		System.out.println(name + " 吃了吗?");
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public char getSex() {
		return sex;
	}

	public void setSex(char sex) {
		this.sex = sex;
	}

}

类转换异常

package com.yfs.javase;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;

//异常分类

public class ExpDemo2 {

	public static void main(String[] args) {
		// 运行时异常
		Object obj = new Person();
		// String s = (String)obj;//ClassCastException

		// check异常 编译时强制处理
		try {
			InputStream in = new FileInputStream("123.txt");
		} catch (FileNotFoundException e) {
			System.out.println("异常处理完成...");
			e.printStackTrace();
		}

		System.out.println("程序执行结束...");
	}

}

4.抛异常

package com.yfs.javase;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.sql.SQLException;

//抛异常

public class ExpDemo3 {

	public static void main(String[] args) throws FileNotFoundException {
		// 谁调用谁处理 没有对象处理 jvm处理 终止程序
		// try {
		try {
			test();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		// } catch (FileNotFoundException e) {
		// e.printStackTrace();
		// }
	}

	// 在方法抛出异常  throws 可以抛多个异常
	public static void test() throws FileNotFoundException, SQLException {
		int[] a = new int[3];
		a[3] = 15;// 系统检查抛出异常

		// 自己抛 throw
		if (1 == 1) {
			throw new ArithmeticException("故意抛异常");
		}
		// check 异常
		InputStream in = new FileInputStream("123.txt");
	}
}

5.异常处理

package com.yfs.javase;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.sql.SQLException;

//异常处理  catch  捕获异常对象  处理异常

public class ExpDemo4 {

	public static void main(String[] args) {
		String s = "abc";
		int[] a = new int[3];
		//try...catch...finally
	    try{
			a[3] = 15;//jvm创建异常对象  抛出异常  处理第一个异常
			s.toString();
			//可以有多个catch语句块
	    }
//	    catch (ArrayIndexOutOfBoundsException e) {//捕获异常
//			//e.printStackTrace();
//	    	System.out.println("我知道了..我是故意的");
//		} catch (NullPointerException e) {
//			System.out.println("字符串异常处理完成...");
//		} catch (Exception e) {
//			e.printStackTrace();
//			// finally 总会执行
//		}
	    finally {
			System.out.println("总是执行....");
		}

		System.out.println("程序执行结束...");
	}

}

6.自定义异常

package com.yfs.javase;
//自定义异常
public class ExpSelf extends Exception {

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

	public ExpSelf(String message, Throwable cause, boolean enableSuppression,
			boolean writableStackTrace) {
		super(message, cause, enableSuppression, writableStackTrace);
		// TODO Auto-generated constructor stub
	}

	public ExpSelf(String message, Throwable cause) {
		super(message, cause);
		// TODO Auto-generated constructor stub
	}

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

	public ExpSelf(Throwable cause) {
		super(cause);
		// TODO Auto-generated constructor stub
	}
	//String参数的构造方法
//	public ExpSelf(String msg) {
//		super(msg);//调用父类构造方法
//	}

}

7.自定义异常 测试

package com.yfs.javase;

import java.io.IOException;

public class Test {

	public static void main(String[] args) {
		try {
			if( 1 == 1) {
				throw  new ExpSelf("异常了,自己定义的...", new IOException());
			}
		} catch (ExpSelf e) {
			//e.printStackTrace();
			System.out.println(e.getMessage());
			System.out.println(e.fillInStackTrace());
			System.out.println(e.toString());
		}

	}

}
时间: 2024-11-10 00:11:57

java新手笔记23 异常的相关文章

java新手笔记1

//Hello.java文件 //类声明 public class Hello{ //声明方法 main程序入口 public static void main (String[] args) { System.out.println("Hello World!"); } } //编译命令 C:\>javac C:\Users\Administrator\Desktop\Hello.java //javac 路径+文件名.java //javac -d D:\ C:\Users\

Java学习笔记之异常

//概述 /* 异常: 是在运行时期发生的不正常情况.. 在java中用类的形式对不正常情况进行了描述和封装对象. 描述不正常的情况的类, 就称为异常类. 以前正常流程代码和问题处理代码相结合, 现在将正常流程代码和问题处理代码分离, 提高阅读性. 其实异常就是java通过面向对象的思想将问题封装成了对象. 用异常类对其进行描述. 不同的问题用不同的类进行具体的描述. 问题很多, 意味着描述的类也很多. 将其共性进行向上抽取,形成了异常体系. 最终问题(不正常情况)就分成了两大类 Throwab

java新手笔记4

1.数组 import java.util.Random; public class ArrayDemo1 { public static void main(String[] args) { int a = 10; int b = 20;// //数组对象 创建10个变量 arr[0].arr[1].arr[2].arr[3]....arr[9] int[] arr = new int[10];//默认0 arr[0] = 35; arr[1] = 29; System.out.println

黑马程序员——JAVA学习笔记五(异常)

1,     异常:是在运行时期发生的不正常情况. 在java中用类的形式对不正常情况进行了描述和封装对象.描述不正常的情况的类,就称为异常类. 以前正常流程代码和问题处理代码相结合,现在将正常流程代码和问题处理代码分离,提高阅读性. 其实异常就是java通过面向对象的思想将问题封装成了对象,用异常类对其进行描述. 不同的问题用不同的类进行具体的描述.比如角标越界.空指针异常等等. 问题很多,意味着描述的类也很多,将其共性进行向上抽取,形成了异常体系. 不正常情况分成了两大类: Throwabl

Effective Java 读书笔记之八 异常

一.只针对异常的情况才使用异常 1.类具有状态相关的方法时,可采用状态测试方法和可识别的返回值两个策略. 二.对可恢复的情况使用受检异常,对编程错误使用运行时异常 1.期望调用者能够适当恢复的情况,应该使用受检的异常. 2.用运行时异常来表明编程错误. 三.编码不必要地使用受检异常 1.使用受检异常的两个条件: a.正确地使用API并不能阻止这种异常条件的发生 b.异常发生后,使用API的程序员可以立即采取有用的动作. 四.优先使用标准的异常 1.IllegalArgumentException

java新手笔记33 多线程、客户端、服务器

1.Mouse package com.yfs.javase; public class Mouse { private int index = 1; private boolean isLive = false; //跳出方法 同步锁 public synchronized void jump() { while(true) { if(!isLive ) { System.out.println("跳出第 " + index + " 田鼠"); //修改田鼠状态

Java学习笔记23

Java集合类是一种特别有用的工具类,可以用于存储数量不等的多个对象,并可以实现常用的数据结构,如:栈. 队列等.除此之外,Java集合类还可用于保存具有映射关系的关联数组.Java集合大致可分为Set.List和Map三种 状态,其中Set代表无序.不可重复的集合:List代表有序.重复的集合:而Map代表具有映射关系的集合. Java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口,这两个接口又 包含了一些子接口或实现类.

java新手笔记34 连接数据库

1.JdbcUtil package com.yfs.javase.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class JdbcUtil { private static final String driver = "sun.j

java新手笔记10 构造器

1.摇奖小程序 package com.yfs.javase; import java.io.IOException; import java.nio.CharBuffer; import java.util.Random; public class Demo1 { /** * 模拟摇奖 */ public static void main(String[] args) { Random ran = new Random(); int[] a = new int[7]; System.out.p