zoukankan      html  css  js  c++  java
  • Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0

    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
     at ExTestDrive.main(ExTestDrive.java:14):

    程序代码如下:

     1 class MyEx extends Exception{}
     2 
     3 public class ExTestDrive {
     4 
     5     
     6     public static void main(String[] args) {  
     7         // TODO Auto-generated method stub
     8          String test=args[0];
     9     try{
    10         System.out.println("t");
    11         doRisky(test);
    12         System.out.println("o");   //如果没有异常,才会执行下面这一句,如果捕获异常,下面这一句直接跳过去了。
    13     }catch(MyEx e){
    14         System.out.print("a");
    15         
    16     }finally{
    17         System.out.println("w");
    18         
    19         }
    20         System.out.println("s");
    21     
    22     }
    23 
    24      static void doRisky(String t) throws MyEx {
    25          
    26          System.out.println("h");
    27          if("yes".equals(t)){   //看来t中会存储main函数传送给它的两个值:yes or not.或许是控制台中传递的参数
    28              throw new MyEx();
    29              
    30          }
    31          System.out.print("r");
    32         // TODO Auto-generated method stub
    33         
    34     }
    35 
    36 }
    1 你好,这个异常是初学者比较常见的异常。
    2 ArrayIndexOutOfBoundsException:注意这个单词,字面意思就是数组引用超出界限,也就是我们常说的越界问题。
    3 
    4 比如,我们创建了一个数组 int a[] = new int[4] ;
    5 那么数组a只能存放四个元素,而数组的下标是从0开始的,也就是说,a[3]就是最后一个元素。当你给a[4]赋值,或者使用a[4]的时候,就出现了ArrayIndexOutOfBoundsException异常。 
    
    1 你的args[]定义的是String数组 只给args[]数组声明 没给它分配空间 所以运行后出现的错误的意思是下标越界,代码如下:、
    2 public class b {
    3 public static void main(String args[]){
    4  args=new String[3];
    5  System.out.println("hi!"+args[0]+" "+args[1]+" " +args[2]);
    6  
    7 }
    8 }
    9 加args=new String[3];是个它分配空间你有args[0],args[1],args[2]三个所以是String[3],还可以给这数组赋值,如args[0]=new String("java")

    添加了一句话:args=new String[3],为这个数组分配了空间。

     1 class MyEx extends Exception{}
     2 
     3 public class ExTestDrive {
     4 
     5     
     6     public static void main(String[] args) {  
     7         // TODO Auto-generated method stub
     8          args=new String[3];
     9          String test=args[0];
    10     try{
    11         System.out.print("t");
    12         doRisky(test);
    13         System.out.print("o");   //如果没有异常,才会执行下面这一句,如果捕获异常,下面这一句直接跳过去了。
    14     }catch(MyEx e){
    15         System.out.print("a");
    16         
    17     }finally{
    18         System.out.print("w");
    19         
    20         }
    21         System.out.print("s");
    22     
    23     }
    24 
    25      static void doRisky(String t) throws MyEx {
    26          
    27          System.out.print("h");
    28          if("yes".equals(t)){   //看来t中会存储main函数传送给它的两个值:yes or not.或许是控制台中传递的参数
    29              throw new MyEx();
    30              
    31          }
    32          System.out.print("r");
    33         // TODO Auto-generated method stub
    34         
    35     }


    运行结果就出来了:

    throws。

    说明控制台Console发送过来的消息是no.就是没有抛出异常。

  • 相关阅读:
    opengl中的Floatbuffer和IntBuffer与java中数据的存储方式不同的解决方法,编辑一个自己的BufferUtil工具类
    android程序与java程序的差别。
    android的json解析
    java数组转list,list转数组。
    java中字符串常量,堆栈的区别和字符串函数intern(),String s=new String(“abc”)中abc在内存的分配
    AsyncTask学习
    关于自定义拦截器配置,及拦截器的作用范围
    struts2中的文件上传和文件下载
    Struts2的配置及入门案例
    Action中动态方法的调用 Action中通配符的使用 Result的配置
  • 原文地址:https://www.cnblogs.com/meihao1989/p/3179560.html
Copyright © 2011-2022 走看看