精华内容
下载资源
问答
  • java的异常?有什么区别?

    千次阅读 2019-09-18 20:16:39
    这些异常需要try catch 处理或者throw抛出。如果不处理程序编译将失败。比如:IOException ,FileNotFoundException 。 运行时异常:是指在程序运行时可能报出的异常。可以用try catch 处理,也可以处理。...

    java异常分为两种:一般异常和运行时异常。

     

    一般异常:这些异常是在定义方法时声明抛出的。这些异常需要try catch 处理或者throw抛出。如果不处理程序编译将失败。比如:IOException ,FileNotFoundException 。

     

    运行时异常:是指在程序运行时可能报出的异常。可以用try catch 处理,也可以不做处理。比如NullPointerException 就是一种常见的运行时异常。

    展开全文
  • Java异常处理

    2018-09-24 23:02:51
    异常处理 try{ }包围可能出现异常的语句,catch{ }包含异常处理语句,一旦出现异常就立即结束try{ }块,...也可用一个catch{ }块,但能判断是哪种类型,需要用instanceof进行类型判断。 catch (FileNotFoundEx...

    异常处理

    try{ }包围可能出现异常的语句,catch{ }包含异常处理语句,一旦出现异常就立即结束try{ }块,执行catch{ }块。e.printStackTrace()会打印出方法调用的路径。

    如果抛出多个异常就用多个catch{ }分别捕获;也可用一个catch{ }块,但不能判断是哪种类型,需要用instanceof进行类型判断。

    catch (FileNotFoundException | ParseException e) {
    
        if (e instanceof FileNotFoundException)
    
            System.out.println("d:/LOL.exe不存在");
    
        if (e instanceof ParseException)
    
            System.out.println("日期格式解析错误");
    }

    文件未找到异常FileNotFoundException是Exception的子类,可以用父类代替子类。

    无论是否出现异常,都会执行finally{ }中的语句。

    如果函数的连环调用,则在一个函数中出现的异常有两种处理方法,一是try{ }块包围,二是用throws抛出,使调用该函数的函数来处理,处理方法仍是这两种。

    可以在方法内抛出FileNotFoundException,声明抛出Exception,捕获Throwable。

    throws出现在方法声明上,表示方法可能抛出异常。throw出现在方法体内,一定会抛出一个异常。

     

    try{ }catch{ }finally{ }中的return语句最终返回的值是什么?

    异常分类

    可查异常:必须进行处理的异常,不处理不能通过编译。如FileNotFoundException。

    运行时异常RuntimeException:不必用try{ }catch{ }处理的异常,当然也可以用;可以通过编译。

    常见运行时异常:除数不能为0异常:ArithmeticException ,下标越界异常:ArrayIndexOutOfBoundsException ,空指针异常:NullPointerException 。

    Error和Exception都继承Throwable类,Error是很重大的错误,如内存不足、栈溢出等。

    自定义异常

    entends Exception。

    自定义异常需要显式处理。

    异常类和其他类一样就有类的特质,可以有属性和方法。

    因为间接继承了throwable类,所以有printStackTrace()方法。

     

     

    展开全文
  • C++异常捕获和处理

    2020-12-30 14:26:42
    而传统错误处理技术,检查到一个错误,返回退出码或者终止程序等等,此时我们只知道有错误,但能更清楚的知道哪种错误,因此,使用异常,就把错误和处理分开来,由库函数抛出异常,由调用者捕获这个异常,调用者就...
    1. 写在前面  异常,让一个函数可以在发现自己无法处理的错误时抛出一个异常,希望它的调用者可以直接或者间接处理这个问题。而传统错误处理技术,检查到一个错误,返回退出码或者终止程序等等,此时我们只知道有错误,但不能更清楚的知道哪种错误,因此,使用异常,就把错误和处理分开来,由库函数抛出异常,由调用者捕获这个异常,调用者就可以知道程序函数库调用出现错误了,并去处理,而是否终止程序就把握在调用者手里了。1. 异常的抛出和处理异常处理的语句try区段:这个区段中包含了可能发生异常的代码,在发生了异常之后,需要通过throw抛出。 throw子句:throw 子句用于抛出异常,被抛出的异常可以是C++的内置类型(例如: throw int(1);),也可以是自定义类型。catch子句:每个catch子句都代表着一种异常的处理。catch子句用于处理特定类型的异常。例2: #include
      using namespace std;

      void Test1()
      {
      try
      {
      char* p = new char[0x7fffffff]; //抛出异常
      }
      catch (exception e)
      {
      cout << e.what() << endl; //捕获异常,然后程序结束
      }

      }
      int main()
      {
      Test1();
      system(“pause”);
      return 0;
      }12345678910111213141516171819202122结果:   当使用new进行开空间时,申请内存失败,就会抛出异常,此时捕获到异常时,就可告诉使用者是哪里的错误,便于修改 2. 异常的处理规则异常是通过抛出对象而引发的,该对象的类型决定了应该激活哪个处理代码。被选中的处理代码是调用链中与该对象类型匹配且离抛出异常位置最近的那一个。抛出异常后会释放局部存储对象,所以被抛出的对象也就还给系统了,throw表达式会初始化一个抛出特殊的匿名对象,异常对象由编译管理,异常对象在传给对应的catch处理之后撤销。例2:class Exception//异常类
      {
      public:
      Exception(const string& msg, int id)
      {
      _msg = msg;
      _id = id;
      }

      const char* What() const
      {
      return _msg.c_str();
      }

    protected:
    string _msg;
    int _id;
    };

    template<size_t N = 10>
    class Array
    {
    public:
    int& operator[](size_t pos)
    {
    if (pos >= N)
    {
    Exception e(“下标不合法”, 1); //出了这个作用域,抛出的异常对象就销毁了,这时会生成一个匿名对象先接受这个对象,并传到外层栈帧。
    throw e;
    }
    return a[pos];
    }
    protected:
    int a[N];
    };

    int f()
    {
    try
    {
    Array<> a;
    a[11];
    }
    catch (exception& e)
    {
    cout << e.what() << endl; //类型不匹配,找离抛出异常位置最近且类型匹配的那个。
    }

    return 0;
    

    }

    int main()
    {
    try
    {
    f();
    }
    catch (Exception& e)
    {
    cout << e.What() << endl;
    }
    system(“pause”);
    return 0;
    } 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364结果:   f()函数中捕获的异常是标准库里面的异常,但抛出异常的对象是自己定义的异常类,故类型不匹配,找离抛出异常最近的且类型匹配的Exception3. 异常处理栈展开  1.在try的语句块内声明的变量在外部是不可以访问的,即使是在catch子句内也不可以访问。      2.栈展开(寻找异常处理(exception handling)代码)   栈展开会沿着嵌套函数的调用链不断查找,知道找到了已抛出的异常匹配的catch子句。如果在最后还是没有找到对应的catch子句的话,则退出主函数后查找过程终止,程序调用标准函数库的terminate()函数,终止该程序的执行具体过程:当一个exception被抛出的时候,控制权会从函数调用中释放出来,并需找一个可以处理的catch子句对于一个抛出异常的try区段,程序会先检查与该try区段关联的catch子句,如果找到了匹配的catch子句,就使用这个catch子句处理这个异常。没有找到匹配的catch子句,如果这个try区段嵌套在其他try区段中,则继续检查与外层try匹配的catch子句。如果仍然没有找到匹配的catch子句,则退出当前这个主调函数,并在调用了刚刚退出的这个函数的其他函数中寻找。  3. catch子句的查找:       catch子句是按照出现的顺序进行匹配的(以例2来说,异常先会匹配catch(exception e)子句,然后在匹配 catch (Exception e)子句,一步一步的栈展开)。在寻找catch子句的过程中,抛出的异常可以进行类型转换,但是比较严格:允许从非常量转换到常量的类型转换(权限缩小)允许从派生类到基类的转换。允许数组被转换成为指向数组(元素)类型的指针,函数被转换成指向该函数类型的指针(降级问题)标准算术类型的转换(比如:把bool型和char型转换成int型)和类类型转换(使用类的类型转换运算符和转换构造函数)。4. 异常处理中需要注意的问题如果抛出的异常一直没有函数捕获(catch),则会一直上传到c++运行系统那里,导致整个程序的终止一般在异常抛出后资源可以正常被释放,但注意如果在类的构造函数中抛出异常,系统是不会调用它的析构函数的,处理方法是:如果在构造函数中要抛出异常,则在抛出前要记得删除申请的资源。异常处理仅仅通过类型而不是通过值来匹配的,所以catch块的参数可以没有参数名称,只需要参数类型。函数原型中的异常说明要与实现中的异常说明一致,否则容易引起异常冲突。应该在throw语句后写上异常对象时,throw先通过Copy构造函数构造一个新对象,再把该新对象传递给 catch.    注:那么当异常抛出后新对象如何释放?异常处理机制保证:异常抛出的新对象并非创建在函数栈上,而是创建在专用的异常栈上,因此它才可以跨接多个函数而传递到上层,否则在栈清空的过程中就会被销毁。所有从try到throw语句之间构造起来的对象的析构函数将被自动调用。但如果一直上溯到main函数后还没有找到匹配的catch块,那么系统调用terminate()终止整个程序,这种情况下不能保证所有局部对象会被正确地销毁。catch块的参数推荐采用地址传递而不是值传递,不仅可以提高效率,还可以利用对象的多态性。另外,派生类的异常扑获要放到父类异常扑获的前面,否则,派生类的异常无法被扑获。编写异常说明时,要确保派生类成员函数的异常说明和基类成员函数的异常说明一致,即派生类改写的虚函数的异常说明至少要和对应的基类虚函数的异常说明相同,甚至更加严格,更特殊。

    转载自https://blog.csdn.net/zhangye3017/article/details/80299562

    展开全文
  • 异常处理小结

    2021-05-07 00:30:55
    但是可避免用户在输入时输入错误(比如输入了文字,又或者把0作为被除数),当出现这种情况的时候,程序就会终止运行并在控制台报出程序在哪里出现的是哪种错误,但是作为开发者写出这样子的代码是能用于交付的...

    异常处理

    异常
    异常是导致程序中导致程序中断的指令流,比如说编写一段代码计算实现两数相除,输入两个数字,电脑计算出这两个数的商并输出,当正常输入的时候程序正常执行可以得到我们想要的结果;但是不可避免用户在输入时输入错误(比如输入了文字,又或者把0作为被除数),当出现这种情况的时候,程序就会终止运行并在控制台报出程序在哪里出现的是哪种错误,但是作为开发者写出这样子的代码是不能用于交付的,因此我们需要对因此进行处理,当出现了异常我们可以选择提示或者别的方法避免程序的中断,因此异常处理就派上用场了。

    异常架构与基本概念

    万物皆对象,既然Objext类是所有类的顶级父类,异常类也不例外,Object类下面有一子类Throwable(可抛出的)负责处理异常错误这一块,而Throwable则下分成Error(错误)和Exception(异常),Error类是很严重的错误,根本不能通过几行代码去处理,还可能牵涉到整体架构等方面的问题;而Exception类则是程序代码或者参数导致运行出错,可以通过代码去避免或者处理这些问题,严重程度低于错误,因此就称其为异常。

    在异常类里面有多个子类继承Exception,并且针对多年来编程常见的异常分成多个方向,众多的子类里面有一个叫RuntimeException(运行时异常)的类,运行时异常这个类较为特殊,在编译过程中JVM并不会发现代码有问题,需要运行之后发现了异常才会把错误抛出并报错,而在编译过程中就发现并标红的异常,因为有JVM帮忙检查代码是否存在问题就称之为受检异常,相对应的,只有运行时才抛出的异常就称之为非受检异常。异常的架构图如下:

    由于运行时异常在完成代码的编写时并不会报错,而在运行过程中方法或者传入参数出问题,容易被忽视,而这些的问题对程序影响更大,因此本文就围绕者运行时异常己其处理方法展开论述。

    关键字
    try , catch, finally , throws , throw

    ①try :判断语句块中是否出现异常
    ②catch:当try语句块中出现异常进行捕获,执行catch语句
    ③finally:无论有无异常,finally都将会执行(仅当有finally语句时)
    ④throws:把某类异常抛出,被调用的方法对该类异常不作处理
    ⑤throw:抛出异常的实例化对象

    使用方法
    1.try-catch-finally语句:

    //try-catch-finally语句
    try{
    	//可能出现异常的代码
    }catch(异常类型1 对象名){
    	//异常处理的操作
    }catch(异常类型2 对象名){
    	//异常处理的操作
    }finally{
    	//异常统一出口,无论有误异常,除个别极端情况都必须执行
    }
    

    在这段语句当中,try块放入可能会出现异常的语句,catch块则放入异常的类型和当捕获到异常时将要进行的操作,catch可以有多个用来处理不同的异常,finally则为异常的统一出口,无论有无异常finally必然执行,catch部分和finally部分可以选择其一,但是两者不能同时缺省。
    需要注意的是,当在finally执行前程序结束了,内存已经释放,此时finally的语句不再能执行。此外,在try或者catch语句中有return语句,也要等finally执行完才可以调出返回值,此时的返回值为finally执行前将要返回的值的副本。

    异常处理流程如下:
    ①一旦产生异常,系统自动产生一个异常类的实例化对象;
    ②异常类在try语句,则自动匹配catch语句执行,没有对应的catch语句则将该异常抛出
    ③所有的catch会根据方法的参数异常类的实例化对象进行匹配,如果匹配成功则由此catch进行处理
    2.throws和throw
    两者都是用于异常的抛出,在异常的产生的角度来看,可能是自身代码的问题也有可能是外部调用方法时问题就已经存在,自身代码导致的异常还可以用try-catch处理,外部的代码并不一定是自己负责那一块,因此把问题抛出就可以很好的解决这个问题,把异常抛出给调用处。

    两者的去别在于throws用于方法的声明处,表明某种异常是需要抛出的,方法自身是不处理的;而throw多用于在后面代码块中异常抛出,可以抛出的自定义的异常。

    展开全文
  • 全局统一异常处理

    2020-10-10 08:18:39
    软件开发过程中,可避免的是需要处理各种异常,就我自己来说,至少有一半以上的时间都是在处理各种异常情况,所以代码中就会出现大量的try {...} catch {...} finally {...}代码块,不仅有大量的冗余代码,而且还...
  • 【09-异常处理

    2018-07-03 21:46:06
    用者处理,如果main方法也知道应该如何处理这种类型的异常,也可以使用throws声明抛出异 常,该异常将交给JVM处理。JVM对异常处理方法是:打印异常跟踪栈信息,并中止程序运行,这 就是前面程序在遇到异常后...
  • java中异常分为几类

    2020-07-28 21:20:30
    根据异常需要处理的时机来分: 1.编译时异常(CheckedException): 程序中产生的异常,需要在写代码的时候进行异常的预处理。如果不处理,编译就无法通过。异常不一定会发生,但是这个异常需要提前预处理。就好像...
  • 软件开发过程中,可避免的是需要处理各种异常,就我自己来说,至少有一半以上的时间都是在处理各种异常情况,所以代码中就会出现大量的try {...} catch {...} finally {...}代码块,不仅有大量的冗余代码,而且还...
  • 软件开发过程中,可避免的是需要处理各种异常,就我自己来说,至少有一半以上的时间都是在处理各种异常情况,所以代码中就会出现大量的try {...} catch {...} finally {...} 代码块,不仅有大量的冗余代码,而且还...
  • 1.下列哪种异常是检查型异常,需要在编写程序时声明() A. NullPointerException B. ClassCastException C. FileNotFoundException D. IndexOutOfBoundsException 答案:C 分析:NullPointerException空指针异常 ...
  • 数据挖掘:数据清洗——异常处理 ...因此,在离群点检测时,重要的是搞清楚是哪种外力产生的离群点。 常见的异常成因: 数据来源于不同的类(异常对象来自于一个与大多数数据对象源(类)不同的源(类
  • 软件开发过程中,可避免的是需要处理各种异常,就我自己来说,至少有一半以上的时间都是在处理各种异常情况,所以代码中就会出现大量的try {…} catch {…} finally {…} 代码块,不仅有大量的冗余代码,而且还...
  • 软件开发过程中,可避免的是需要处理各种异常,就我自己来说,至少有一半以上的时间都是在处理各种异常情况,所以代码中就会出现大量的try {...} catch {...} finally {...}代码块,不仅有大量的冗余代码,而且还...
  • 错误和异常是两个不同的概念,非常容易混淆。很多程序员习惯将一切非正常情况都看做错误,而区分错误和异常,即使程序中可能有异常抛出,也将异常及时...错误处理的方式有? 什么时候需要使用异常终止程序?
  • 现在有个项目,遇到错误代码和异常处理方面的问题...针对这种情况,各位觉得应该使用哪种方式处理比较好,另外,对于异常的类层次结构实践经验多,只是简单看过Spring的异常类设计,有哪些好的书或资料可以学习一下。
  • 软件开发过程中,可避免的是需要处理各种异常,就我自己来说,至少有一半以上的时间都是在处理各种异常情况,所以代码中就会出现大量的try {…} catch {…} finally {…} 代码块,不仅有大量的冗余代码,而且还...
  • C++ 异常处理(excepiton)

    千次阅读 2012-07-20 16:44:05
    错误处理我们的程序有时会遇到运行问题,我们必需保护程序能够正常运行。一个程序可能需要更多的内存或是打开一个不存在的...在2与3之间我们不需要有太多争议哪种方式更好点。我让我通过简单的代码来进行比较:下面是通
  • 软件开发过程中,可避免的是需要处理各种异常,就我自己来说,至少有一半以上的时间都是在处理各种异常情况,所以代码中就会出现大量的try {...} catch {...} finally {...}代码块,不仅有大量的冗余代码,而且还...
  • 错误和异常处理无论在门语言中都占有极其重要的地位,而作为PHP程序员的我突然发现自己写了这么久的程序,使用错误和异常处理的次数屈指可数,甚至有时候要使用时还需要翻翻PHP的开发指南....于是决定复习和总结一下...
  • 软件开发过程中,可避免的是需要处理各种异常,就我自己来说,至少有一半以上的时间都是在处理各种异常情况,所以代码中就会出现大量的try {…} catch {…} finally {…} 代码块,不仅有大量的冗余代码,而且还...
  • Java之路:异常的捕获与处理

    千次阅读 2018-12-10 15:23:16
    不管使用的是哪种语言进行程序设计,都会产生各种各样的错误。Java提供有强大的异常处理机制。在Java中,所有的异常被封装到一个类中,程序出错时会将异常抛出。 一个程序能在正常情况正确地运行,这是一个程序的...
  • 其说明文档onException方法中没有写明抛哪种错误。 我以为抛Exception就可以停住了,其实是不行的。百度了一下,没找到答案。 请教版主后,知道需要抛如下错误才可停止继续往下invoke。 throw new ...
  • 软件开发过程中,可避免的是需要处理各种异常,就我自己来说,至少有一半以上的时间都是在处理各种异常情况,所以代码中就会出现大量的try {...} catch {...} finally {...}代码块,不仅有大量的冗余代码,而且还...
  • 浅谈Java的异常机制

    2020-06-06 18:06:16
    异常,英文是Expection,意思是例外。 异常的作用主要是为了代替if来处理各种情况。 异常机制 本质是当程序遇到错误,让程序可以安全退出的机制。...异常 Runtime Exception:运行时处理 Null
  • 使用异常和返回值1....3.必须了解使用了哪种错误处理方法,返回值还是抛出异常。如果不知道,那么你的程序肯定有问题。4.异常是基于每个线程而提出并处理的;异常不能被线程忽略,必须被处理;未处理
  • 异常分析(一)

    2020-06-20 15:53:45
    异常(一): 最近在开发web端项目的时候常见一些异常,为此需要进行自我总结...在有效使用异常的情况下,异常能清晰的回答what, where, why这3个问题:异常类型回答了“什么”被抛出,异常堆栈跟踪回答了“在“抛

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 201
精华内容 80
关键字:

哪种异常不需要处理