| 本帖最后由 小石姐姐 于 2019-2-21 17:10 编辑 
 
 IllegalStateException: stream has already been operated upon or closed 这个异常为stream流会报的异常,为因为看下面的程序当你执行完第一步进行下一步的时候第一步的stream流已经不能在下面再去进行遍历,因为stream流是向前进行的,即使你注释掉第四部,他也会报这个错误,你无法再去用这个流,但是你可以用链式编程,因为链式编程也是在一直向下进行.不会影响的. package demos;import java.util.ArrayList;
 import java.util.stream.Stream;
 public class Demos01 {
 public static void main(String[] args) {
 ArrayList<String> list = new ArrayList<>();
 list.add("hah1");
 list.add("你好");
 list.add("大家好");
 Stream<String> stream = list.stream();                 1
 Stream<String> skip = stream.skip(1);                  2
 stream.forEach(s -> System.out.println(s));            3
 skip.forEach(s -> System.out.println(s));              4
 }
 }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 IllegalArgumentException: object is not an instance of declaring class 抛出的异常表明向方法传递了一个不合法或不正确的参数。 package it.cast.reflect;import it.cast.domain.Person;
 import java.io.IOException;
 import java.io.InputStream;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Method;
 import java.util.Properties;
 
 public class ReflectDemos3 {
 public static void main(String[] args) throws Exception {
 Properties pro = new Properties();                                     1
 ClassLoader cls = ReflectDemos3.class.getClassLoader();            2
 InputStream is = cls.getResourceAsStream("pro.properties");       3
 pro.load(is);                                                              4
 String classname = pro.getProperty("className");                    5
 String methodName = pro.getProperty("methodName");                  6
 Class cls1 = Class.forName(classname);                                 7
 Constructor con = cls1.getConstructor();                               8
 Object o = con.newInstance();                                            9
 Method method = cls1.getMethod(methodName);                           10
 method.invoke(o);                                                          11
 }
 }
 
 此时这个异常主要是第十一行不对,因为开始错误的时候我没有创建对象,没有第九行,直接传递了一个con,所以报错,第十一行报错是我传递的是错误的,不是对象,所以他找不到要调用的方法.    第二行也一定要注意 .class之前是此类名,而不是Person类名,一定要注意,       .getClassLoader();  其实我理解的就是类加载器就好像是把路径给了is 所以他知道该去哪里照这个pro.properties这个配置文件, 还要注意第七行,这段程序,因为你classname这个的只是字符串,所以不能直接用getclass直接转换类对象方法. 
 
 
 
 
 
 Exception in thread "main" java.sql.SQLException: No suitable driver found for jdbc:mysql//127.0.0.1:3306/he         at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:703)         at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:229)         at cn.itcast.jdbc.jdbcDemos.main(jdbcDemos.java:10) 
 这个异常为数据库的异常,我的这个异常就是你要注意,书写连接位置时,一定要注意冒号的问题,mysql后面要加上冒号. 
 
 
 
 1. DriverManager:驱动管理对象                 * 功能:                         1. 注册驱动:告诉程序该使用哪一个数据库驱动jar                                 static void registerDriver(Driver driver) :注册与给定的驱动程序 DriverManager 。                                  写代码使用:  Class.forName("com.mysql.jdbc.Driver");                                 通过查看源码发现:在com.mysql.jdbc.Driver类中存在静态代码块                                  static {                                         try {                                             java.sql.DriverManager.registerDriver(new Driver());                                         } catch (SQLException E) {                                             throw new RuntimeException("Can't register driver!");                                         }                                         } 
                                 注意:mysql5之后的驱动jar包可以省略注册驱动的步骤。 
 
 会注册两次这里有个静态代码块,DriverManager.registerDriver(new com.mysql.jdbc.Driver()); 创建匿名对象的时候会执行一次,然后调用方法会注册一次 
 |