黑马程序员-------异常
2014-03-08 02:24
323 查看
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
自定义异常
package day09;
/*
* 因为项目中会出现特有的问题
* 而这些问题并未被java所描述并封装对象
* 所以对于这些特有的问题可以按照java的对问题封装的思想。
* 将持有的问题,进行自定义的异常封装
*
* 自定义异常。
*
* 需求:在本程序中,对于除数是-1,也视为是错误的是无法进行运算的。
* 那么就需要对这个问题进行自定义的描述。
*
* 当在函数内部出现了throw抛出异常对象,那么就必须要给对应的处理动作
* 呢么在内部try catch 处理。
*
* 一般情况在函数内部出现异常,函数需要声明
*
* 发现打印结果中只有异常的名称,却没有异常信息。
* 因为自定义的异常并未定义信息。
*
* 如果定义异常信息呢?
* 因为父类中已经把异常信息操作都完成了。
* 所以子类只要在构造时,将异常信息递给父类通过super语句,
* 那么就可以直接通过getMesage 方法获取自定义异常信息。
*
*
* 自定义异常
* 必须是自定义类继承Exception
*
* 继承Exception原因:
* 异常体系有一个特点:因为异常类和异常对象都被抛出。
* 他们都具备可抛性。这个可抛性是Throwable这个体系独有的特点
*
* 只有这个体系中的类和对象才可以被throws和throw操作
*
* throws 和 throw 的区别
* throws 使用在函数上
* throw 使用在函数内
*
* throws 后面跟的是异常类。可以多个,用逗号隔开。
* throw 后跟的是异常对象
*
*/
class FuShuException extends Exception
{
private String msg;
FuShuException(){
super();
}
FuShuException(String msg){
this.msg = msg;
}
public String getMsg(){
return msg;
}
}
class Demo3
{
int div(int a, int b) throws FuShuException{
if(b < 0)
throw new FuShuException("出现了除数是负数");//手动通过throw关键词抛出一个自定义异常对象
return a/b;
}
}
public class ExceptionDemo2 {
public static void main(String[] args) {
Demo3 d = new Demo3();
int x = 0;
try {
x = d.div(4, 1);
} catch (FuShuException e) {
System.out.println(e.toString());
System.out.println("除数为零了");
}
System.out.println("x="+x);
System.out.println("over");
}
}
/*class Throwable
{
private String message;
Throwable(String message){
this.message = message;
}
public String getMessage(){
return message;
}
}
class Exception extends Throwable
{
Exception(String message) {
super(message);
}
}
class Person{
private String name;
Person(String name){
this.name = name;
}
public String getName(){
return name;
}
}
class Student extends Person
{
Student (String name){
super(name);
}
}
new Student("lili").getName();*/
异常的分类
package day09;
/*
* Eception 中有一个特殊的子类异常RuntimeException 运行异常。
* 如果在函数内容抛出该异常,函数上可以不用声明,编译一样通过。
* 如果在函数上声明了该异常。调用者可以不用进行处理,编译一样通过
* 当该异常发生,希望程序停止。因为在运行时,出现了无法继续运算的情况,希望停止程序后,
* 对代码进行修改。
*
*
* 自定义异常是:如果给异常的发生,无法在继续进行运算,就让
* 自定义异常继承RuntimeException.
*
* 对于异常分为两种:
* 1.编译时被检测的异常
*
* 2.编译时不被检测的异常(运行时异常。RuntimeExcption以及其子类)
*/
class FuShuException extends RuntimeException
{
FuShuException(String msg){
super(msg);
}
}
class Demo4{
int div (int a, int b)//throw ArithmeticException
{
if(b<0)
throw new FuShuException("出现了除数为负数");
if(b==0)
throw new ArithmeticException("被除零啦");
return a/b;
}
}
public class EceptionDemo5 {
public static void main(String[] args) {
Demo4 d = new Demo4();
int x = d.div(4, -9);
System.out.println("x="+x);
System.out.println("over");
}
}
finally的应用
package day10;
/*
* finally代码块:定义一定执行的代码
* 通常用于关闭资源
*/
class FuShuException extends Exception
{
FuShuException(String msg)
{
super(msg);
}
}
class Demo
{
int div(int a, int b)throws FuShuException
{
if(b<0)
throw new FuShuException("除数为负数");
return a/b;
}
}
public class ExceptionDemo {
public static void main(String[] args) {
Demo d = new Demo();
try {
int x = d.div(4, -1);
} catch (FuShuException e) {
// TODO: handle exception
Syste
976a
m.out.println(e.toString());
}
finally{
System.out.println("finally");//finally中存放着一定执行的代码
}
System.out.println("over");
}
}
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
/* package day09; * 异常:就是程序在运行时出现不正常的情况。 * 异常由来:问题也是现实生活中一个具体事物,也可以通过java的类的形式进行描述,并封装成对象 * 其实就是java 对不正常情况进行描述后的对象体现 * 对于问题的规划分: * 两种: 一种是严重的问题 , 一种是非严重的问题 * * 对于严重的,java通过Error类进行描述。 * 对于Error一般不编写针对性的代码对其进行处理。 * * 对于非严重的,java通过Exception 类进行描述。 * 对于Exception 可以使用针对性的处理方式进行处理。 * * 无论Error 或者 Exception 都具有一些共性的内容 * 比如: 不正常情况的信息,引发原因等。 * * Throwable * |---Error * |---Exception * * 2.异常的处理 * * java 提供了特有的语句进行处理。 * try * { * 需要检测的代码 * }catch(异常类 变量) * { * 处理异常代码:(处理方式) * } * finally * { * 一定会执行的语句 * } * * 3.对捕获到的异常对象进行常见方法的操作。 * String getMessage();获取异常的信息 * * 在函数上声明异常 * 便于提高安全性,让调用出进行处理。不处理编译失败 * * 对多异常的处理 * * 1.声明异常是,建议声明更为具体的异常,这样处理的可以更具体 * 2.对方声明几个异常,就对应有几个catch块。 * 如果多个catch块中的异常出现继承关系,父类异常catch块放在最下面 * * * 建立在进行catch 处理时,catch中一定要定义具体处理方式。 * 不要简单定义一句e.printStackTrace(), * 也不要简单的就书写一条输出语句 * * */ class FuShuException extends ArithmeticException { } class Demo2 { int div(int a, int b) throws ArithmeticException,ArrayIndexOutOfBoundsException //在功能上通过throws的关键字声明了该功能的有可能出现问题 { int[] arr = new int[a]; System.out.println(arr[4]); return a/b; } } public class ExceptionDemo { public static void main(String[] args) { Demo2 d = new Demo2(); try{ int x = d.div(4, 1); System.out.println("x="+x); } catch (ArithmeticException e){ System.out.println(e.toString()); System.out.println("被除零啦"); } catch(ArrayIndexOutOfBoundsException e){ System.out.println(e.toString()); System.out.println("角标越界啦!!"); } System.out.println("over"); /*int x = 0; try { x = new Demo2().div(4, 0); } catch (FuShuException e) { // Exception e = new ArithmeticException(); // TODO Auto-generated catch block Systemo.out.println(e.getMessage()); e.printStackTrace(); //异常的名称,异常的信息,异常出现的位置 //其实jvm默认的异常处理机制,就是调用printStackTrace方法,打印异常堆栈信息 System.out.println("除零啦"); } System.out.println("x="+x); System.out.println("over");*/ //byte[]arr = new byte[1024*1024*600];//OutOfMemoryError } }
自定义异常
package day09;
/*
* 因为项目中会出现特有的问题
* 而这些问题并未被java所描述并封装对象
* 所以对于这些特有的问题可以按照java的对问题封装的思想。
* 将持有的问题,进行自定义的异常封装
*
* 自定义异常。
*
* 需求:在本程序中,对于除数是-1,也视为是错误的是无法进行运算的。
* 那么就需要对这个问题进行自定义的描述。
*
* 当在函数内部出现了throw抛出异常对象,那么就必须要给对应的处理动作
* 呢么在内部try catch 处理。
*
* 一般情况在函数内部出现异常,函数需要声明
*
* 发现打印结果中只有异常的名称,却没有异常信息。
* 因为自定义的异常并未定义信息。
*
* 如果定义异常信息呢?
* 因为父类中已经把异常信息操作都完成了。
* 所以子类只要在构造时,将异常信息递给父类通过super语句,
* 那么就可以直接通过getMesage 方法获取自定义异常信息。
*
*
* 自定义异常
* 必须是自定义类继承Exception
*
* 继承Exception原因:
* 异常体系有一个特点:因为异常类和异常对象都被抛出。
* 他们都具备可抛性。这个可抛性是Throwable这个体系独有的特点
*
* 只有这个体系中的类和对象才可以被throws和throw操作
*
* throws 和 throw 的区别
* throws 使用在函数上
* throw 使用在函数内
*
* throws 后面跟的是异常类。可以多个,用逗号隔开。
* throw 后跟的是异常对象
*
*/
class FuShuException extends Exception
{
private String msg;
FuShuException(){
super();
}
FuShuException(String msg){
this.msg = msg;
}
public String getMsg(){
return msg;
}
}
class Demo3
{
int div(int a, int b) throws FuShuException{
if(b < 0)
throw new FuShuException("出现了除数是负数");//手动通过throw关键词抛出一个自定义异常对象
return a/b;
}
}
public class ExceptionDemo2 {
public static void main(String[] args) {
Demo3 d = new Demo3();
int x = 0;
try {
x = d.div(4, 1);
} catch (FuShuException e) {
System.out.println(e.toString());
System.out.println("除数为零了");
}
System.out.println("x="+x);
System.out.println("over");
}
}
/*class Throwable
{
private String message;
Throwable(String message){
this.message = message;
}
public String getMessage(){
return message;
}
}
class Exception extends Throwable
{
Exception(String message) {
super(message);
}
}
class Person{
private String name;
Person(String name){
this.name = name;
}
public String getName(){
return name;
}
}
class Student extends Person
{
Student (String name){
super(name);
}
}
new Student("lili").getName();*/
异常的分类
package day09;
/*
* Eception 中有一个特殊的子类异常RuntimeException 运行异常。
* 如果在函数内容抛出该异常,函数上可以不用声明,编译一样通过。
* 如果在函数上声明了该异常。调用者可以不用进行处理,编译一样通过
* 当该异常发生,希望程序停止。因为在运行时,出现了无法继续运算的情况,希望停止程序后,
* 对代码进行修改。
*
*
* 自定义异常是:如果给异常的发生,无法在继续进行运算,就让
* 自定义异常继承RuntimeException.
*
* 对于异常分为两种:
* 1.编译时被检测的异常
*
* 2.编译时不被检测的异常(运行时异常。RuntimeExcption以及其子类)
*/
class FuShuException extends RuntimeException
{
FuShuException(String msg){
super(msg);
}
}
class Demo4{
int div (int a, int b)//throw ArithmeticException
{
if(b<0)
throw new FuShuException("出现了除数为负数");
if(b==0)
throw new ArithmeticException("被除零啦");
return a/b;
}
}
public class EceptionDemo5 {
public static void main(String[] args) {
Demo4 d = new Demo4();
int x = d.div(4, -9);
System.out.println("x="+x);
System.out.println("over");
}
}
finally的应用
package day10;
/*
* finally代码块:定义一定执行的代码
* 通常用于关闭资源
*/
class FuShuException extends Exception
{
FuShuException(String msg)
{
super(msg);
}
}
class Demo
{
int div(int a, int b)throws FuShuException
{
if(b<0)
throw new FuShuException("除数为负数");
return a/b;
}
}
public class ExceptionDemo {
public static void main(String[] args) {
Demo d = new Demo();
try {
int x = d.div(4, -1);
} catch (FuShuException e) {
// TODO: handle exception
Syste
976a
m.out.println(e.toString());
}
finally{
System.out.println("finally");//finally中存放着一定执行的代码
}
System.out.println("over");
}
}
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
相关文章推荐
- 黑马程序员_异常
- 黑马程序员《java基础总结(五)》(异常、包)
- 黑马程序员—— 8,关于异常Exception的知识点
- 黑马程序员__异常处理_File类_IO流之字节读写
- 黑马程序员——异常
- 黑马程序员 异常处理机制的总结
- 黑马程序员——学习笔记07.Java异常机制
- 黑马程序员——Java异常
- 黑马程序员 Java基础 面向对象:内部类 异常 包 jar包
- 黑马程序员——异常的日志信息、系统信息
- 黑马程序员——Java基础---异常&File
- 黑马程序员--Java基础常见异常整理
- 黑马程序员——异常
- 黑马程序员_异常
- 黑马程序员:java中的异常处理和常用类
- [黑马程序员]--Java语言异常
- 黑马程序员_java_面向对象_异常处理
- 黑马程序员——继承、抽象、多态、异常
- 黑马程序员——(异常)总结
- 黑马程序员——Java基础——异常