实例35 除0发生的算术异常(ArithmeticException)
public class Runtime_01 { public static void main(String[] args) { for (int i = 10; i > 0; i--) { System.out.print(" " + (i / (i - 1))); if (i % 5 == 0) System.out.println(); } } }
实例36 数组下标越界异常
public class Runtime_02 { public static void main(String[] args) { int a[] = new int[5]; for (int i = 0; i < 10; i++) { a[i] = i + 1; System.out.print(" " + a[i]); } } }
实例37 数组元素类型不匹配异常
public class Runtime_03 { public static void main(String[] args) { Object obj[] = new String[5]; for (int i = 0; i < obj.length; i++) { obj[i] = new Integer(i); System.out.print(" " + obj[i]); } } }
实例38 强制类型转换异常
public class Runtime_04 { public static void main(String[] args) { Object x = new Integer(0); System.out.println((String) x); } }
实例39 索引越界异常
public class Runtime_05 { public static void main(String[] args) { int[] array = new int[5]; for (int i = 0; i < array.length; i++) { array[i] = i; } for (int i = 1; i <= array.length; i++) { System.out.print(array[i - 1] + " " + array[i]); } } }
实例40 空指针异常
public class Runtime_06 { static Test test; public static void main(String[] args) { System.out.println(test.talk()); } } class Test { public String talk() { return "this is a boy"; } }
实例41 数字格式转换异常
public class Runtime_07 { private String name; private String password; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public static void main(String[] args) { Runtime_07 r7 = new Runtime_07(); String name = r7.getName(); int password = new Integer(r7.getPassword()).intValue(); System.out.println("用户名为" + name + ";密码为" + password); } }
实例42 字符串索引越界异常
public class Runtime_08 { public static void main(String[] args) { String str = "This is a StringIndexOutBounds"; char ch = str.charAt(30); System.out.println(ch); } }
实例43 操作错误(UnsupportedOperationException)
import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class Runtime_09 { public static void main(String[] args) { String[] listArray = new String[2]; List list = Arrays.asList(listArray); List list1 = new ArrayList(list); list1.add("hello"); listArray[0] = "china"; list.add("world"); // 抛出操作错误异常 System.out.println(list.get(0) + "," + list.get(1)); } }
实例44 找不到指定类时发生的异常(ClassNotFoundException)
这里没有提供MySQL的JDBC驱动文件,所以异常
package Chapter04.check; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class CheckException_01 { public static void main(String[] args) throws Exception { Connection conn = null; Statement stmt = null; ResultSet rst = null; String s = ""; Class.forName("com.mysql.jdbc.Driver"); // 注册驱动程序 conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/myuser", "root", "root"); // 获得数据库的连接 stmt = conn.createStatement(); // 创建会话声明 rst = stmt.executeQuery("select * from user"); while (rst.next()) { System.out.print(s = new String(rst.getString(1).getBytes( "ISO-8859-1"), "GBK") + "--"); System.out.print(s = new String(rst.getString(2).getBytes( "ISO-8859-1"), "GBK") + "--"); System.out.print(s = new String(rst.getString(3).getBytes( "ISO-8859-1"), "GBK") + "--"); System.out.print(s = new String(rst.getString(4).getBytes( "ISO-8859-1"), "GBK")); System.out.println(); } } }
实例45 请求的方法不存在
UserAction.java
package chp10; import java.util.Date; import com.opensymphony.xwork2.ActionSupport; public class UserAction extends ActionSupport {//定义一个UserAction类并使之继承ActionSupport private String name; private String password; private String date = new Date().toLocaleString(); public String getDate() { return date; } public void setDate(String date) { this.date = date; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String addName() { System.out.println(this.getName() + " " + this.getPassword() + " hjhjhj"); if (!this.getPassword().equals("") && !this.getName().equals("")) { return "success"; } else { return "fail"; } } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
struts.xml 这里事实上不存在add方法,当使用check.action时出现异常
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="package" extends="struts-default"> <action name="check" class="chp10.UserAction" method="add"> <result name="success">/success.jsp</result> <result name="fail">/fail.jsp</result> </action> </package> </struts>
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
这里struts2用到的jar包:
commons-logging-1.1.jar
freemarker-2.3.8.jar
ognl-2.6.11.jar
struts2-core-2.0.6.jar
xwork-2.0.1.jar