黑马程序员_异常

------- android培训java培训、期待与您交流! --------

 

 

正则表达式:正则表达式主要用于操作字符串数据。

[ abc] :表示一位,判断这一位只是a、b或c中的一个。

{ ,} :表示出现的次数

.    :任意字符

\d   :数字    \d==[0-9]

\D   :非数字  \D==[^0-9]

\s   :空白字符

\S  :非空白字符

\w:单词字符,包括大小写、下划线_数字

\W:非单词字符

():称作组,用\\1、\\2一次向后表示第一组第二组等等

常见操作:1)匹配

               用String类中的matches()方法

2)       切割:

            String类中的split()方法

3) 替换;

     使用String类replaceAll()方法

获取:

        将正则规则进行对象的封装

        Patternp=Pattern.compile(“正则表达式”)

       通过正则对象的matcher方法与字符串相关联 ,获取要对字符串操作的匹配器对象Matcher

       Matcher m=p.matcher(“   ”);

       通过Matcher匹配器的对象的方法进行字符串的操作。

               Booleanb=m.matches();

异常

要点:

 try/catch/finally机制

  throw是故意产生异常,用于方法体内

  throws用于方法的声明,它把方法产生的异常交给调用该方法的另外一个方法处理。

异常简介

             在java中,程序于编译时产生的错误一般为语法错误(syntax error),而在运行时产生的错误则称为运行时期错误(runtime error)。编译错误由编译程序javac产生,而运行时的错误通常称为异常(Exception),异常也是java中的类。

     【例1】除数为0的异常

        public  class Ex1{

            intx;

           public static void main(String args[]){

                Ex1 c=new Ex1();

                int y;

                 y=3/c.x;

               System.out.println(“ok”);   }

          }

异常的层次结构:

 

 

 

 

 

 

 

 

 

常用异常类

Runtime Exception类名称     含义

ArithmeticException  算术运算错误,例如除数为0

ArrayIndexOutOfBoundsException     数组元素下标越界异常

ArrayStoreException 数组存入元素类型与声明类型不符

IllegalArgumentException       非法参数

NumberFormatException 参数格式不对

IllegalThreadStateException   要求进行的运算与线程状态不符

NegativeArraySizeException  数组长度为负

NullPointerException       无分配存储空间

SecurityException      存取违反安全规定

Runtime Exception类名称     含义

ClassNotFoundException 找不到类

IllegalAccessException     无法读取某java类

InstantiationException      建立新对象错误

FileNotFoundException   找不到存取的文件

EOFException    文件指针已移至文件结尾

InterruptedException 某一线程在运行时,被另一线程中断

NoSuchMethodException       找不到要引用的方法

MalformedURLException       URL的格式有误

UnknowHostException    计算机主机名有误

 

 

 

 

 

InstantiationException:当应用程序试图使用 Class 类中的 newInstance 方法创建一个类的实例,而指定的类对象无法被实例化时,抛出该异常

IllegalAccessException当应用程序试图反射性地创建一个实例(而不是数组)、设置或获取一个字段,或者调用一个方法,但当前正在执行的方法无法访问指定类、字段、方法或构造方法的定义时,抛出 IllegalAccessException

SecurityException由安全管理器抛出的异常,指示存在安全侵犯。

NoSuchMethodException无法找到某一特定方法时,抛出该异常。

IllegalArgumentException抛出的异常表明向方法传递了一个不合法或不正确的参数

InvocationTargetException是一种包装由调用方法或构造方法所抛出异常的经过检查的异常

 

 

 

异常定义:描述不正常情况的类称为异常类,其实异常类就是java通过面向对象的思想将问题封装成对象

异常体系

Throwable:throwable的所有子类都具有可抛性。

  1) Error(不可处理):通常出现重大问题:如运行类不存在或者内存溢出不编写针对代码对其处理

特点:是由jvm抛出的严重问题,这种问题一般不针对处理,直接修改程序。

 2) Exception(可处理的):在运行时运行出现的一起情况。

自定义异常类:必须继承异常体系,因为只有成为异常体系的子类才有资格具备可抛性,才可以被两个关键字操作,throw  throws

自定义异常时: 要么继承Exception要么继承RuntimeException

 异常分类:

         编译时被检测异常:只要是exception和其子类都是,除了特殊子类RuntimeException体系这种问题一旦出现,希望在编译时就进行检测,让这种问题有对应的处理方式。

这样的问题都可以针对性的处理。

         编译时不检测异常(运行异常):exception中的runtimeExceptin和其子类。

         这种问题发生,无法让功能继续,运算无法进行,更多的是调用者的原因导致的而引发了内部状态的改变,那么这种问题一般不处理,直接编译通过,在运行时,让调用者调用的程序强制停止,让调用者对代码进行修正。

