java里ex.是什么意思(ty{}catch(Exception ex)什么意思)
大家好,关于java里ex.是什么意思很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于ty{}catch(Exception ex)什么意思的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!
高手帮忙看下,这java程序是什么意思
第1句定义的SQL语句没看懂。。。估计是你表有default值,会自动在数据库里去找默认值
第2句
File f=new File("d:/1.jpg");
FileInputStream in=new FileInputStream(f);
ps.setBinaryStream(6,in,(int)f.length());//
把("d:/1.jpg转换为文件流,然后存入将这个流丢给ps去做数据更新,说白了就是把文件转成流存进数据库
第3句是结果集指向下一条。。这个都问。。
第4句从photo字段取值,取出的是流,参考2.。
第5句把刚才的流转换为文件,丢在指定目录"d:/copy.jpg
最后的方法,用刚才得到的文件流转换为字节流打到前台展现
运行过了,这是2段代码片段,局部里是没错的,放在一个方法里肯定不行,参数重复定义了
java "字段"啥意思
public final static InputStream in= nullInputStream();
nullInputStream是这样实现的:
private static InputStream nullInputStream() throws NullPointerException{
if(currentTimeMillis()> 0)
return null;
throw new NullPointerException();
}
他不是返回null,就是抛出异常,如何初始化in呢?
解答:
看了一下java.lang.System的源代码.
System类里有大量的native方法,是调用本地代码的,这些代码很可能是由虚拟机来调用的.
System类的开头有一段:
static{
registerNatives();
}
这段代码会在虚拟机启动的时候就执行,它在虚拟机里注册System需要使用的一些本地代码
比如:
private static native Properties initProperties(Properties props);
private static native void setOut0(PrintStream out);
在windows下的话,它就告诉虚拟机到哪个dll文件里去找相应的实现
>然而,我知道out是一个PrintStream的对象,但我查看了有关的原代码:public final static PrintStream out= nullPrintStream();
>public final static InputStream in= nullInputStream();
在nullInputStream()方法里有注释解释为什么会设置为空:
/**
* The following two methods exist because in, out, and err must be
* initialized to null. The compiler, however, cannot be permitted to
* inline access to them, since they are later set to more sensible values
* by initializeSystemClass().
*/
private static InputStream nullInputStream() throws NullPointerException{
if(currentTimeMillis()> 0)
return null;
throw new NullPointerException();
}
也就说in, out, and err初始化为null,然后会在后来由initializeSystemClass()方法类初始化成有意义的值
/**
* Initialize the system class. Called after thread initialization.
*/
private static void initializeSystemClass(){
props= new Properties();
initProperties(props);
sun.misc.Version.init();
FileInputStream fdIn= new FileInputStream(FileDescriptor.in);
FileOutputStream fdOut= new FileOutputStream(FileDescriptor.out);
FileOutputStream fdErr= new FileOutputStream(FileDescriptor.err);
setIn0(new BufferedInputStream(fdIn));!!!
setOut0(new PrintStream(new BufferedOutputStream(fdOut, 128), true));!!!
setErr0(new PrintStream(new BufferedOutputStream(fdErr, 128), true));!!!
// Enough of the world is now in place that we can risk
// initializing the logging configuration.
try{
java.util.logging.LogManager.getLogManager().readConfiguration();
} catch(Exception ex){
// System.err.println("Can′t read logging configuration:");
// ex.printStackTrace();
}
// Load the zip library now in order to keep java.util.zip.ZipFile
// from trying to use itself to load this library later.
loadLibrary("zip");
// Subsystems that are invoked during initialization can invoke
// sun.misc.VM.isBooted() in order to avoid doing things that should
// wait until the application class loader has been set up.
sun.misc.VM.booted();
}
in,out,err就是在以上方法以下三条语句里初始化的.
setIn0(new BufferedInputStream(fdIn));!!!
setOut0(new PrintStream(new BufferedOutputStream(fdOut, 128), true));!!!
setErr0(new PrintStream(new BufferedOutputStream(fdErr, 128), true));!!!
看
private static native void setIn0(InputStream in);
~~~~~~~
这是个native函数,是前面registerNatives()的时候注册了的.这个函数应该是把实际连接到输入输出设备的句柄传给虚拟机并赋值给in,out,err
至于:
>InputStream是个抽象的类,怎么能使用char=(char)System.in.read()读入一个字符
我想你还没有明白什么是面向对象.
看看下面代码,我用OutputStream(也是抽象类,跟InputStream对应的输出类)以方便演示:
import java.io.IOException;
import java.io.OutputStream;
public class HelloWorld{
public OutputStream out=null;
public void setOutputStream(OutputStream out){
this.out=out;
}
public static void main(String[] args) throws IOException{
HelloWorld h=new HelloWorld();
PrintStream myOut=System.out;//System.out是一个PrintStream
h.setOutputStream(myOut);
h.out.write("hello,world".getBytes());//一般没人这么写的
}
}
以上代码执行后会输出hello,world
h.out是OutputStream,也是个抽象类,为什么能write(o)呢?
因为PrintStream是OutputStream的子类,所以能被"当作"OutputStream传给h.setOutputStream(myOut);
h.out.write执行的时候实际上是调用这个传进来的PrintStream实例的write方法
同样System.in和out肯定也是在initializeSystemClass()的时候被赋予了一个实际的可用的子类
要能体会到面向对象的好处,就要逐渐适应"对接口编程"的思想,相同接口的对象可以根据需要方便的替换.
比如,我刚才传了一个PrintStream,因此HelloWorld输出到了屏幕上.我如果传给OutputStream的另一个子类FileOutputStream,就会输出到文件里
>还有为什么不是说字符流:writer和reader一般用于UniCode的读写吗?为什么键盘的输入用reader类呢?
不知道你在哪里看到说writer和reader一般用于UniCode的读写
ty{}catch(Exception ex)什么意思
捕获异常。
如果在try的代码块里面发生了异常。就去执行catch的语句。
以下面的程序段为示例:
try{
return a/b;
} catch(Exception e){
//当b为0的时候这里可以打印提示:除数不能为0
}
异常的通俗原理在于,当出现某些错误的时候,用户又不想直接把程序直接关闭,那么就在用户捕捉到的异常里进行处理,这样程序可以继续运行,而不是马上关闭。
扩展资料:
Java关键字
用于try..catch..finally块,进行异常捕获。
完整的使用方法是
try{
语句块1
}catch(<?extendsThrowable>e){
语句块2.1
}catch(<?extendsThrowable>e){
语句块2.2
}catch(<?extendsThrowable>e){
语句块2.3
...
}finally{
语句块3
}
catch可以出现0次、1次或多次,finally可以出现0次或1次,但是catch和finally不能同时不出现。
参考资料来源:百度百科-try(java关键字)
OK,关于java里ex.是什么意思和ty{}catch(Exception ex)什么意思的内容到此结束了,希望对大家有所帮助。