异常处理,

    异常的产生

          运行时异常:程序运行中产生的异常;RuntimeException类。

          编译时异常:程序在编译时产生的异常;除了RuntimeException类  其他都是编译时产生的异常。

   处理异常两种方式

    抛出异常:把异常抛给调用者区解决   throws 抛出异常

    捕获异常:编程者自己处理try....catch...finally...

创建异常,

    1.自己创建sun公司的异常类对象

    

public class ClassException {
public static void main(String[] args) {
try {//如果出现异常 用来捕获异常
checkScore(110);
} catch (Exception e) {
e.printStackTrace();//输出 异常类型,异常原因,异常位置。 内部具有多线程
}
}
private static void checkScore(int i) throws RuntimeException {
if (i<0||i>100) {
throw new RuntimeException("不符合要求");//创建运行时异常对象
}
System.out.println("符合要求");
}
}

  

输出结果 :
java.lang.RuntimeException: 不符合要求
at day08.ClassException.checkScore(ClassException.java:28)
at day08.ClassException.main(ClassException.java:21)

  

    2.自定异常类继承sun公司的异常类(异常名字可以自定义)

  定义一个自定义类 (MyException)

public class NotToPrintException  extends Exception{//继承Exception类  调用父类构造输出异常信息
public NotToPrintException() {
super();
}
public NotToPrintException(String message) {
super(message);
}
}

  

public class ClassException {
public static void main(String[] args) {
try {
checkScore(110);
} catch (Exception e) {
e.printStackTrace();//输出异常类型,异常原因,异常位置 内部具有多线程
 } }
      //使用自定义异常类来抛出异常
private static void checkScore(int i) throws NotToPrintException {//使用自定义类捕获异常
if (i<0||i>100) {
throw new NotToPrintException("不符合要求");//抛出NotToPrintException对象
}
System.out.println("符合要求");
}
}

  

day08.NotToPrintException: 不符合要求
at day08.ClassException.checkScore(ClassException.java:29)
at day08.ClassException.main(ClassException.java:21)

  

finally,

    作用: 做为程序的善后的工作  

    执行顺序:try和catch之后  

  

