Classes of Errors - sgml/signature GitHub Wiki

OCaml's normal data structures are immutable. They are preferred for the clarity and safety of programming they allow.

Introducing Classes of Errors with Language Features

Error Class Language Examples Description Root Cause in Language Design
Implicit coercion errors VBScript, Perl, PHP Values auto-convert across types (e.g., "123" + 1"124") Weak typing and overloaded operators
Callback hell / async traps VBScript (via COM events) Nested event handlers obscure control flow and error propagation Event-driven model without structured concurrency
Prototype chain confusion Flash (ActionScript) Inherited properties shadow or override unexpectedly Prototype-based inheritance with dynamic property resolution
Global namespace pollution early Python, PHP Variables or functions overwrite each other silently Lack of module encapsulation or enforced scoping
Mutable default arguments Python Shared state across function calls via default mutable values Evaluation of defaults at definition time
Threading race conditions Java, Python (pre-async) Shared memory leads to nondeterministic behavior Threads without safe concurrency primitives
Dynamic dispatch ambiguity VBScript, Ruby Late-bound method calls fail silently or dispatch incorrectly COM-based dispatch and runtime method injection
DSL leakage / context bleed Scala, Groovy Embedded DSLs override core syntax or semantics Flexible syntax and implicit conversions
Reflection-based exploits Java, .NET Access to private internals via reflection enables privilege escalation Runtime introspection without strict access control
Tag/function ambiguity ColdFusion <cfset> and custom tags can shadow or override logic unexpectedly Loose coupling between markup and logic; dynamic tag resolution

Preventing Classes of Errors with Language Features

Class                 Feature                             Example
Type Error            Single Data Type                    awk
Type Mismatch         Union Types                         XQuery
Reference Error       No Variables                        sed
Mismatched Braces     No Braces                           python
Dangling semicolon    Significant Whitespace              python
Buffer Overflow       No Pointer Arithmetic               Ada
Division by Zero      Default to infinity                 lua
Circular Reference    All values are immutable strings    tcl
Circular Import       No Cyclical Dependencies            OCaml
Ambiguous Type        Hindley-Milner type inference       OCaml
Not enough args       Partial Application                 Haxe
Import Error          Implicit Standard Library           Coldfusion
Leaky Abstraction     No Conditional Logic                CSS
Object Expected       Everything is an object             SmallTalk
No such method        Reification                         SmallTalk
Infinite Loop         No Side Effects                     DSSSL
Deadlock              Software Transaction Memory         Clojure
Namespace Conflict    Stack Save/Restore                  PostScript
Invalid arguments     Stack Machine                       PostScript
Heisenbug             Message Passing Concurrency         Erlang

References

React

And Brian has replied with a proper React-way of resetting error boundary – provide a key to an instance of ErrorBoundary component to reset the instant.error in the next render phase.

class App extends React.Component {
  state = {
    errorBoundaryKey: 0
  };

  handleRerenderButtonClick = () => this.forceUpdate();

  handleResetButtonClick = () =>
    this.setState(prevState => ({
      errorBoundaryKey: prevState.errorBoundaryKey + 1
    }));

  render() {
    return (
      
re-render reset error boundary
); } }

Keys: https://dev.to/dance2die/resetting-error-boundary-error-state-125k Events:https://github.com/facebook/react/blob/master/packages/react-dom/src/events/ReactBrowserEventEmitter.js Plugins: https://github.com/facebook/react/blob/master/packages/react-dom/src/events/ChangeEventPlugin.js Draconian Error Handling: https://github.com/facebook/react/issues/11846 Async Loading: https://github.com/facebook/react/issues/1739 Global Errors: https://github.com/facebook/react/issues/10474 Autocomplete: https://github.com/facebook/react/issues/1159 Interactive Validation: https://reactjs.org/docs/uncontrolled-components.html metadata: https://github.com/facebook/react/issues/1259 Async Rendering: https://github.com/facebook/react/issues/12227 focus/blur: https://github.com/facebook/react/issues/10380 IE/Edge: https://github.com/facebook/react/issues/3751 Keyboard Accessibility: https://github.com/facebook/react/issues/7024 Memoization: https://github.com/facebook/react/issues/7942 Prioritization: https://github.com/facebook/react/blob/master/packages/react-reconciler/src/__tests__/ReactIncrementalPerf-test.internal.js Side-Effects: https://github.com/facebook/react/issues/9559 False-Positives: https://github.com/facebook/react/pull/8706 Emulating State Changes: http://reactkungfu.com/2016/03/dive-into-react-codebase-handling-state-changes/ Context Switching: https://reactarmory.com/guides/context-free-react-router Cargo Culting: http://jamesknelson.com/push-state-vs-hash-based-routing-with-react-js/ Caching: https://github.com/facebook/react/blob/master/packages/simple-cache-provider/README.md Pub/Sub: https://github.com/facebook/react/blob/master/packages/create-subscription/README.md NodeJS: http://kangax.github.io/jstests/var-let-const/ NPM: https://github.com/npm/cli/search?p=2&q=err+error+log+metadata&unscoped_q=err+error+log+metadata

⚠️ **GitHub.com Fallback** ⚠️