Tag: 例外

Google App Engine Jersey错误格式json

我正在使用带有Jersey和JAX-RS的Google App Engine JAVA开发REST API。 我希望能够以JSON格式向用户发送自定义错误,因为我正在使用javax.ws.rs.ext.ExceptionMapper 当我在本地计算机上使用Jetty运行应用程序时,一切正常,但是当我部署到Google时,我得到了默认的HTML 404页面 这是资源代码: @GET @Produces(MediaType.APPLICATION_JSON) @Path(“{id}”) public Customer getCustomer(@PathParam(“id”) String id) { Customer customer = getCustomer(id); if(customer == null) throw new NotFoundException(“Customer not found”); return customer; } exception映射器: @Provider public class NotFoundExceptionMapper implements ExceptionMapper { @Override public Response toResponse(NotFoundException e) { ErrorMessage errorMessage = new ErrorMessage(); errorMessage.setErrrorMessage(e.getMessage()); errorMessage.setResponseCode(404); return […]

按类抓住exception?

我想抓住一个我期望的例外,但允许其他人通过。 我现在遇到的解决方案是: protected void perfromCall(Class expectedException) throws Exception { try { response = call.call(request); } catch (Exception e) { if (!expectedException.isInstance(e)) { throw new Exception(e); } } } 虽然这会默默地吃掉我想要的预期exception并扔掉其他exception,但是我不喜欢的是它包装了意外的exception,现在我必须在调用者中捕获意外而不是之前(在尝试默默地捕获之前)预期的exception)我可以让它们冒泡到测试框架以使测试失败。 是否有一种更清晰的方式来说“我期望A类的exception,但对于任何其他exception,让它被抛到链上,直到它由上面的测试框架处理”? 编辑:我想提供一些理由,说明为什么我要这样做,因为有一些答案(现已删除)质疑默默地吃exception。 这适用于调用服务的测试框架。 一些测试将错误的参数传递给服务,因此他们期望服务因捕获无效请求而抛出exception。 因此,我想默默地吃掉预期的exception,但仍然让意外的exception冒泡并且测试失败。

为什么Java中存在已检查和未检查的exception

可能重复: Java:已检查vs未经检查的exception说明 为什么命名的例外被选中和取消选中? 为什么Java中的两个exception类型名为“checked”和“unchecked”? 选择此类例外的原因是什么?

如何创建检查int范围,数字类型而不是char的exception?

我试图绕过exception,我遇到的问题是我需要创建一个程序,要求用户输入数字9-99。 必须使用3个不同的例外对此编号进行错误检查。 e1:数字超出范围(200) e2:number是整数以外的数据类型(double) e3:输入是数字(字符)以外的另一种数据类型 我试图在我的if结构中创建模式以使所有三个工作,但是我无法区分e2和e3。 它将始终默认为e2。 这是我所拥有的只有两个例外,但我非常感谢帮助找出如何实现第三个。 谢谢。 public static void main(String[] args) { Scanner input = new Scanner(System.in); boolean tryAgain = true; do { try { System.out.println(“Please enter an integer between 9 and 99: “); int inInt = input.nextInt(); if (inInt >= 9 && inInt <= 99){ System.out.println("Thank you. Initialization completed."); tryAgain = […]

覆盖标准JVMexception的fillInStackTrace

如果我正在使用reflection并且我想找到是否实现了方法,我可以使用getMethod()方法。 此方法抛出NoSuchMethodException。 有没有办法重载此exception的fillInStackTrace以优化性能? 现在,大约40%的时间花在了这个方法上。 我正在使用一个框架,使用exception作为执行某种控制流的方法。 所以我不想太过侵入性。 如果我正在创建一个扩展Throwable的类并使用这个新类而不是NoSuchMethodException,我有类似的东西: NewException is never thrown in body of corresponding trystatement 谢谢

选中和未选中的例外和设计思路

让我们说这个不可变的记录类型: public class Record { public Record(int x, int y) { Validator.ValidateX(x); Validator.ValidateY(y); X=x; Y=y; } public final int X; public final int Y; public static class Validator { public void ValidateX(int x) { if(x < 0) { throw new UnCheckedException; } } public void ValidateY(int y) { if(y < 0) { throw new UnCheckedException; […]

为什么只能在方法签名中声明某些exception被抛出

当使用“IllegalAccessException”声明方法时,eclipse强制我将该方法声明为抛出exception public void a() throws IllegalAccessException { if(x == 1){ throw new IllegalAccessException(“TEST); } } 并且在使用“IllegalStateException”的方法b中,我不需要将该方法声明为抛出exception public void b() { if(x == 1){ throw new IllegalStateException(“TEST); } } 什么是exception之间的差异 那个强迫我声明抛出exception的方法而另一个不是 谢谢

字符串索引超出绑定exception,字符串索引超出范围

所以,我正在编写一个简单的程序来输入字符串并计算总数。 米 所以,这是我的代码 for(int i=0; i<=n; i++) { if((str.charAt(i)=='m')) { } else { count++; } } System.out.println("The total number of m is "+count); 其中n=str.length(); 和str是我已经采取的一个字符串,但是这个错误不断出现 Exception in thread “main” java.lang.StringIndexOutOfBoundsException: String index out of range: 14 at java.lang.String.charAt(String.java:646) at javaapplication.JavaApplication.main(JavaApplication.java:28 Java Result: 1 什么是这个错误以及如何删除它?

Java:NoSuchElementException

我开始只是在数据文件中读取练习。 当我运行程序时,数据文件被读取,什么不是,但由于某种原因,我仍然得到“NoSuchElementException”,我的输出没有按照它应该的方式格式化。 这是发生了什么: 我创建了一个简单的数据文件,如下所示: Barry Burd Author 5000.00 Harriet Ritter Captain 7000.00 Ryan Christman CEO 10000.00 之后我写了一个简单的“getter”和“setter”程序(代码如下)。 import static java.lang.System.out; //This class defines what it means to be an employee public class Employee { private String name; private String jobTitle; public void setName(String nameIn) { name = nameIn; } public String getName() { return name; […]

我怎么知道方法可以抛出什么exception?

我如何知道方法调用可能引发的exception?