public class FinallyTest {
public static void main(String[] args) {
FileWriter fw=null;
try {
fw=new FileWriter("a.txt");
fw.write("hello");
fw.write("world");
System.out.println(10/0);//报异常 但是fw还没有关闭 数据没有写进去
fw.write("java");
} catch (IOException e) {
e.printStackTrace();
} catch (ArithmeticException e) {
e.printStackTrace();
}finally{
try {
if (fw!=null) {
fw.close();//如果中途出现错误 但为了让数据已经写的数据存在文本中 则在finally中进行关闭流操作。
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

  

a.txt文件中内容

helloworld

  

                 特殊案例:catch中存在return 和System.exit(0);

  

public class FinallyTest {
public static void main(String[] args) {
System.out.println(method1()); }
private static int method1(){
int a=10;
try{
System.out.println(10/0);
a=20;
}catch(Exception e){
a=30;
return a;//在执行finally之前会 return a时 这时a已经被赋值为30 再执行finally中a=40不会影响return a中的a值
      }finally{
a=40;
}
return a;
}
}
输出结果:
30

/*
* return a在程序执行到这一步的时候,这里不是return a而是return 30;这个返回路径就形成了。
* 但是呢,它发现后面还有finally,所以继续执行finally的内容,a=40
* 再次回到以前的返回路径,继续走return 30;
*/

    

public class FinallyTest {
public static void main(String[] args) {
System.out.println(method1()); }
private static int method1(){
int a=10;
try{
System.out.println(10/0);
a=20;
}catch(Exception e){
a=30;
System.out.println(a);
System.exit(0);//程序退出 不会执行finally
         }finally{
System.out.println(1);
a=40;
}
return a;
}

  

throws和throw的区别

  throws:

      位置:方法声明上

      作用:抛出异常  (处理异常的一种方式)

    throw:

      位置:方法中

      作用:创建一个异常对象 (制造异常)

public class ClassException {
public static void main(String[] args) {
try {
checkScore(110);
} catch (Exception e) {
e.printStackTrace();
}
checkScore(10);
}
private static void checkScore(int i) throws RuntimeException {//抛出异常 抛给调用者进行处理
if (i<0||i>100) {
throw new RuntimeException("不符合要求");//制造异常
}
System.out.println("符合要求");
}
}

  

     

day08(异常处理,创建异常,finally,throws和throw的区别)的更多相关文章

  1. JAVA基础学习之throws和throw的区别、Java中的四种权限、多线程的使用等(2)

    1.throws和throw的区别 throws使用在函数外,是编译时的异常,throw使用在函数内,是运行时的异常 使用方法 public int method(int[] arr) throws ...

  2. Java语言如何进行异常处理,关键字:throws、throw、try、catch、finally分别如何使用?

    先上代码再进行分析 public class Test { public static void main(String[] args) { try{ int i = 100 / 0; System. ...

  3. Java 语言如何进行异常处理,关键字:throws、throw、 try、catch、finally 分别如何使用?

    Java 通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口.在 Java 中,每个异常都是一个对象,它是 Throwable 类或其子类的实例.当一个方法出现异常后便抛出一 ...

  4. JAVA中的throws和throw的区别

    Java     一直对java中的throws和throw不太理解.最近一直在查这两个方面的资料,算是能明白一点吧.如果我下面的观点哪有不对,希望指出来,我加以改进.         throw:( ...

  5. Java中throws和throw的区别讲解

    当然,你需要明白异常在Java中式以一个对象来看待.并且所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常,但是一般情况下Java 强烈地要求应用程序进行完整的异常处理,给用户友好的提示, ...

  6. Java异常throws与throw的区别

    throws关键字通常被应用在声明方法时,用来指定可能抛出的异常.多个异常可以使用逗号隔开.当在主函数中调用该方法时,如果发生异常,就会将异常抛给指定异常对象.谁调用谁处理: 抛出异常throws: ...

  7. Java异常机制关键字总结,及throws 和 throw 的区别

    在Java的异常机制中,时常出现五个关键字:try , catch , throw , throws , finally. 下面将总结各个关键字的用法,以及throw和throws的区别: (1) t ...

  8. throws和throw的区别

    throws是声明在方法上,告诉调用者这个方法可能会出现的问题.格式  :   方法()   throws  自定义异常类(异常类)    就是在这个方法里面会出问题时,new  throw时,    ...

  9. java中的抛出异常throws与throw

    throws与throw throws是方法可能抛出异常的声明.(用在声明方法时,表示该方法可能要抛出异常)语法:[(修饰符)](返回值类型)(方法名)([参数列表])[throws(异常类)]{.. ...

随机推荐

  1. 事件委托,js中的一种优化方法

    在前端编程中,我们常会遇到一种叫做事件委托的方法. 那么, 什么是事件委托呢? 简单来说,事件就是指onclick,onmouseover,onmouseout等大部分事件,为什么说是大部分后面会提到 ...

  2. PostgreSql别名区分大小写的问题

    PostgreSql是区分大小写的,如果别名的大小不一致就会提示错误: SELECT * FROM ( SELECT cpi."product_item_id" "PRO ...

  3. scala--函数式对象

    函数式对象 这次写点关于函数式对象的吧 class Rational(n:Int, d:Int) { // n,d 为类参数,scala会创造出同样带有这两个参数的主构造器.如果这个类没有主体,可以不 ...

  4. Access denied for user 'root'@'localhost' (using password:YES)解决方法

    Access denied for user 'root'@'localhost' (using password:YES)解决方法 在MySQL的使用过程中,我们可能会碰到“Access denie ...

  5. HTML转义

    HTML转义 模板对上下文传递的字符串进行输出时,会对以下字符自动转义 小于号< 转换为< 大于号> 转换为> 单引号' 转换为' 双引号" 转换为 " 与 ...

  6. node.js实时编译,不需要重启

    npm -g install supervisor 全局安装这个,然后编译依一次文件就可以了,之后修改这个文件不用编译也可以了

  7. scala 2.11.6 卸载 2.12.6 安装

    .yum remove scala .安装scala wget -O scala-.rpm https://downloads.lightbend.com/scala/2.12.6/scala-2.1 ...

  8. 百度BAE的使用

  9. iis 应用程序连接池 在计算机“.”上没有找到WAS服务

    重新打开控制面板----打开或关闭windows功能,全部勾选internet information services 可承载的web核心. internet信息服务.microsoft.net f ...

  10. [leetcode]179. Largest Number最大数

    Given a list of non negative integers, arrange them such that they form the largest number. Input: [ ...