java之异常

认识java中的异常:

有过编程经历的人都会知道,出错在编写程序时,是再正常不过的事,当运行程序时,每次看到那个程序出错时,都会觉得心塞,但是最让人心塞的事情往往是——程序运行的结果和我们设想的不一样,但是我们却得不到任何的错误提示,每每这个时候,都觉得世界充满了恶意。所以照这个来看。程序给我们报出异常还是很有用的;

我们先来看一下Java中的异常体系:首先,有一个父类:Throwable,然后在Throwable(父类)下面有两个子类:一个是 Error ,也就是错误,其中比较常见的有StackOverflowError (堆栈溢出),以及IOError(IO错误),由于我资历尚浅,目前,好像并没有遇到过;另外一个是: Exception(异常)了,在这个下面我们也有两个类:

(一)也就是我们说的异常,RuntimeException这个是在程序运行时,然后会在输出哪里报错这个比较常见的有:

① NullPrintException 空指针异常

② ArrayIndexOutOfBoundsException 数组下标越界异常

③ ClassCastException 类型转换异常

④ IllegalArgumentException 非法的参数异常

到目前为止我还只是遇到过第一个空指针异常,以及数组下标越界这两个异常,这两个应该是最常见的了;

(二)第二个是强制异常:强制异常的话,就是在写程序时就会报错,在编写时,底下出现红色线;其中比较常见的是:

① InterruptedException

② IOException

③ EOFException

④ FileNotFoundException

⑤ SocketException

而我现在目前还只是接触到了InterruptedException:例如:

解决异常的关键词

try、catch

首先是比较熟悉的try、catch,这两个关键字,我们现在看一下:

这样加入try{ }cath(){}语句之后程序就可以正常运行了;简单来说,我们运行Thread.sleep(200);时,如果程序运行出现异常,也就是InterruptedException时,try会捕获这个异常,然后程序会交给catch处理,执行我们catch中的代码从而使程序正常运行;所以我们把可能会出现异常的语句放在try语句块中,然后catch中放入会出现的异常,然后解决该异常的方法,注意所有的异常的要包括;

finally

然后是我们的finally关键字:finally{}是配合上面的try{}catch(){}一起使用的,finally和catch不一样的地方时,无论有没有发生异常,都会执行finally语句;所以finally语句块一般是用来执行对象或者资源的释放。

throw

该关键字目前还没有使用过,主要介绍他的功能:throw关键字的作用主要是配合new关键字一起使用,用法是创建一个异常对象信息,用于抛出这个异常。同样的throw抛出的异常也需要使用try{}catch(){}或者是下一个关键字throws来进行处理。

throws

throws关键字的作用主要是当一个方法运行发生异常时,会把这个异常丢出去让程序继续运行,而不是去解决它,至于让谁去解决它,并不在它的考虑范围之内。用法是:方法名()throws **Exception {},

出现异常时,解决的方法

当程序报错时,怎么样解决呢?其实总结起来就是输出,输出,再输出;只有通过输出我们才能知道程序到底发生了什么事情,它处于一个什么样的状态;比如当出现空指针异常时,我们先找到出错的那一行,然后,再把可能为空的对象输出来。这样我们就可以知道是哪一个空了。然后就是往上找,把我们的程序比作河流的话,那么我们的这个方法就是逆流而上。我们在程序中所有出现了该对象的地方输出,编上序列号,找到那个位置,然后再来解决;

这种输出的方法在程序没有报错,但是运行结果不对的时候,同样是很有效果的。

最后说一下为啥要使用异常,我们在使用手机电脑时,我们的程序,或多或少是都出现过异常,但是往往,我们却也能继续使用,顶多出现一个页面让我们去反馈一下我们出现的异常,但是我们自己写的android程序,当出现一点点异常时,我们的程序就会推出,崩溃,无法使用,所以说,这就是使用异常的好处:允许程序出错。而最终的目的就是让程序能运行,而不至于崩溃。

