Three Visual Eclipse Tutorials
- onEclipse - Eclipse - The Visual Tutorial (commercial, some free)
- eclipse-tutorial on java.net (free)
- Eclipse Video Courseware (free)
Sad to see, that all tutorials are old and based on Eclipse 3.1 or Eclipse 3.0.
Sad to see, that all tutorials are old and based on Eclipse 3.1 or Eclipse 3.0.
Die Ausnahme, die ein try/catch-Block auffängt, kann in catch wieder neu ausgelöst werden. Dieses Re-throwing zeigt folgendes Beispiel, in dem das Programm den Fehler erst über einen Logger ausgibt und dann weiter nach oben reicht.
Rethrow.java
import java.util.logging.Logger;
public class Rethrow
{
private static Logger log = Logger.getAnonymousLogger();
static void rethrow( RuntimeException e )
{
log.warning( "RuntimeException occurred!" );
// e.fillInStackTrace();
throw e;
}
public static void main( String[] args )
{
try
{
((String)null).length();
}
catch ( NullPointerException e )
{
rethrow( e );
}
}
}
Die Ausgabe ist:
16.08.2006 18:35:27 Rethrow rethrow
WARNUNG: RuntimeException occurred!
Exception in thread "main" java.lang.NullPointerException
at Rethrow.main(Rethrow.java:20)
Wichtig an der Stelle ist -- und daher die auf den ersten Blick unnötige Funktion rethrow() --, dass der Aufrufstack in e gespeichert ist, und daher der Stracktrace nicht die Funktion rethrow() enthält. Wünschten wir dies, müssen wir den Stracktrace neu füllen. Dazu dient die Funktion fillInStackTrace(). Nehmen wir sie im oberen Beispiel hinein, folgt die Ausgabe:
16.08.2006 18:36:16 Rethrow rethrow
WARNUNG: RuntimeException occurred!
Exception in thread "main" java.lang.NullPointerException
at Rethrow.rethrow(Rethrow.java:11)
at Rethrow.main(Rethrow.java:24)
Möchte eine Java-Hilfeseite etwa die Webseite des Unternehmens aufrufen, stellt sich die Frage, wie ein HTML-Browser auf der Java-Seite gestartet werden kann. Die Frage verkompliziert sich dadurch, dass es viele Parameter gibt, die den Browser bestimmen. Was ist die Plattform: Unix, Windows oder Mac? Soll ein Standardbrowser genutzt werden oder ein bestimmtes Produkt? In welchem Pfad befindet sich die ausführbare Datei des Browsers?
Seit Java 6 ist das über die Klasse java.awt.Desktop ganz einfach. Um zum Beispiel einen Standard-Webbrowser und PDF-Viewer zu starten, schreiben wir:
try
{
Desktop.getDesktop().browse( new URI("http://java-tutor.com/") );
Desktop.getDesktop().open( new File("S:/Public.Comp.Lang.Java/3d/Java3D.pdf") );
}
catch ( Exception /* IOException, URISyntaxException */ e )
{
e.printStackTrace();
}
Zusammen ergeben sich folgende Objektmethoden:
· void browse( URI uri )
· void edit( File file )
· void mail()
· void mail( URI mailtoURI )
· void open( File file )
· void print( File file )
Ob zur Realisierung grundsätzlich Programme installiert sind, entscheidet isSupported(Desktop.Action), etwa isSupported(Desktop.Action.OPEN). Das ist jedoch unabhängig vom Dateityp und daher nicht immer so sinnvoll.
import java.io.FilePermission;
import java.security.Permission;
public class PermissionImplies
{
public static void main( String[] args )
{
Permission perm1 = new FilePermission( "c:\\windows\\*", "read,write" );
Permission perm2 = new FilePermission( "c:\\windows\\fonts", "read" );
if ( perm1.implies(perm2) )
System.out.println( perm1 + " implies " + perm2 );
if ( !perm2.implies( new FilePermission("c:\\windows\\fonts", "write") ) )
System.out.println( perm1 + " not implies " + perm2 );
}
}