zoukankan      html  css  js  c++  java
  • Java学习笔记-异常处理-有风险的行为

    Java使用异常来告诉调用方法的程序代码:“有问题,我不行了!”
    import javax.sound.midi.*;
    public class MusicTest1 {
        public void play(){
            try {
                Sequencer sequencer= MidiSystem.getSequencer();
                //getSequencer()这个方法可能会在执行期间出问题,所以必须声明出调用它可能会有风险。
            } catch (MidiUnavailableException e) {
                e.printStackTrace();
                System.out.println("Bummer");
            }
            System.out.println("我们有一个sequencer");
        }//关闭播放
        public static void main(String[] args){
            MusicTest1 mt=new MusicTest1();
            mt.play();
        }
    }//关闭类
    编译器要确定你了解所调用的方法是有风险的
    异常是一种Exception类型的对象。
    try {
        //危险动作
    } catch (Exception e) {//就跟方法的参数声明一样
        //尝试恢复
        //这一段只会在有抛出异常时执行
    }
    局部的Exception继承结构
    如果你的程序代码会抓住异常,那是谁把他抛出来的呢?
    方法可以抓住其他方法所抛出的异常。异常总是会丢给调用方。
    会抛出异常的方法要声明它有可能会怎么做。
    public void takeRisk() throws Exception{//必须要声明他会抛出Exception
        if (abandonAllHope){
            throw new Exception();
            //创建Exception对象并抛出
        }
    }
    public void crossFingers(){
        try {
            anObject.takeRisk();
        }catch (Exception ex){
            System.out.println("Aaargh!");
            ex.printStackTrace();
            //如果无法从异常中恢复,至少也要使用printStackTrace()来列出有用的信息。
        }
    }
    编译器会和核对每件事,除了RuntimeException之外。编译器保证:
    1. 如果你有抛出异常,则你一定要使用throw来声明这件事。
    2. 如果你调用会抛出异常的方法,你必须得确认你知道异常得可能性。将调用包在try/catch块中是一种满足编译器得方法。
     
    不是由编译器检查得RuntimeException异常被称为检查异常;RuntimeException被称为不检查异常,你可以自己抛出与抓住它们,但是没有这个必要,编译器也不管。

  • 相关阅读:
    [C4] 前馈神经网络(Feedforward Neural Network)
    [C3] 正则化(Regularization)
    [C2] 逻辑回归(Logistic Regression)
    [C1] 线性回归(Linear Regression)
    Python基础学习
    装饰器
    完全理解Python迭代对象、迭代器、生成器
    django自己搭建的博客
    git学习,哇瑟说实话我想要的
    类继承和多态,子类重写构造函数,多重继承学习
  • 原文地址:https://www.cnblogs.com/yigegaozhongsheng/p/14082511.html
Copyright © 2011-2022 走看看