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. 了解HTML CSS布局(层叠样式表)

    CSS全称为"层叠样式表(Cascading Style Sheets)", 它主要是用于定义HTML内容在浏览器内显示的样式, 比如文字, 颜色, 视觉上的静态效果, 布局等等. ...

  2. Android源码分析之Handler

    接上一篇分析,正如Android doc所说,Handler主要有2方面用处: 1. delay执行同一线程中的某个操作,也就是schedule message.runnable在未来的某一时刻执行: ...

  3. 【Lucene】三个高亮显示模块的简单示例-Highlighter

    Lucene针对高亮显示功能提供了两种实现方式,分别是Highlighter和FastVectorHighlighter 这里的三个示例都是使用Highlighter: 示例代码: package c ...

  4. MVC之Ajax.BeginForm使用详解之更新列表

    1.首先,请在配置文件设置如下:(该项默认都存在且为true) <add key="UnobtrusiveJavaScriptEnabled" value="tru ...

  5. [Erlang 0108] Elixir 入门

    Erlang Resources里面关于Elixir的资料越来越多,加上Joe Armstrong的这篇文章,对Elixir的兴趣也越来越浓厚,投入零散时间学习了一下.零零散散,测试代码写了一些,Ev ...

  6. java实现支付宝接口--文档..转载

    //实现java支付宝很简单,只要从支付宝官方下载   http://help.alipay.com/support/index_sh.htm下载程序,配置一下参数就OK了:   1.先到http:/ ...

  7. forward和redirect的区别(转)

    Redirect Forward 不同的request 不同的对象,但是可以渠道上一个页面的内容 send后面的语句会继续执行,除非return Forward后面的语句不会继续发送给客户端 速度慢 ...

  8. SQL Server 2008 R2——根据数据查找表名和字段名 根据脏数据定位表和字段

    =================================版权声明================================= 版权声明:原创文章 谢绝转载  请通过右侧公告中的“联系邮 ...

  9. jQuery 3.0的buildFragment

    在 jQuery3.0中,buildFragment 是一个私有函数,用来构建一个包含子节点 fragment 对象.这个 fragment 在 DOM1 中就已经有了,所有浏览器都支持.当频繁操作( ...

  10. [django]表格的添加与删除实例(可以借鉴参考)

    自己并未采用任何表格插件,参考网上例子,自己编写出来的django网页实例,请各位参考! 首先看图做事,表格布局采用bootstrap,俗话说bootstrap橹多了就会css了,呵呵,下面看图: 上 ...