java异常的更多相关文章

  1. 浅谈java异常[Exception]

    学习Java的同学注意了!!! 学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群,群号码:589809992 我们一起学Java! 一. 异常的定义 在<java编程思想 ...

  2. 基础知识《十》java 异常捕捉 ( try catch finally ) 你真的掌握了吗?

    本文转载自  java 异常捕捉 ( try catch finally ) 你真的掌握了吗? 前言:java 中的异常处理机制你真的理解了吗?掌握了吗?catch 体里遇到 return 是怎么处理 ...

  3. Java异常体系及分类

    上图是基本的java异常体系结构. 主要分为2大类:Error和Exception 1.Error:描述了Java运行系统中的内部错误以及资源耗尽的情形.应用程序不应该抛出这种类型的对象,一般是由虚拟 ...

  4. Java异常之自定义异常

    哎呀,妈呀,又出异常了!俗话说:"代码虐我千百遍,我待代码如初恋". 小Alan最近一直在忙着工作,已经很久没有写写东西来加深自己的理解了,今天来跟大家聊聊Java异常.Java异 ...

  5. 第11章 Java异常与异常处理

    1.Java异常简介 1.什么是异常异常出现的时候代码会无法正常运行下去,会产生各种问题2.捕捉异常的作用提早发现异常,方便查找问题,并给出解决方法3.Java中的异常1.Java中所有不正常的类都是 ...

  6. java 异常

    1.java异常 2.自定义抛出 3.运行时异常,程序有问题,让使用者可以改' ' 4.return  和  throw的区别 return 符合函数要求的值    throw  有问题的时候用它结束 ...

  7. 3.Java异常进阶

    3.JAVA异常进阶 1.Run函数中抛出的异常 1.run函数不会抛出异常 2.run函数的异常会交给UncaughtExceptionhandler处理 3.默认的UncaughtExceptio ...

  8. 2.Java异常学习

    1.Java异常的概念 异常的例子 1.除法就是一个需要捕获异常的例子,除数又可能是0 异常处理的基本流程如下 一旦发生异常,就使得程序不按照原来的流程继续的运行下去 a.程序抛出异常 try{ th ...

  9. java异常架构图 和几个面试题

    1.java异常架构图 粉红色的是受检查的异常(checked exceptions),其必须被 try{}catch语句块所捕获,或者在方法签名里通过throws子句声明.受检查的异常必须在编译时被 ...

  10. 黑马----JAVA异常

    黑马程序员:Java培训.Android培训.iOS培训..Net培训 黑马程序员--JAVA异常 一.JAVA异常有三种语句块:try语句块.catch语句块.finally语句块. 1.try语句 ...

随机推荐

  1. Linux下安装tar.gz类型的jdk,并配置环境变量

    近期因要学习一门技术,必须在Linux下运行,故开始学习如何使用Linux. 在安装jdk时出现了困难,环境变量配置不成功,花了一天时间才搞定,特分享出来,供大家参考. Linux下安装jdk,步骤如 ...

  2. RMAN-06023: no backup or copy of datafile 1 found to restore

    在ORACLE 10g数据库还原过程遭遇RMAN-06023: no backup or copy of datafile x found to restore,具体情况如下所示 .......... ...

  3. sql server2014不允许保存更改。阻止保存要求重新创建表的更改

    错误描述: SQL Server2014在原有的数据表中修改表结构后,保存数据表,提示错误如下: 不允许保存更改.您所做的更改要求删除并重新创建以下您对无法重新创建的表进行了更改或启用了"阻 ...

  4. 10 Biggest Business Mistakes That Every Entrepreneur Should Avoid

    原文链接:http://www.huffingtonpost.com/syed-balkhi/10-biggest-business-mista_b_7626978.html When I start ...

  5. 云计算的三种服务模式:SaaS/PaaS/IaaS

    转载http://blog.chinaunix.net/uid-22414998-id-3141499.html 定义 云计算主要分为三种服务模式,而且这个三层的分法重要是从用户体验的角度出发的: S ...

  6. ElasticSearch集群设置

    多台机器 \config\elasticsearch.yml 文件修改 cluster.name设置统一的集群名如 cluster.name: win-es-001 node.name 设置当前Nod ...

  7. 在 Azure HDInsight 中安装和使用 Spark

    Spark本身用Scala语言编写,运行于Java虚拟机(JVM).只要在安装了Java 6以上版本的便携式计算机或者集群上都可以运行spark.如果您想使用Python API需要安装Python解 ...

  8. $(this)与this的区别

    相信很多刚接触JQuery的人,很多都会对$(this)和this的区别模糊不清,那么这两者有什么区别呢? 首先来看看JQuery中的  $()  这个符号,实际上这个符号在JQuery中相当于JQu ...

  9. thinkphp发送邮件

    看thinkPHP手册发送邮件 Thinkphp3.2 PHPMailer 发送邮件结合QQ企业邮箱发送邮件下载附件PHPMailer解压到ThinkPHP\Library\VendorPHPMail ...

  10. jdbc java数据库连接 1)jdbc入门

      之前操作数据 1)通过mysql的客户端工具,登录数据库服务器  (mysql -u root -p 密码) 2)编写sql语句 3)发送sql语句到数据库服务器执行 什么是jdbc? 使用jav ...