aboutsummaryrefslogtreecommitdiff
path: root/src/ErrorBoundary.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/ErrorBoundary.tsx')
-rw-r--r--src/ErrorBoundary.tsx34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/ErrorBoundary.tsx b/src/ErrorBoundary.tsx
new file mode 100644
index 0000000..d3f5a60
--- /dev/null
+++ b/src/ErrorBoundary.tsx
@@ -0,0 +1,34 @@
+import React, { Component, ReactNode } from 'react';
+
+interface ErrorBoundaryProps {
+ children: ReactNode;
+}
+
+interface ErrorBoundaryState {
+ hasError: boolean;
+}
+
+class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {
+ constructor(props: ErrorBoundaryProps) {
+ super(props);
+ this.state = { hasError: false };
+ }
+
+ static getDerivedStateFromError(_: Error): ErrorBoundaryState {
+ return { hasError: true };
+ }
+
+ componentDidCatch(error: Error, errorInfo: React.ErrorInfo) {
+ console.error("Uncaught error:", error, errorInfo);
+ }
+
+ render() {
+ if (this.state.hasError) {
+ return <h1>Something went wrong.</h1>;
+ }
+
+ return this.props.children;
+ }
+}
+
+export default ErrorBoundary; \ No newline at end of file