java异常
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异常的更多相关文章
- 浅谈java异常[Exception]
学习Java的同学注意了!!! 学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群,群号码:589809992 我们一起学Java! 一. 异常的定义 在<java编程思想 ...
- 基础知识《十》java 异常捕捉 ( try catch finally ) 你真的掌握了吗?
本文转载自 java 异常捕捉 ( try catch finally ) 你真的掌握了吗? 前言:java 中的异常处理机制你真的理解了吗?掌握了吗?catch 体里遇到 return 是怎么处理 ...
- Java异常体系及分类
上图是基本的java异常体系结构. 主要分为2大类:Error和Exception 1.Error:描述了Java运行系统中的内部错误以及资源耗尽的情形.应用程序不应该抛出这种类型的对象,一般是由虚拟 ...
- Java异常之自定义异常
哎呀,妈呀,又出异常了!俗话说:"代码虐我千百遍,我待代码如初恋". 小Alan最近一直在忙着工作,已经很久没有写写东西来加深自己的理解了,今天来跟大家聊聊Java异常.Java异 ...
- 第11章 Java异常与异常处理
1.Java异常简介 1.什么是异常异常出现的时候代码会无法正常运行下去,会产生各种问题2.捕捉异常的作用提早发现异常,方便查找问题,并给出解决方法3.Java中的异常1.Java中所有不正常的类都是 ...
- java 异常
1.java异常 2.自定义抛出 3.运行时异常,程序有问题,让使用者可以改' ' 4.return 和 throw的区别 return 符合函数要求的值 throw 有问题的时候用它结束 ...
- 3.Java异常进阶
3.JAVA异常进阶 1.Run函数中抛出的异常 1.run函数不会抛出异常 2.run函数的异常会交给UncaughtExceptionhandler处理 3.默认的UncaughtExceptio ...
- 2.Java异常学习
1.Java异常的概念 异常的例子 1.除法就是一个需要捕获异常的例子,除数又可能是0 异常处理的基本流程如下 一旦发生异常,就使得程序不按照原来的流程继续的运行下去 a.程序抛出异常 try{ th ...
- java异常架构图 和几个面试题
1.java异常架构图 粉红色的是受检查的异常(checked exceptions),其必须被 try{}catch语句块所捕获,或者在方法签名里通过throws子句声明.受检查的异常必须在编译时被 ...
- 黑马----JAVA异常
黑马程序员:Java培训.Android培训.iOS培训..Net培训 黑马程序员--JAVA异常 一.JAVA异常有三种语句块:try语句块.catch语句块.finally语句块. 1.try语句 ...
随机推荐
- Android 四大组件之再论service
service常见的有2种方式,本地service以及remote service. 这2种的生命周期,同activity的通信方式等,都不相同. 关于这2种service如何使用,这里不做介绍,只是 ...
- 使用 Eclipse 玩转 C、C++
因为做Java开发,所以习惯了使用Eclipse.现在需要写C++程序,真心不想用VS那样的重量级的IDE,VC++6.0又是那么的不友好.使用一款自己熟悉的IDE,工作起来就顺手.为了可以在Ecli ...
- Django入门
Django文档: https://docs.djangoproject.com/en/1.10/ref/ 一.简单创建app 1.1 命令行创建project和app. django-admin s ...
- linux c++应用程序内存高或者占用CPU高的解决方案_20161213
对于绝大多数实时程序来说,实时处理相关程序中的循环问题所带来的对机器的损耗和自身的处理速度的平衡,以及与其他程序的交互以及对其他功能的影响难免会成为程序设计中最大的障碍同时也是最大的突破点. 在所有这 ...
- JavaScript根据文件名判断文件类型
//JavaScript根据文件名判断文件类型 var imgExt = new Array(".png",".jpg",".jpeg",& ...
- CH Round #30 摆花[矩阵乘法]
摆花 CH Round #30 - 清明欢乐赛 背景及描述 艺术馆门前将摆出许多花,一共有n个位置排成一排,每个位置可以摆花也可以不摆花.有些花如果摆在相邻的位置(隔着一个空的位置不算相邻),就不好看 ...
- 洛谷CON1041 NOIP模拟赛一试
A T2-power of 2 题目描述 是一个十分特殊的式子. 例如: n=0时 =2 然而,太大了 所以,我们让对10007 取模 输入输出格式 输入格式: n 输出格式: % 10007 输入 ...
- 第39课 Qt中的事件处理(下)
1. 事件的传递过程 (1)操作系统检测到用户动作时,会产生一条系统消息,该消息被发送到Qt应用程序 (2)Qt应用程序收到系统消息后,将其转化为一个对应的QEvent事件对象,并调用QObject: ...
- [No000088]并行循环vs普通循环
using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks ...
- iOS证书问题
链接: 关于IOS免证书真机安装的过程和问题 苹果IOS开发者账号的区别,企业账号,个人账号,公司团队账号,教育账号 苹果IOS开发者账号总结--发布应用APP时team name是否可以随意写? P ...