1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * 15 * See the License for the specific language governing permissions and 16 * limitations under the License. 17 */ 18 19 /** 20 * @author Anton V. Karnachuk 21 */ 22 23 /** 24 * Created on 11.04.2005 25 */ 26 package org.apache.harmony.jpda.tests.jdwp.Events; 27 28 import org.apache.harmony.jpda.tests.share.JPDADebuggeeSynchronizer; 29 import org.apache.harmony.jpda.tests.share.SyncDebuggee; 30 31 /** 32 * Debuggee for ExceptionUncaughtTest unit test. 33 * Generates uncaught DebuggeeException exception. 34 */ 35 public class ExceptionUncaughtDebuggee extends SyncDebuggee { 36 37 public static void main(String[] args) { 38 runDebuggee(ExceptionUncaughtDebuggee.class); 39 } 40 41 @SuppressWarnings("DeadException") 42 @Override 43 public void run() { 44 logWriter.println("-- ExceptionUncaughtDebuggee: STARTED"); 45 46 // Cause loading of DebuggeeException so it is visible from the test. 47 new DebuggeeException("dummy exception"); 48 49 synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_READY); 50 51 logWriter.println("-- ExceptionUncaughtDebuggee: Wait for SGNL_CONTINUE..."); 52 synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE); 53 logWriter.println("-- ExceptionUncaughtDebuggee: SGNL_CONTINUE has been received!"); 54 55 Thread t = new Thread(new Runnable() { 56 @Override 57 public void run() { 58 // Catch a different exception to test catch location is properly reported. 59 try { 60 throwDebuggeeException(); 61 } catch (NullPointerException e) { 62 // Unexpect exception 63 logWriter.printError("Unexpected exception", e); 64 } 65 } 66 }); 67 t.start(); 68 69 try { 70 t.join(); 71 } catch (InterruptedException e) { 72 logWriter.printError(e); 73 } 74 75 logWriter.println("-- ExceptionUncaughtDebuggee: FINISHing..."); 76 } 77 78 public static void throwDebuggeeException() { 79 throw new DebuggeeException("Uncaught debuggee exception"); 80 } 81 } 82