模拟试题:Java网络编程之URI、URL研究专题三
2013-03-18来源/作者:卫凯点击次数:822
典型情况下uri构造函数用于建立封装用户指定的uri的uri对象。因为用户可能输入不正确的uri,所以uri构造函数产生已检查的urisyntaxexception对象。这意味着你的代码必须明确地尝试着调用某个uri构造函数并捕捉异常,或者通过在该方法的throws子句中列举urisyntaxexception以'推卸责任'。
如果你知道uri是有效的(例如在源代码中的uri),将不会产生urisyntaxexception对象。因为在这种情况下处理某个uri构造函数的异常处理要求可能有困难,所以uri提供了静态的create(string uri)方法。
这个方法分解通过uri引用的string对象中包含uri,如果该uri没有违反任何语法规则就建立uri对象(并从方法中返回对它的引用),否则将捕捉到一个内部的urisyntaxexception对象,把该对象包装金一个未检查的illegalargumentexception对象中,并抛出这个illegalargumentexception对象。
因为illegalargumentexception是未检查的,你不需要明确的尝试代码并捕捉异常或把它的类名称列举在throws子句中。
下面的代码片断演示了create(string uri):
uri uri = uri.create ('http://www.cnn.com');
uri构造函数和create(string uri)方法试图分解出某个uri的授权机构组件的用户信息、主机和端口部分。对于按正常形式形成的基于服务器的授权机构组件,它们是会成功的。对于按拙劣的形式形成的基于服务器的授权机构组件,他们将会失败--并且把该授权机构组件当作是基于注册的。
有时你可能知道某个uri的授权机构组件必须是基于服务器的。你可以确保该uri的授权机构组件分解出用户信息、主机和端口,或者你可以确保将产生一个异常(伴随着相应的诊断信息)。你可以通过调用uri的parseserverauthority()方法实现这种操作。
如果成功分解出uri,该方法将返回包含提取的用户信息、主机和端口部分的uri的新uri对象的一个引用(但是如果授权机构组件已经被分解过了,将会返回调用parseserverauthority()的uri对象的引用。),否则该方法将产生一个urisyntaxexception对象。
下面的代码片断演示了parseserverauthority():
// 下面的parseserverauthority()调用出现后会发生什么情况?
uri uri = new uri ('//foo:bar').parseserverauthority();
如果你知道uri是有效的(例如在源代码中的uri),将不会产生urisyntaxexception对象。因为在这种情况下处理某个uri构造函数的异常处理要求可能有困难,所以uri提供了静态的create(string uri)方法。
这个方法分解通过uri引用的string对象中包含uri,如果该uri没有违反任何语法规则就建立uri对象(并从方法中返回对它的引用),否则将捕捉到一个内部的urisyntaxexception对象,把该对象包装金一个未检查的illegalargumentexception对象中,并抛出这个illegalargumentexception对象。
因为illegalargumentexception是未检查的,你不需要明确的尝试代码并捕捉异常或把它的类名称列举在throws子句中。
下面的代码片断演示了create(string uri):
uri uri = uri.create ('http://www.cnn.com');
uri构造函数和create(string uri)方法试图分解出某个uri的授权机构组件的用户信息、主机和端口部分。对于按正常形式形成的基于服务器的授权机构组件,它们是会成功的。对于按拙劣的形式形成的基于服务器的授权机构组件,他们将会失败--并且把该授权机构组件当作是基于注册的。
有时你可能知道某个uri的授权机构组件必须是基于服务器的。你可以确保该uri的授权机构组件分解出用户信息、主机和端口,或者你可以确保将产生一个异常(伴随着相应的诊断信息)。你可以通过调用uri的parseserverauthority()方法实现这种操作。
如果成功分解出uri,该方法将返回包含提取的用户信息、主机和端口部分的uri的新uri对象的一个引用(但是如果授权机构组件已经被分解过了,将会返回调用parseserverauthority()的uri对象的引用。),否则该方法将产生一个urisyntaxexception对象。
下面的代码片断演示了parseserverauthority():
// 下面的parseserverauthority()调用出现后会发生什么情况?
uri uri = new uri ('//foo:bar').parseserverauthority();