Throw和throws区别:1)throws使用在函数上,throw使用在函数内

                    2)throws抛出的是异常类可以抛出多个,用逗号隔开,throw抛出的是异常类对象

 try/catch/finally机制

try

  {可能出现异常的程序代码}

catch (异常类名1   异常对象名1)

  {异常类名1对应的异常处理代码}

catch (异常类名2   异常对象名2)

  {异常类名2对应的异常处理代码}

 …

finally

  {必须执行的代码}

获得异常的有关信息

 e.printStackTrace()

       指出异常的类型、性质、栈层次以及出现在程序中的位置等信息

 e.getMessage()

       输出错误的性质

 e.toString()

       给出异常的类型及性质

 

注意:在try ()catch()中,如果遇到多catch时,父类的catch放在最下面。

异常处理原则:

            1)内容如果抛出需要的检测的异常,那么函数上必须要声明,否则必须在函数内用try  catch捕捉,否则编译失败。

             2)如果调用到了声明异常的函数,要么try   catch要么throws,否则编译失败。

什么时候try、什么时候throws:功能内容可以解决,用catch,解决不了用throws告诉调用者,由调用者解决。

Try  catch  finally代码组合特点:

                            1)try   catch  finally

                             2)try   catch  当没有必要资源需要释放时,可以不定义finally

                             3)try   finally 异常无法直接catch  但资源要关闭。

异常注意事项:1)子类覆盖父类方法时,父类的方法如果抛出了异常,那么子类的方法只能抛出父类的异

                 常或者该类异常的子类

              2)如果父类抛出多个异常,那么子类只能抛出父类异常的子集。

          简单说:子类覆盖父类只能抛出父类的异常或者子类或者子集。

注意:如果父类的方法没有抛出异常,那么子类覆盖式绝对不能抛。就只能try。

自定义异常类

 

自定义的异常类必须继承自Throwable类,才能被视为异常类,通常是继承Throwable的子类Exception或Exception类的子孙类。除此之外,与创建一个普通类的语法相同。

import java.io.*;

class MyException extendsException{

    public MyException(){       System.out.println("自定义异常");    }

   }

public class ZiEx{

 int x;

 public void f()throws MyException{     

    if(x==13)

        throw new MyException();

    else

       System.out.println("ok"); 

   }

public static voidmain(String[] args) {

        ZiEx ex=new ZiEx();    

       try{

           ex.f();         

        }

       catch(MyException e){   }               

     }      

    }

class MyException extendsException{

    String content;

    public MyException(String content){        this.content=content;    }

    public String getContent(){        return content;    }

}

public class Example7{   

   public static void check(String str)throwsMyException{

       char a[]=str.toCharArray();   //将字符串转化为字符数组

       int i=a.length;

       for(int k=0;k<1;k++)

          if((a[k]>=65&&a[k]<=90)||(a[k]>=97&&a[k]<=122))

               throw new MyException("字符串\""+str+"\"中含有非法字符!");

   }

public static voidmain(String args[]){

       String str1="HelloWorld";

       String str2="Hell!MR!";

       try{

           check(str1);  

           check(str2);    

           System.out.println("ok");

         }

       catch(MyException e){  

            System.out.println(e.getContent());

         }

   }   

}

 

 

 

每日心得与总结:我对反射的理解就是反射机制:所谓的反射机制就是java语言在运行时拥有一项自观的能力。通过这种能力可以彻底的了解自身的情况为下一步的动作做准备。下面具体介绍一下java的反射机制。这里你将颠覆原来对java的理解。
Java的反射机制的实现要借助于4个类:class,Constructor,Field,Method;其中class代表的时类对 象,Constructor-类的构造器对象,Field-类的属性对象,Method-类的方法对象。通过这四个对象我们可以粗略的看到一个类的各个组 成部分。Class:程序运行时,java运行时系统会对所有的对象进行运行时类型的处理。这项信息记录了每个对象所属的类,虚拟机通常使用运行时类型信息选择正 确的方法来执行(摘自:白皮书)。但是这些信息我们怎么得到啊,就要借助于class类对象了啊。在Object类中定义了getClass()方法。我 们可以通过这个方法获得指定对象的类对象。然后我们通过分析这个对象就可以得到我们要的信息了。比如:ArrayList arrayList;Classclazz = arrayList.getClass();然后我来处理这个对象clazz。当然了Class类具有很多的方法,这里重点将和Constructor,Field,Method类有关系的方法。Reflection 是 Java 程序开发语言的特征之一,它允许运行中的 Java 程序对自身进行检查,或者说“自审”,并能直接操作程序的内部属性

也不知道理解的对不对,希望对大家能帮助帮助我看看,这些事我从一本书上看到的就把他写下来了。

  

 





--------- android培训java培训、期待与您交流! ----------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值