pi-lens
Version:
Real-time code feedback for pi — LSP, linters, formatters, type-checking, structural analysis & booboo
64 lines (53 loc) • 1.36 kB
YAML
id: main-should-not-throw
name: Main Method Should Not Throw
severity: warning
category: reliability
defect_class: correctness
inline_tier: blocking
language: java
message: "main() should not declare throws — handle exceptions internally"
description: |
The main() method should not throw exceptions. Instead, handle
exceptions within main and exit with an appropriate status code.
Throwing from main leaves error handling to the JVM.
✅ FIX: Wrap in try-catch and exit gracefully
```java
public static void main(String[] args) {
try {
runApplication(args);
} catch (Exception e) {
System.err.println("Error: " + e.getMessage());
System.exit(1);
}
}
```
query: |
(method_declaration
(modifiers
"static")
name: (identifier) @NAME (
(throws) @THROWS)
metavars:
- NAME
- THROWS
tags:
- reliability
- java
- error-handling
- entry-point
examples:
bad: |
public static void main(String[] args) throws Exception { // BAD
runApp(args);
}
good: |
public static void main(String[] args) {
try {
runApp(args);
} catch (Exception e) {
System.exit(1); // GOOD - handle in main
}
}
has_fix: false