- [What Are the Different Types of Python Errors? – and How to Handle Them](https://rollbar.com/blog/python-errors-and-how-to-handle-them/): Understanding error types is an essential part of crafting effective Python apps. Each type denotes a distinct problem within the code. These 7 are typical. - [Webinar: Introduction to Improve:Release](https://rollbar.com/event/webinar-introduction-to-improverelease/): # LLMs.txt - Sitemap for AI content discovery # Rollbar > Error Tracking Software for JavaScript, PHP, Ruby, Python and more --- - [What Makes a Company Attractive to Candidates?](https://rollbar.com/blog/what-makes-a-company-attractive-to-candidates/): In today’s competitive talent marketplace, making your company attractive to potential candidates is a must. In this case study, we covered how one of our favorite partners, Rollbar, achieves a great employer brand during the recruitment process. - [Using Rollbar for Performance Monitoring](https://rollbar.com/blog/how-to-use-rollbar-for-performance-monitoring/): Rollbar allows you to gain real-time visibility into exceptions and crashes in your applications and act on them quickly and easily. An important piece of any application is knowing if transactions are executing slower or below a certain threshold. ## Pages ### Announcing Crash Monitoring for macOS with Rollbar - Published: 2019-08-29 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/announcing-crash-monitoring-for-macos-with-rollbar/ - Categories: product - Tags: macOS What’s better than an SDK that supports iOS? One that also supports macOS! With the latest version of rollbar-ios (v1. 8. 1), Rollbar now supports crash monitoring for macOS. You can use Rollbar to monitor, triage, and debug crashes and errors on both iOS and macOS. What else, you ask? We’re excited about some significant improvements for both iOS and macOS. Read on for the details. Real-time crash monitoring & debugging for macOS All the Rollbar features previously available for iOS only are now available for both Apple platforms, iOS and macOS. You’ll get notified in real-time of any exception or an application crash (on the subsequent application restart). We’ll also group similar crashes using our fingerprinting technology so you won’t have to deal with noise and can focus on the most important issues. Additionally, Rollbar gives you all the data you’ll need to debug within minutes. This includes the available error and crash details, stack traces, any useful telemetry metadata, affected users, relevant app versions, and details about runtime environments (OS version, SDK version, device details, etc. ). You can also clearly see the device OS (iOS or macOS) of a payload on the Items view in the Rollbar dashboard. Rollbar CocoaPod now supports both iOS and macOS as a single universal pod targeting both platforms as well. But wait, there’s more! We’ve made the rollbar-ios SDK easier to integrate into your app (iOS or macOS based). You can include it: Via CocoaPods - see examples for iOS app... --- - [Webinar: Accelerating Code Quality with the DORA Metrics](https://rollbar.com/event/next-event/): - [How to add context to errors with custom tags](https://rollbar.com/blog/tag-errors-with-custom-tags/): One of the hardest tasks for software engineers is often having to stop what you are doing and look into a software bug (error), find the root cause and fix it quickly. This is hard because you may have never seen the affected code (someone else wrote it), it could be code you wrote a long time ago or just the context switching from what you are working on right now. - [How to Debug Code Using ChatGPT](https://rollbar.com/blog/how-to-debug-code-using-chatgpt/): ChatGPT can help you debug quickly and efficiently. Follow these 6 steps to engineer prompts that give the best results. - [Webinar: 99% DevOps Presents | The Anatomy of Observability](https://rollbar.com/event/title-lorem-ipsum-dolor-sit-amet-consectetur-adipi-scing-elit-sed-do-eiusmod-tempor-incididunt-ut-labore-et-dolore-magna-aliqua-3/): ### Introduction to Error Handling in Angular 7 Using Rollbar - Published: 2019-08-15 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/introduction-to-error-handling-in-angular-7-using-rollbar/ - Categories: Code Tutorials, JavaScript - Tags: angular In this tutorial, you will be introduced to errors tracking in Angular 7 using the errorHandler class and Rollbar. This is the last part of the Angular 7 error handling series, you can refer to the first part here, and the second part here. In this series, you have been introduced earlier to handling client side errors and then HTTP errors gracefully in Angular 7 with tools like errorHandlers, Interceptors and even RxJS operators. In this post you will be shown how to track these errors in a remote tracking environment. For full tutorial, visit https://pusher. com/tutorials/error-handling-angular-part-4 --- - [Conference: Developer Week Management 2021](https://rollbar.com/event/title-lorem-ipsum-dolor-sit-amet-consectetur-adipi-scing-elit-sed-do-eiusmod-tempor-incididunt-ut-labore-et-dolore-magna-aliqua-2/): ## News - [Introducing our new Item Detail page](https://rollbar.com/blog/introducing-our-new-item-detail-page/): We’re excited to share a significant update to all Rollbar plans in the next few weeks. We’ve redesigned our item... ### New Integration - Create Microsoft Azure DevOps Work Items directly from Rollbar - Published: 2019-08-07 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/new-integration-create-microsoft-azure-devops-work-items-directly-from-rollbar/ - Categories: product - Tags: integrations Does your team use Azure DevOps for tracking work? You’re going to love our latest integration if that’s the case. You can now create and resolve Work Items in Azure DevOps directly from Rollbar, making error monitoring and debugging even faster. This is the latest addition to our toolkit for the Microsoft ecosystem (read about our Azure Active Directory integration). It reinforces our mission to help software developers build software quickly and painlessly. It also saves valuable time so that developers can stay in flow. With this integration, you can: Create an Azure DevOps Work Item directly from Rollbar, either directly or based on the ruleset (details below) View the stack trace in the Azure DevOps Work Item Auto-create tags and area paths, and view the Item in Rollbar with a single click Change the Work Item state automatically based on changes in Rollbar Resolve Azure DevOps Work Item automatically once resolved in Rollbar Rules for automatic Item related actions: You can create rules for specific actions to be triggered automatically. These include creating, resolving, or changing the state of a Work Item. An example can be setting up a rule that automatically creates a new Work Item when an error occurs for a specified number of times. You can also create a Work Item directly from the Rollbar item by clicking on ‘Create Azure DevOps Work Item’ if that works better for your workflow. Azure DevOps Work Item from a Rollbar Item: You can view key details of a... --- - [Rollbar to improve code with new AI-assisted workflows and automation-grade grouping](https://rollbar.com/news/rollbar-to-improve-code-with-new-ai-assisted-workflows-and-automation-grade-grouping/): Rollbar wants to shift developers’ focus to continuously improving code, instead of having to continuously fix it. - [Item Detail Page Update Details](https://rollbar.com/blog/item-detail-page-update-details/): We have introduced a new design for the Item Detail page - as well as helping to investigate & resolve... - [How to Fix RecursionError in Python](https://rollbar.com/blog/python-recursionerror/): The Python RecursionError is an exception that occurs when the maximum recursion depth is exceeded. Learn how to fix it. - [Rollbar powers AI-assisted workflows with new grouping engine](https://rollbar.com/news/rollbar-powers-ai-assisted-workflows-with-new-grouping-engine/): Rollbar, providers of the Continuous Code Improvement Platform, is introducing AI-assisted workflows powered by its new automation-grade grouping engine, enabling... - [How to Fix ZeroDivisionError in Python](https://rollbar.com/blog/python-zerodivisionerror/): The Python ZeroDivisionError is an exception that occurs when a number is attempted to be divided by zero. Learn how to fix it. - [How to Integrate ChatGPT into Your Python Script](https://rollbar.com/blog/how-to-integrate-chatgpt-into-your-python-script/): Want to add some cutting-edge AI magic to your code? Buckle up as we show you how to use ChatGPT in your Python script. - [Reducing noise in Stack Traces by collapsing non-project frames](https://rollbar.com/blog/reducing-noise-in-stack-traces-by-collapsing-non-project-frames/): Reducing noise in Stack Traces by collapsing non-project frames - [How to Fix EvalError in JavaScript](https://rollbar.com/blog/javascript-evalerror/): The JavaScript EvalError occurs when the global eval() function is used in a way that is not allowed. Learn more about it here. ### Exception Monitoring Across Environments - Published: 2019-07-31 - Modified: 2025-02-19 - URL: https://rollbar.com/blog/exception-monitoring-across-environments/ - Categories: topics - Tags: error-monitoring Tools like Rollbar have changed the way development teams are recording and managing their exceptions. What used to be a very personal developer-by-developer activity can now be a team-wide tool for greater transparency, and increased application quality. But many still treat exception monitoring as a developer activity, and they are not leveraging its benefits across all environments, from development to stage and integration, to systems testing and production. Let's review why exception monitoring in all environments is so beneficial, and some best practices for setting it up. By standardizing with Rollbar for exception monitoring across environments and clients, you have better visibility and better input into the application and development processes, and it’s a good way to ensure quality prior to delivering releases to customers. But even after release, the tool has been extremely useful for: 1. Support of CD and canary releases: More and more we are asked to consider using continuous delivery (CD) and canary release processes. While in many cases it is not possible or a good fit, when we do get an opportunity to implement CD, exception monitoring is the only way to support it, because code goes from developer to source repo and directly to prod as long as the basic tests show up green. We know very little about the code, and do not have the eyeballs on exceptions that we normally would. This way, an exception in prod is just one more trigger to let us know that a release should be rolled... --- - [Caching Database Queries in SQLAlchemy - Part 1/2](https://rollbar.com/blog/caching-database-queries-in-sqlalchemy-part-1-2/): How to cache database ORM queries using Python's SQLAlchemy v1.3 library - [Take control of monitoring and responding to your production Frontend Javascript errors](https://rollbar.com/blog/responding-to-frontend-javascript-errors/): We are very lucky on the Rollbar Customer Engineering Team because we get to work with many many development teams. Each team develops, tests, and deploys their applications in their own way. They have chosen different languages and frameworks to solve their particular problem. We learn from each team that we work with, and share these learnings to our Product Design team. ### Upload Source Maps to Rollbar - Published: 2019-07-22 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/upload-source-maps-to-rollbar/ - Categories: Code Tutorials, JavaScript - Tags: source-maps From https://michalzalecki. com/upload-source-maps-to-rollbar/ Upload source maps to Rollbar In production, the most important advantage of using a build tool like webpack is a smaller size and thus improved overall application performance. Although beneficial for our users, the bundled and minified code is harder to debug for developers as the code they have written doesn't map 1:1 to error stack traces. Multiple tools for minifying, bundling and transpiring JavaScript modules can generate source maps along with the resulting code. Source maps allow developer tools (Chrome DevTools, test runners, error reporting software) to find a reverse mapping from the optimized code back to the source code. Rollbar (and often other error tracking software) supports source maps to display error stack traces that point to the erroneous lines in the source code instead of an optimized client-size bundle your users download. The easiest, although not recommended, way to provide Rollbar with source maps is to make them available for download from your production server. Once Rollbar receives the error, it will schedule the download of the source map file. A reliable and recommended way to make source maps available for Rollbar is to upload them pre-deploy. It's also the only way if you don't wish to share the source code of your app by exposing it via publicly-available source maps. In this article, we will create a required configuration and write a script for uploading source maps to Rollbar. Read Full Article at: https://michalzalecki. com/upload-source-maps-to-rollbar/ --- - [Can ChatGPT speed up software error resolution?](https://rollbar.com/blog/chatai-for-software-error-resolution/): One of the hardest tasks for software engineers is often having to stop what you are doing and look into a software bug (error), find the root cause and fix it quickly. This is hard because you may have never seen the affected code (someone else wrote it), it could be code you wrote a long time ago or just the context switching from what you are working on right now. - [Rollbar Lets Developers Focus on Continuously Improving Code with AI-Assisted Workflows and Automation-Grade Grouping](https://rollbar.com/news/rollbar-lets-developers-focus-on-continuously-improving-code-with-ai-assisted-workflows-and-automation-grade-grouping/): Rollbar, providers of the Continuous Code Improvement Platform, today announced AI-assisted workflows powered by its new automation-grade grouping engine. - [How to Fix Ruby Bundle Install Errors](https://rollbar.com/blog/ruby-bundle-install-errors/): Ruby’s "Bundle Install" command is used to install all the dependencies of a Ruby project. However, this command may fail for a variety of reasons. - [How to Handle ActiveRecord:: RecordNotFound in Ruby](https://rollbar.com/blog/ruby-activerecord-recordnotfound/): When an application is unable to find a record corresponding to the parameters in the database, a RecordNotFound error message appears in Ruby. - [Rollbar Announced AI-Assisted Workflows](https://rollbar.com/news/rollbar-announced-ai-assisted-workflows/): Rollbar announced AI-assisted workflows powered by its new automation-grade grouping engine. - [How to Implement Try Catch Finally Blocks in PHP](https://rollbar.com/blog/php-try-catch-finally/): Using try-catch-finally blocks can help you write more robust and reliable code by handling exceptions in a controlled manner. Learn how! ### Continuous Delivery with Jenkins and Rollbar - Published: 2019-07-10 - Modified: 2023-06-20 - URL: https://rollbar.com/blog/continuous-delivery-with-jenkins-and-rollbar/ - Categories: topics - Tags: continuous-delivery Continuous delivery (CD) helps reduce the cost, time and risk of delivering changes by allowing for fast incremental updates to applications in production. However, it’s essential to monitor your application after each deployment. You need to be notified immediately if something is wrong or users are having a poor experience. Rollbar is a leading solution for error monitoring in the software development lifecycle. It alerts you when new errors occur after a deployment. It can also tell you which deployment the error was first seen in, and which code changes were likely responsible. This can dramatically speed up your troubleshooting time and help you fix problems faster. In the screenshot above, you can see that Rollbar has automatically identified the suspected deployment where the error was first seen (indicated by the second red circle). Additionally, it has identified the code change where the error was introduced (indicated by the third red circle). You can click on these links to go straight to the code change in GitHub or Bitbucket. Jenkins is a popular open source server to automate continuous integration and continuous delivery. We'll show you how to configure Jenkins to notify Rollbar when a new version is deployed. Then, Rollbar will tell you the suspected deployment for each error. Our pet clinic example Rollbar and Jenkins should work with pretty much all applications but we chose the Java pet clinic project to demonstrate the integration capabilities. It is freely available and simple to run or modify. The source code... --- - [Rollbar rolls out service to improve error detection for developers](https://rollbar.com/news/rollbar-rolls-out-service-to-improve-error-detection-for-developers/): Rollbar Inc. today updated its Continuous Code Improvement Platform with a new “automation-grade grouping engine”... - [Heroku Deploy App Webhook Support](https://rollbar.com/blog/heroku-deploy-app-webhook/): Heroku Deploy Hook Changes Starting October 17, 2022, Heroku will stop accepting new deploy hooks. Existing hooks will continue working... - [How to Handle the Unpermitted Parameters Error in Ruby](https://rollbar.com/blog/ruby-unpermitted-parameters-error/): The Unpermitted Parameters error is raised when the given parameter is not expected in an update, create or user-defined action. Learn more. ### How We’re Improving Error Grouping - Published: 2019-05-15 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/how-were-improving-error-grouping/ - Categories: product - Tags: grouping Imagine that you are developing an application and there's an error in the code. When you release it to production, this error causes hundreds of thousands of crashes. In this case, a logging tool would list all the crashes but an error monitoring tool, like Rollbar, would attempt to group the crashes together. Now you would receive just one notification about an error that crashed hundreds of thousands of times instead of many notifications about different crashes. Error grouping is hence essential to any error monitoring solution. Our commitment to helping software developers spend less time on debugging has recently led to the acquisition of Hungary-based Samebug, experts in the topic of error grouping. With an expanded team we now have the resources to operate an entire squad focused on grouping algorithm improvements. This squad is made up of computer and data scientists working full time on delivering various improvements to the algorithm, both small and large, that will be rolled out gradually. We are excited to announce the release of the first few improvements, solutions to specific issues that are small but can be very annoying when they come up. Recognize Missing jQuery First off, we have a JavaScript-related improvement. We know how annoying it is to see many different items created when jQuery is missing. We decided to group these together to reduce the noise and let you focus on the real errors. Every JavaScript project should use this migration, as you might see this error even when... --- - [Runtime Errors in Ruby](https://rollbar.com/blog/ruby-runtime-errors/): A RuntimeError is a default exception raised when an invalid operation is performed. Let’s learn more about these errors with some examples. - [How to Fix HTTPError in Python](https://rollbar.com/blog/python-httperror/): An HTTPError is raised when an HTTP request returns a status code that represents an error. Learn how to fix it. - [Rollbar Acquires Hungary-Based Samebug](https://rollbar.com/news/rollbar-acquires-hungary-based-samebug/): Rollbar announced it has acquired Hungary-based Samebug - [How to use Try Catch Throw in JavaScript](https://rollbar.com/blog/exception-handling-in-javascript-try-catch-throw/): How to use Javascript Try Catch Throw to handle exceptions. ### Welcoming Letania Ferreira - Published: 2019-04-15 - Modified: 2023-06-26 - URL: https://rollbar.com/blog/welcoming-letania-ferreira/ - Categories: company - Tags: team Letania is another new member of our support team and started as a Customer Service Engineer in December 2018. She’s new to the software engineering world and, like many other Rollbar employees, has a unique background that led her here. Letania has lived and worked in Europe, North America and South America. She is originally from Brazil, where she studied Portuguese and English as an undergrad. She went on to eventually earn her Master’s in Romance languages and a PhD in Romance Linguistics. She has previously worked as an English instructor in Belgium, has taught university classes as an assistant professor/visiting instructor at universities in Illinois and Brazil, and worked as a linguist in Brazil for an innovation technology company. After many years in this field, she attended Hackbright Academy to learn some basic coding skills but ended up falling in love with it and is now working towards becoming a full-fledged developer. When asked what drew her to pivot her career interests towards software engineering Letania responds that she was looking for a change to something new. Going from 20 years in academia to working for a startup may seem like quite the 180 but Letania finds a lot of similarities between the work and research she was doing in linguistics and coding. Both of them, she says, are based on finding and following rules and patterns. As a researcher she spent a lot of time running and analyzing large amounts of data to translate that data into actionable... --- - [How to Handle io.netty.handler.timeout.ReadTimeout Exception in Java](https://rollbar.com/blog/java-io-netty-handler-timeout-readtimeoutexception/): This exception is thrown when no data is read within a certain period of time when using the Netty framework. Learn how to handle it. - [Lolapps engineers launch Rollbar](https://rollbar.com/news/lolapps-engineers-launch-rollbar/): Brian Rue and Cory Virok launch an error tracking platform for developers. ## Tradeshows - [How to Fix Runtime Errors in Python](https://rollbar.com/blog/python-runtime-error/): A runtime error is a type of error that occurs during program execution. Learn how to fix them. ## Webinars ### Introducing Interactive Slack Notifications - Published: 2019-03-12 - Modified: 2021-07-19 - URL: https://rollbar.com/blog/introducing-interactive-slack-notifications/ - Categories: product - Tags: Slack Quickly responding to new, reactivated, and otherwise important exceptions is a critical part of adopting continuous delivery and other DevOps best practices. Rollbar provides code version-specific dashboards and a live feed for proactively monitoring for exceptions during a deploy, but for those exceptions that happen when you aren't actively watching Rollbar, our Slack integration is the most popular way to get real-time alerts. Previously our Slack alerts were read-only, but it's now possible to take immediate action on exceptions from within Slack, including: Assigning items to a teammate for further investigation. Resolving, muting, or reopening items. Setting the level to critical, warning, etc. Slack actions require the acting user to be logged into Rollbar, so you'll have a full audit trail and only members of your team with Rollbar access will be able to update items from Slack. Already have Slack notifications set up? In order to use Slack actions the authorization token used by Rollbar needs to be updated with a new scope. This is a quick change and can be done by clicking the link in the banner that appears in-app and then re-authorizing Rollbar's access to your Slack account. Slack actions are enabled for by default in all new projects, with the option to turn them on/off for an entire project or per notification rule. Want to add the Slack integration to your project? Check out our docs for Slack and notification setup. Feedback? Questions? We're excited to hear what you think and ready to help if... --- - [How to Avoid java.util.concurrent.TimeoutException](https://rollbar.com/blog/java-timeoutexception/): The java.util.concurrent.TimeoutException is thrown when a blocking operation times out. Learn how to avoid it. - [Guide to Frontend Error Handling](https://rollbar.com/blog/guide-to-frontend-error-handling/): Discover the secrets to effective error handling and how to track errors in real-time. Don't miss out on the essential tips in this must-read guide. - [What is E_WARNING in PHP?](https://rollbar.com/blog/php-e-warning/): PHP run-time warnings are non-fatal errors that do not halt script execution. Learn more about them here. ### Introducing the Rollbar Pipe for Bitbucket Pipelines - Published: 2019-02-28 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/introducing-the-rollbar-pipe-for-bitbucket-pipelines/ - Categories: product - Tags: continuous-delivery Automating your deployment process is a critical step towards adopting continuous delivery. For teams that use Bitbucket for hosting their source code, Bitbucket Pipelines provide an easy way to automatically build and deploy when changes are made in your origin repository. The Rollbar team is excited to participate in the launch of Bitbucket Pipes, which make it even easier to configure your pipeline. Bitbucket Pipes makes it easy to build and automate a CI/CD pipeline that meets your exact needs. Bitbucket Pipes replaces custom-written scripts with parameterized calls to vendor-supported 'pipes'. For instance, you can now report a deploy to your Rollbar project with a call to the rollbar/rollbar-notify pipe: As you can see in the example above, adding the rollbar/rollbar-notify pipe takes just a couple of lines of YAML and it unlocks several features in Rollbar which will speed up your debugging process when exceptions occur. Deploy Tracking in Rollbar Reporting deploys to Rollbar makes it easier to correlate exceptions to code changes which may have triggered them: Each exception in Rollbar has a 'Suspect Deploy' which is the last reported deployment before it became active. Deploys will appear as an entry in your live exception feed so you can quickly see when code changes occurred. If your Rollbar account is on an Advanced or Enterprise plan, you can track exceptions by version, providing a real-time dashboard of exceptions occurring in your last deployed version. Reporting Deploys via the Bitbucket Pipe When you add the rollbar/rollbar-notify pipe to your... --- - [What is Migration in Rails?](https://rollbar.com/blog/migration-in-rails/): Migration in Rails makes it easy to change an application's database schema consistently, but occasionally it trips up. Learn what steps you can take. - [How to Resolve NameError: Uninitialized Constant in Ruby](https://rollbar.com/blog/ruby-nameerror/): The NameError: Uninitialized Constant error in Ruby is often raised when a given variable or constant is undefined or invalid. Learn how to handle it. - [What is E_NOTICE in PHP?](https://rollbar.com/blog/php-e-notice/): Run-time notices indicate minor errors in PHP that do not halt script execution. Learn more about them here. ### Welcoming Samebug to Rollbar - Published: 2019-02-26 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/welcoming-samebug-to-rollbar/ - Categories: company - Tags: behind-the-scenes Today we're announcing that we've acquired Hungary-based Samebug. This is an important moment for Rollbar and represents a big step in our mission to help companies build software better, faster, and our vision of a life without bugs. Two summers ago, Cory and I stumbled across the samebug. io website. We had been noodling on the observation that many of the bugs that developers find and fix via Rollbar are pretty similar to the ones that other developers are finding and fixing, and we were wondering if there could be a way that Rollbar could help connect those developers to each other and reduce that duplication of work. When we saw the stack trace search engine that Samebug had built, powered by what appeared to be a grouping algorithm not unlike ours, we were intrigued. Soon, we met Samebug's founders, Reni, Arpi, and Dani, and discovered kindred spirits. It was clear that we shared a vision of how much better building software could be, and an approach to business and life grounded in honesty and transparency. Over the past year and a half, we explored various ways we could work together, culminating in today's announcement. As a Rollbar customer, you can look forward to our core feature - grouping - getting better and better as we integrate Samebug's technology into the Rollbar grouping engine, and longer-term, to our combined team putting our heads together to solve this and other deep problems that remain unsolved by any error monitoring solution. And... --- - [How to Fix E_WARNING: strpos(): Empty needle in PHP](https://rollbar.com/blog/php-e-warning-strpos-empty-needle/): This warning is issued if the substring being searched for using the strpos() function is an empty string. Learn how to fix it. - [How to Use errors.WithMessage() in Golang](https://rollbar.com/blog/golang-errors-withmessage/): The errors.WithMessage() method adds context to errors by annotating them with a new message which makes debugging easier. Learn more about it here. ### 4 Reasons Why You Need Error Monitoring - Published: 2019-02-19 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/4-reasons-why-you-need-error-monitoring/ - Categories: topics - Tags: business-impact Errors are a fact of life in web development, and even the world's greatest brands are not without fault. Errors can create unhappy customers, deter new ones and reduce revenues. An error monitoring solution offers a clear view of the most important errors based on how often they occur and how they impact users. It will give your engineering team confidence to deploy faster, and debug problems quickly, so they can get back to building new features. Here are four good reasons why you need error monitoring: 1. It Improves Customer Experience Most consumers now have high expectations for apps, and things like server errors, timeouts and missing resources can quickly degrade the user experience. A bigger issue is that the consumers don't even report many of the errors they encounter. Organizations that don't have an efficient system to identify and address errors will lose sales, customers, and market share should those errors persist or happen repeatedly. You shouldn't rely on customers to report problems, instead find and fix them proactively. An error monitoring solution gives you visibility into errors that affect the most users and highest value users. This helps your team prioritize errors by impact and efficiently allocate resources. The richer debugging capabilities of an error monitoring solutions can reduce Mean Time to Detect (MTTD) and Mean Time to Restore (MTTR), both of which can reduce outages and increase uptime. {: . highlightbox} “Rollbar is our early warning system for errors. The worst thing that can happen is... --- - [How to Handle the NoMethodError in Ruby](https://rollbar.com/blog/ruby-nomethoderror/): The NoMethodError is raised when an object on which we are calling the method doesn't exist. Learn how to use method_missing() to handle it. - [How to Handle InvalidArgument Exception in PHP](https://rollbar.com/blog/php-invalidargumentexception/): The PHP InvalidArgumentException is an exception that is thrown when an inappropriate argument is passed to a function. Learn how to handle it. - [Speeding Up Software Delivery: You're Only As Good As Your Weakest Link](https://rollbar.com/webinar/speeding-up-software-delivery-youre-only-as-good-as-your-weakest-link/): Learn about the trends in DevOps and modern application architectures, and the common challenges enterprises face as they try to... - [How to Handle an ActionController:: RoutingError in Ruby on Rails](https://rollbar.com/blog/ruby-on-rails-routingerror/): The Rails version of the 404 error, ActionController::RoutingError occurs when a URL requested does not have a matching route. Learn how to catch them. - [How to Handle PDOException in PHP](https://rollbar.com/blog/php-pdoexception/): The PHP PDOException is a runtime exception that occurs when something goes wrong while using the PDO class or its related extensions. Learn how to handle it. - [CircleCI and Rollbar on enabling Continuous Delivery](https://rollbar.com/webinar/circleci-and-rollbar-on-enabling-continuous-delivery/): Join CircleCI CTO Rob Zuber and Rollbar Co-founder and CTO Cory Virok as they discuss 9 questions about continuous delivery. ### Reduce noise in error monitoring with Grouping Suggestions - Published: 2019-01-16 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/reduce-noise-in-error-monitoring-with-grouping-suggestions/ - Categories: product - Tags: monitor One perennial problem we face in monitoring is dealing with noise. We don't want to miss important signals, but sorting through all the noise can be a chore. Ideally, we want to spend as little time as possible doing the setup work needed to achieve excellent signal-to-noise ratio. The feature we've just released will help you get closer to that optimal setup faster, with less work. Noise reduction using Rollbar Several major noise reduction mechanisms are built into Rollbar today: Automatic default grouping of all occurrences of an error, so if an error occurs 100 times, you'll see only one error item in your real-time error & crash reporting feed. Custom grouping rules you can set. For example, you can set a custom rule so that all future occurrences of an exception class are grouped as one error, regardless of the stack trace. You can also manually merge errors directly in the feed. When you do a manual merge all past occurrences get grouped, not just future ones. Custom grouping suggestions With Grouping Suggestions, Rollbar will now attempt to suggest a custom fingerprint rule whenever you manually merge errors. When you accept a suggestion a new custom fingerprint rule is created and you won't have to manually merge similar errors again in the future. How it works: Step 1: Perform a manual grouping Step 2: Review and accept suggestion The first release of this feature detects items with the same exception class and similar exception messages, and automatically generates the... --- - [Debugging Apex Applications with Error Monitoring](https://rollbar.com/webinar/debugging-apex-applications-with-error-monitoring/): Rollbar is the first company bringing the value of modern Error Monitoring and Debugging to the Apex ecosystem and to... - [Maximize Your Workflow Through the Clubhouse API](https://rollbar.com/webinar/maximize-your-workflow-through-the-clubhouse-api/): Learn how the Clubhouse API can give you a greater amount of control over your data and help automate your... ### Error Monitoring In Zend 3 - Published: 2019-01-14 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/error-monitoring-in-zend-3/ - Categories: Code Tutorials, PHP - Tags: PHP Zend Framework 3 is a free and open-source PHP framework. It uses a model-view-controller (MVC) pattern which makes its structure consistent and maintainable. It also accesses the database in an object-oriented way. Instead of directly interacting with the database using SQL queries, you can use doctrine object-relational mapping (ORM) to manage the structure and relationships of your data. This makes code easier to write and maintain. In production applications, it’s important to monitor errors so you understand your users experiences and can fix issues before more users are affected. In this tutorial, you will see how to set up Zend Framework 3 to handle errors natively and send errors to the error monitoring service Rollbar. The error message can be seen in your PHP error log or in Rollbar, including a stack trace that provides information about the line of code that caused the error. Native error handling in Zend 3 The easiest and most basic way to handle errors is using try, catch, and finally statements. When an error is thrown in the try block, the catch block executes and handles the error. For example, you may want to record the error or present a more friendly error message to the user. try { $value = 5 / 0; } catch (\Exception $e) { echo $e->getMessage; } In production, the application can crash due to uncaught or runtime errors, such as when an application tries to access invalid data or code or an illegal action is attempted. To avoid... --- - [Advanced Error Monitoring & Debugging With Rollbar](https://rollbar.com/webinar/advanced-error-monitoring-debugging-with-rollbar/): Rollbar helps developers deploy better software, faster, with solutions that identify, prioritize and resolve coding errors. Join Rollbar's product experts... - [Smart Error Monitoring for Spring Developers](https://rollbar.com/webinar/smart-error-monitoring-for-spring-developers/): Nobody likes to find out about errors from the customers themselves. The ripple effect of churn from a single user... ### Error Handling with Angular 6 - Tips and Best Practices - Published: 2019-01-04 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/error-handling-with-angular-6-tips-and-best-practices/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript Handling errors properly is essential in building a robust application in Angular. Error handlers provide an opportunity to present friendly information to the user and collect important data for development. In today's age of advanced front-end websites, it's more important than ever to have an effective client-side solution for error handling, which is covered in this article. An application that does not handle errors gracefully leaves its users confused and frustrated when the app suddenly breaks without explanation. Handling these errors across an application greatly improves user experience. Data can also be collected from within the error handlers to inform the development team about important issues that slipped past testing. In this article, we will compare several solutions for error handling in Angular apps. First we will describe traditional approaches using ErrorHandler and HttpClient, and then we will show you a better solution using HttpInterceptor. We'll also show how you can use this interceptor to track errors centrally in Rollbar. The shortcomings of the console log Beginners in JavaScript programming often start out using the console log because that is the default output in most development environments. Once you deploy your application to a production environment, you no longer have access to the console log. That's because the code is now running on the client browser. When those clients experience errors, you'll have no visibility to them unless you record them in a centralized location. In order to understand the user experience and how errors can affect it, you need... --- - [Best Practices for Moving from a Monolith to Microservices](https://rollbar.com/webinar/best-practices-for-moving-from-a-monolith-to-microservices/): Transitioning from a Monolith to a Microservices architecture can take years to complete. Companies are under more pressure than ever... --- # # Detailed Content ## Pages ### What we've shipped in 2018 - Published: 2018-12-27 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/what-weve-shipped-in-2018/ - Categories: product - Tags: triage With 2018 almost coming to a close, let's take a look at all the product improvements we've shipped this year . New features and SDK releases Account dashboard: Track error trends account-wide Versions: Monitor errors by deployed code revisions All items view: View all and/or specific errors across projects Enhanced stack trace Enhanced deploy API Official . NET SDK - now v2. 1 Official Golang SDK - v1. 0 Official React Native SDK - v0. 4 Integrations customizable data retention Notifications: edit notification rules before turning on, disable email notifications for a new project User onboarding: email domain whitelisting, user provisioning via Okta Search: search items with issues, search by method name in stacktrace A brand new Docs site For the full list, check our changelog. Tutorials If you're new to Rollbar, or want to use Rollbar with a language or framework new to you, check out these tutorials we've written in 2018. Examples included. JavaScript source maps Vue. js ASP. NET Xamarin Android iOS PHP Symfony PHP Magento PHP Wordpress On to 2019 ! If you aren't using a tool like Rollbar yet, you're practically outsourcing bug discovery to users. Rollbar provides realtime error monitoring to help you release better software faster. Instantly see all errors as they occur, and debug them before users notice. Give it a try for free! --- ### Monitoring errors in Xamarin apps - Published: 2018-12-20 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/monitoring-errors-in-xamarin-apps/ - Categories: .NET, Code Tutorials - Tags: dotnet Xamarin is based on Mono, the open source implementation of Microsoft's . NET Standard. It allows us to create apps that easily run in multiple devices like phones and smart watches. It solves the difficulties many developers face when they’re developing cross-platform apps like different coding languages and UI paradigms. With Xamarin, you can use C# as a single language for iOS, Android, and Universal Windows apps. Apps freezing, crashing, or slowing down are the top reasons for a bad review. According to a survey by Dimensional Research, 49 percent of users expect mobile apps to start within two seconds. If an app crashes, freezes, or has errors, 53 percent of users will uninstall it. These problems not only cause existing users to delete your app, but they can also discourage new users from downloading your app. That’s why having visibility into the performance of mobile apps in real time and from real users is so critical—it helps identify customer problems and create great user experiences. We will show you how to handle errors using both native error handling in Xamarin and using Rollbar, which is a dedicated service for remote error monitoring. Below, you can see we’ve created an example app that triggers an exception when the user clicks on a button. The error message will be tracked by Rollbar, including a stack trace where you can see the line of code that caused the error. Rollbar captures errors that occur anywhere in the app. Native error handling in... --- ### Win-Win Deployment Strategies for Modern Apps - Published: 2018-11-13 - Modified: 2023-06-20 - URL: https://rollbar.com/blog/win-win-deployment-strategies-for-modern-apps/ - Categories: topics - Tags: continuous-delivery These days, the biggest change to software development is the frequency of deployments. Product teams deploy releases to production earlier (and more often). Months or years-long release cycles are becoming rare—especially among those building pure software products. Today, using a service-oriented architecture and microservices approach, developers can design a code base to be modular. This allows them to write and deploy changes to different parts of the code base simultaneously. The business benefits of shorter deployment cycles are clear: Time-to-market is reduced Customers get product value in less time Customer feedback also flows back into the product team faster, which means the team can iterate on features and fix problems faster Overall developer morale goes up However, this shift also creates new challenges for the operations or DevOps team. With more frequent deployments, it’s more likely that the deployed code could negatively affect site reliability or customer experience. That’s why it’s important to develop strategies for deploying code that minimize risk to the product and customers. In this article, we’ll talk about a few different deployment strategies, best practices, and tools that will allow your team to work faster and more reliably. Challenges of Modern Applications Modern applications are often distributed and cloud-based. They can scale elastically to meet demand, and are more resilient to failure thanks to highly-available architectures. They may utilize fully managed services like AWS Lambda or Elastic Container Service (ECS) where the platform handles some of the operational responsibility. These applications almost always have frequent deployments.... --- ### How to Show Errors in WordPress - Published: 2018-11-06 - Modified: 2024-03-07 - URL: https://rollbar.com/blog/monitoring-errors-in-wordpress/ - Categories: Code Tutorials, PHP - Tags: PHP WordPress is an open source blogging and website creation tool written in PHP and MySQL. It is a highly flexible content management system (CMS) that enables you to build and manage your website using just your web browser. According to a W3Techs survey, WordPress is used by 31. 8% of all websites. WordPress sites generate errors that can negatively affect users, but they are not reported in tools like Google Analytics. You need to examine server-side logs to determine how often they happen. These errors are not just generated by Wordpress, but by the dozens of plugins and custom themes that businesses add. Common WordPress errors experienced by users include the "white screen of death," “internal server error,” “connection timed out,” and many more. We’ve created an example app to demonstrate how errors are handled in WordPress. Also, we’ll show you how Rollbar can help you monitor and display errors on a dashboard. Rollbar will show you the error message along with contextual information to see the impact and debug the root cause. Native WordPress error logging WordPress has a built-in mechanism to log errors but it's not enabled by default. To turn it on, add the WP_DEBUG constant in your wp-config file. WordPress will turn on debugging and generate a debug. log file under {your website}\wp-content\debug. log. define ('WP_DEBUG',true); WordPress does not create debugging logs by default because it displays all the PHP errors on the live site. To prevent errors from being displayed and only record them in... --- ### Stacktrace Enhancements - Code Context in each Traceback Frame - Published: 2018-10-26 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/stacktrace-enhancements-code-context-in-each-traceback-frame/ - Categories: product - Tags: stacktrace Rollbar item stacktrace has a new UI and this change was done to support the new and advanced stacktrace. Users hosting their code on GitHub, GitLab or Bitbucket can now view code context within each frame of the stacktrace! Code context is a new feature in stacktrace through which we show additional lines of code for each entry in a traceback, saving you the trouble of jumping to your source code to figure out where exactly an exception occurred. One of our lovely engineers decided to demonstrate the benefits of the new stacktrace into her workflow. Of course if you're already well aware of the benefits, feel free to check out How to set up code context for your project in our docs. Debugging stacktrace without the code context Let’s go through a Rollbar item where I actually used the code context in the new stacktrace to fix a bug quickly (Easter egg - I realized this was a bug IN the code context feature itself! ) The Rollbar title/exception message for this item reads - AttributeError: 'SCMRepoNotAccessible' object has no attribute 'api_name'. From this, I know that SCMRepoNotAccessible. api_name has failed. From working on this feature, I know that SCMRepoNotAccessible is a custom exception. Now I take a look at the last frame of the stacktrace. From here I see the exact line of code where the error occurred - error_data = e. api_name. Based on this information solely, here's my hypothesis - It looks like we tried to... --- ### How to Monitor Errors in Magento 2 the Easy Way - Published: 2018-10-25 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/how-to-monitor-errors-in-magento-2-the-easy-way/ - Categories: Code Tutorials, PHP - Tags: PHP Magento is the largest open-source eCommerce platform in the world, used by more than 250,000 merchants. While Magento makes setting up a store easier, there is complexity with custom plugins and extensions, and custom site behavior. Sophisticated stores also introduce more opportunity for problems with errors, exceptions, bugs, performance, and more. A critical production issue might not just cost you a sale, but also customer trust. Errors can affect your business in surprising ways. To avoid impacting customers, your team needs visibility into problems that affect user experience to fix issues as quickly as possible. In this post, we’ll show you how to enable exception printing and monitor errors in Magento 2 applications, both using the native exception log and the popular error monitoring solution Rollbar. Rollbar will give you an overview of all the errors happening on your store, how many customers are affected, and debugging information to find the root cause. We will walk you through the process of setting up Rollbar with Magento 2. We’ve created an example app that will trigger an exception when the user clicks on a button. The error message is recorded on Rollbar with a stack trace so you can see the exact line of code that caused the error. Native exception handling in Magento 2 Magento 2 gives you exception logs in a file by default. If you get an error message that says “There has been an error processing your request, Magento exception printing is disabled by default for security... --- ### Enhancements to the Rollbar Deploy API - Published: 2018-10-09 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/enhancements-to-the-rollbar-deploy-api/ - Categories: product - Tags: monitor Rollbar introduced Versions a few months ago, providing developers a way to easily see whether their most recently deployed code changes are introducing new or reactivated errors. As a follow-on improvement, we've updated our Deploys API so you can notify Rollbar immediately when starting a deploy as well as when it completes. Notifying Rollbar immediately when a deploy starts will ensure that notifications about the new version will include as much information as possible, including the number of commits since the previous deploy as well as the user who started the deploy. Read on to see how to use the updated Deploy API to notify Rollbar when your deploy starts and finishes. Starting a Deploy For this post I'll show you how to notify Rollbar using a Bash deploy script, but any tool that is able to make HTTP calls can be used to report deploys to Rollbar. The example relies on curl and jq, both of which can be downloaded and intalled for free, and come pre-installed in many environments. At the start of your deploy script, you'll need to send a POST request to report a new deploy and save the deploy_id into a variable so it can be used later: # ... # set variables for the POST command ROLLBAR_ACCESS_TOKEN=YOUR_POST_SERVER_ITEM_ACCESS_TOKEN_HERE ENVIRONMENT=development GIT_SHA=YOUR_GIT_SHA_HERE # ... ROLLBAR_DEPLOY_ID=`curl https://api. rollbar. com/api/1/deploy/ \ --form access_token=$ROLLBAR_ACCESS_TOKEN \ --form environment=$ENVIRONMENT \ --form revision=$GIT_SHA \ --form local_username=$USER \ --form status=started | jq -r '. data. deploy_id'` # Additional steps for your deploy... Running deploys... --- ### Error Monitoring in Symfony - Published: 2018-09-27 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/error-monitoring-in-symfony/ - Categories: Code Tutorials, PHP - Tags: SDK Symfony is a PHP model-view-controller framework used to develop web applications. The main reasons Symfony has acclaimed fame among the developer community are its database engine compatibility, its faster development and its robust system. These features make it easy to develop and customize web applications. To make your web application successful, you should consider how user experience is affected by the inevitable errors that pop up in production. Customers can walk away from a purchase or churn out from a subscription when applications do not run properly. A fast response to critical problems is essential. To minimize customer impact, it is important to track and fix issues quickly. In this tutorial, we’ll show you how to add native error handling so you can capture handled and unhandled errors. Doing so lets you present a clear message to the user as well as track the error to prioritize fixes. Then, we’ll show you how to monitor errors using Rollbar. Rollbar is an error monitoring service that tracks errors centrally and gives you tools to better monitor and troubleshoot problems in production. We'll show a working example for Symfony 3, but Rollbar also supports Symfony 4. Native error handling in Symfony 3 Starting at the most basic level, error handling can be achieved using try, catch and finally statements. These statements can be used to handle caught exceptions in Symfony components. try { $value = 5 / 0; } catch (\Exception $e) { return $e->getMessage } Symfony 3 also offers multiple approaches... --- ### Error Handling in React Native > Learn how to catch unhandled exceptions in React Native, perform tasks to provide the best experience for users, and handle these errors using our SDK. - Published: 2018-09-20 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/error-monitoring-in-react-native/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript React Native has recently gained popularity among the mobile app developer community due to its cross platform compatibility, quick development cycle and better user experience. It is easier to develop, build and maintain apps using React Native. For mobile apps, business success or failure is determined by user experience and retention rate. The retention rate can drop immediately if the application does not work properly, causing customers to switch to other apps or leave poor reviews in the app store. A fast response to critical errors is essential to minimize customer impact. Let’s start by covering how to handle errors in vanilla React Native. We will then show you how Rollbar is a game changer to get better error monitoring. How to handle errors in React Native Error handling in vanilla JavaScript can be achieved using try, catch and finally statements. You can use these statements to handle caught exceptions in React Native components. try { var test; test. color; } catch(err) { // handle error here } React Native has its own mechanism to handle uncaught exceptions. This allows you to track the error, display a message to the user, or attempt to recover. See the example below: const previousHandler = ErrorUtils. getGlobalHandler; ErrorUtils. setGlobalHandler((error, isFatal) => { // handle the error here console. log(error); }); Logging to the console works fine during development, but there is no out-of-the-box way to track these errors centrally after they are installed. This is essential to see how many of your users... --- ### Introducing Versions - Published: 2018-08-31 - Modified: 2021-07-19 - URL: https://rollbar.com/blog/introducing-versions/ - Categories: product - Tags: monitor We built Versions for customers who are adopting software development practices like Continuous Delivery. One important habit to cultivate when you're seeking to adopt Continuous Delivery is to deploy early and often. This is easier to do when you have a tool like Rollbar that allows you to see all production errors instantly and quickly prioritize and debug them as needed. With Versions, we're making it even easier for you to use Rollbar to monitor errors from code revisions you've just deployed. {: . highlightbox} If you haven't heard about All Items View - another Advanced feature we've broadly released recently - I encourage you check out this post. What Versions is for Versions allows you to see all new and reactivated errors from each deployed code version across multiple projects in your account, from a single screen. This feature comes in handy if you deploy continuously or have multiple code versions running in production. With Versions, it’s easy to tracking how the quality of each deployed version improve or regress over time. Triaging becomes easier too, because each version entry comes with information on who deployed it, which errors have been resolved, and which have not. Versions is deploy pattern agnostic, so it works with any pattern you use, including canary, blue/green, or anything else. It gives you the information that helps you decide whether to do a full rollout or a rollback. In addition to the account-level Versions, you also get a project-level Versions feed for each of... --- ### Introducing All Items View - Published: 2018-08-30 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/introducing-all-items-view/ - Categories: product - Tags: error-feed Increasingly more software teams - ourselves and our customers included - are adopting practices like microservices and/or Continuous Delivery. What this typically means in terms of how our customers use Rollbar is two-fold: First, they set up multiple projects in Rollbar. A common setup is to have one project for each code repository of a deployable service. Second, they deploy to production often. Each time they deploy a release, they monitor Rollbar Items feed closely for errors. We built the All Items View to make error monitoring much easier for those using Rollbar in such ways. What All Items View is for The All Items View is very useful when you want a specific view across projects, because you can apply filters or search across them to create that view. For example, you're a Front-end Engineer and you have 10 different Rollbar projects, and you want to see specifically just the JavaScript errors from those ten. It's also handy when you are tasked to monitor multiple Rollbar projects as part of a deployment, because you can see not only the errors across projects, but also if they've been assigned to anyone and triage accordingly - all from a single screen. Sometimes errors from different projects may be correlated. A client-side error may result from a database error, and so on. All Items View makes it easier for you to notice such correlations. Try it yourself All Items View is one of two new features we've been incubating in Labs for... --- ### Error Monitoring in iOS - Published: 2018-08-30 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/error-monitoring-in-ios/ - Categories: Code Tutorials - Tags: mobile In mobile apps, it’s important to monitor errors so you can understand your user’s experience. Your team should know quickly when there are problems with the app itself or your backend services so you can fix the issue before more customers are affected. We’ll show you how to handle errors in iOS apps. We’ll then show you how Rollbar error monitoring can give you better visibility into errors and help you troubleshoot them faster. Native error handling in iOS There are multiple ways to implement exception handling in Objective-C and Swift. We’ll focus on Swift in our examples as its a newer language. You’ll commonly use NSError to create runtime errors and use do-catch statements to handle them: do { throw NSError(domain: "my error description", code: 42, userInfo: ) } catch let error as NSError { // handle the error print("Caught NSError: \(error. localizedDescription), \(error. domain), \(error. code)") } Swift also offers a mechanism to handle uncaught exceptions. This allows you to track the error, display a message to the user, or attempt to recover. See the example below. NSSetUncaughtExceptionHandler { exception in // handle the error print("Uncaught exception", exception) } This lets you easily track the error in logs during development. However, it doesn’t offer an easy way to track errors once the app is installed on your customer’s phone. Error monitoring with Rollbar Rollbar offers an easy way to track exceptions and errors in your apps. It automatically captures errors that occur anywhere in the app, and reports... --- ### Error tracking with Vue.js - Published: 2018-08-09 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/error-tracking-with-vue-js/ - Categories: Code Tutorials, JavaScript - Tags: error-handling, vuejs Vue (pronounced /vjuː/, like view) is a progressive framework for building user interfaces on the web. Vue can power sophisticated single-page applications and is often used in combination with modern tooling and supporting libraries. We’ll show you how to add error handling in a Vue application to capture caught and uncaught errors. This gives you an opportunity to recover and update what’s presented to the user, as well as track the error to prioritize fixes. We’ll also show how to monitor errors in production using Rollbar. How to handle errors in vanilla Vue You can catch exceptions in vanilla JavaScript using basic try, catch and finally statements. You can use these statements to handle caught exceptions in Vue components. In this example, we are simply logging to the console. try { JSON. parse("non-JSON data") } catch(e) { console. log('Exception: ', e) } Vue provides a standard API to add a custom errorHandler. You should configure this on your root Vue instance, typically in a main. js file. However, it only captures errors that occur during component rendering. That means it won’t catch errors that happen later as a result of user behavior, etc. Vue. config. errorHandler = err => { console. log('Exception: ', err) } To handle errors globally across your entire page, you can add a handler to the onerror function on the window. window. onerror = function(message, source, lineno, colno, error) { console. log('Exception: ', error) } While this is great for handling errors during development, when you... --- ### Top 10 PHP errors from 1,000+ projects (and how to avoid them) - Published: 2018-07-30 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/top-10-php-errors-from-1000-projects-and-how-to-avoid-them/ - Categories: topics - Tags: Top Errors To give back to our community of developers, we looked at our database of thousands of projects and found the top 10 errors in PHP apps. We’re going to show you what causes them and how to prevent them. Avoiding these "gotchas" will make you a better developer. Because data is king, we collected, analyzed, and ranked the top 10 PHP errors. Rollbar collects all the errors for each project and summarizes how many times each one occurred. We do this by grouping errors according to their fingerprints. We group two errors if the second one is just a repeat of the first. This gives users an excellent overview instead of an overwhelming big dump like you’d see in a log file. We focused on the number of projects experiencing an error because we wanted to see the errors that affect the most developers in different companies. If we looked only at the number of times each error occurred, high-volume customers could overwhelm the data set with errors that are not relevant to most readers. The errors below are the ones most likely to affect you and your company. We'll describe each error in more detail starting with the most common. At the end, we'll share best practices to avoid shipping them to production. 1. PHP Parse error: syntax error, unexpected end of file A parse error occurs when code that contains a syntax error is executed. Syntax errors needn’t be large, not complicated, as the following example demonstrates. $test=... --- ### Error monitoring in Golang - Published: 2018-07-03 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/error-monitoring-in-golang/ - Categories: Code Tutorials - Tags: golang Rollbar is proud to announce its error monitoring SDK for the Go language (aka Golang). It’s an open source programming language originally created by Google and is growing in popularity. It’s a low-level language like C, but also offers garbage collection, an easy-to-use package system, and other features. If you’re used to languages like Java or Javascript, then Go’s way of handling errors will be new to you. We will give a brief introduction on how error handling works in Go, then cover how you can monitor errors in production apps. Using the error type Go uses an error type to indicate an abnormal state. For example, the os. Open function returns an error value when it fails to open a file. Many people think this is more clear than throwing an error or returning a nil value. The error type is an interface that you can implement to create your own errors. The error interface requires an Error method which returns a string. This allows you to print errors out in the console or in a log message. Specific error implementations might have additional methods. type error interface { Error string } Go also allows you to implement functions with multiple return values. This is commonly used to provide one value upon success, and a second value upon an error. Let’s dive into an example showing how we can handle multiple return values. Below, the calculateSqrt function will return an error when you pass a negative number. That’s because... --- ### Errors on the world’s top 100 websites and how to avoid them - Published: 2018-06-13 - Modified: 2023-04-27 - URL: https://rollbar.com/blog/errors-on-the-worlds-top-100-websites-and-how-to-avoid-them/ - Categories: topics - Tags: Top Errors When you think of the top 100 sites in the world, you think of high-traffic domains and pages coded to perfection. In fact, even the most popular sites in the world have errors hidden behind the scenes that are still visible in your browser’s developer tools. These can affect your experience as a user directly, create inaccurate tracking data and security vulnerabilities, and even lose the company revenue. We found that most of the top 100 sites had several errors which could be easily monitored and prevented by their IT team. If errors happen on these popular sites, it can happen on your company’s website too. We’ll show you the most common errors and how to avoid them. {: . imgcaption} Overview of Errors found on the Top 100 Alexa Sites How We Found The Errors We used Alexa's ranking to identify the top 100 websites based on number of visitors. We visited each of these websites using the popular Google Chrome browser and disabled all extensions to capture the most native experience. We then recorded which errors displayed in the developer tools console. You can see these errors yourself by opening your browser’s developer tools feature. In Chrome it’s in the menu under More tools -> Developer tools. Here is what it looks like at Huffington Post: {: . imgcaption} Chrome Developer Tools showing a list of HuffingtonPost errors That’s a mess to read! We’ll make it easier to understand by grouping these errors into common themes. Then, we’ll... --- ### Data, Privacy, and Compliance - How We Prepared for GDPR - Published: 2018-05-21 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/data-privacy-and-compliance-how-we-prepared-for-gdpr/ - Categories: product - Tags: security Over the past couple of months it has been very difficult not to overhear conversations about GDPR and its implications on how we build and maintain software. Some were particularly memorable. "No, I can't fire you right now, not when we're a month away from GDPR! " - Random person overheard yelling on the phone in San Francisco At Rollbar, we've been working hard to be ready. This is a story about how we prepared for GDPR. What is GDPR? GDPR{:target="_blank"} is a new, EU-wide regulation that replaces the 1995 EU Data Protection directive. It strengthens the privacy and control EU residents have over their personal data, and is broad in reach because any organizations that process data on EU residents must be compliant, even if they aren't based in the EU. Failure to comply may result in severe penalties of up to 4% of an offending organization's global revenue. GDPR challenges To us, GDPR changes everything. We've gone from a world where data is always an asset, to one where data is both an asset and a liability. This fundamentally changes how we think about collecting, keeping, and deleting data, and where the value for our customers is in each of those things. We were faced with a few challenges in this project, including: Hard deadlines We practice agile software development. What that means to us is while we have a rough idea of when we'd like to release a feature, the exact release date depends on the progress... --- ### Monitoring Errors in Android Apps - Published: 2018-05-09 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/monitoring-errors-in-android-apps/ - Categories: Code Tutorials, Java - Tags: java When developing mobile apps it’s important to monitor errors so that you can understand your user’s experience. You need deeper insight than just a crash report because errors could cause a degraded user experience or a drop in key behavioral metrics. Your team needs to know quickly when there are production problems either with the app itself or with your backend services so you can fix the issue before more customers are impacted. Rollbar’s Android SDK lets you track and analyze errors that happen in your Android native applications, and even trace problems to backend services and third party APIs. It provides you with a live error feed from your application, including complete stack traces and contextual data to debug errors quickly. We also track the environment the error is coming from (prod or staging), the server that generated the error, and even the user’s session data. You can then quickly assign ownership of errors to your team and track when they are fixed. Learn more about Rollbar’s product features for Android. Below, you can see that we've created an example app that triggers an exception when the user clicks on a button. The error message is tracked in Rollbar, including a stack trace where you can see the line of code that caused the error. Rollbar captures errors that occur anywhere in the app. You can follow along with our example using the source code on GitHub. Adding Rollbar in your code Visit https://rollbar. com and sign up for... --- ### Top 10 errors from 1000+ Ruby on Rails projects (and how to avoid them) - Published: 2018-04-18 - Modified: 2022-11-08 - URL: https://rollbar.com/blog/top-10-errors-from-1000-ruby-on-rails-projects-and-how-to-avoid-them/ - Categories: topics - Tags: Top Errors To give back to our community of developers, we looked at our database of thousands of projects and found the top 10 errors in Ruby on Rails projects. We’re going to show you what causes them and how to prevent them from happening. If you avoid these "gotchas," it'll make you a better developer. Because data is king, we collected, analyzed, and ranked the top 10 Ruby errors from Ruby on Rails applications. Rollbar collects all the errors for each project and summarizes how many times each one occurred. We do this by grouping errors according to fingerprinting. Basically, we group two errors if the second one is just a repeat of the first. This gives users a nice overview instead of an overwhelmingly big dump like you’d see in a log file. We focused on the errors most likely to affect you and your users. To do this, we ranked errors by the number of projects experiencing them across different companies. We intentionally looked at the number of projects so that high-volume customers wouldn't overwhelm the data set with errors that are not relevant to most readers. Here are the top 10 Rails errors: You’ve probably noticed some familiar faces in there already. Let’s dig in and take a look at the errors in a bit more detail to see what might cause them in your production application. We'll provide example solutions based on Rails 5, but if you’re still using Rails 4 they should point you in the... --- ### 5 Surprising and Sneaky Ways Errors Impact Your Business - Published: 2018-04-16 - Modified: 2022-12-07 - URL: https://rollbar.com/blog/5-surprising-and-sneaky-ways-errors-impact-your-business/ - Categories: topics - Tags: error-monitoring Every app is imperfect and generates errors, but do you know how errors affect your users and business? When you look at logs for a large application, you might see thousands of errors per day and not know where to start. Even worse are errors that are not tracked by your application. They could be buttons that stop working, input that isn’t saved, or any number of other issues. Without proper error tracking, you are flying blind to these user experience problems. Unfortunately, developers who are deep in the code are not expected to understand how these errors impact users, and ultimately, their company’s finances. Even if they know of an error that should be fixed, it can be difficult to articulate why they should be fixed instead of developing a new feature. Here are five ways developers can advocate to management about the importance of fixing errors. User Experience Customers don't report the vast majority of errors they encounter in your product or website. That means you could miss a large percentage of problems if you aren’t tracking and addressing them proactively. If a customer experiences a critical error during a trial period or onboarding you might lose that customer before they even get started. Established customers may be more understanding, but repeated errors over time can lead to death from a thousand cuts. Knowing who was affected by a problem and proactively reaching out can turn a frustrated user into a devoted one. Shortcut co-founder and CTO Andrew... --- ### New Relic vs Scout: Which APM is right for you? - Published: 2018-04-05 - Modified: 2022-11-30 - URL: https://rollbar.com/blog/new-relic-vs-scout/ - Categories: product - Tags: APM This is a guest post by Derek Haynes from Scout, an APM that integrates with Rollbar. When New Relic launched ten years ago, web applications had a tendency to fail hard and in more obvious ways: Today, it's easier to build resilient apps, but they fail in more complex, unique, and subtle ways. These issues are time-consuming to track down. While several niche New Relic alternatives have appeared, they've focused on a lighter feature set versus solving these increasingly hard performance problems. What is new relic used for? New Relic is a Software as a Service offering that focuses on performance and availability monitoring. It uses a standardized Apdex (application performance index) score to set and rate application performance across the environment in a unified manner. What does new relic do? New Relic is observability software that teams use it to monitor the performance of their applications and infrastructure. New relic tracing New Relic APM provides trace visualizations designed to help you quickly understand why a specific request is slow, where an error originated, and where you can optimize your code to improve the experience for your customers. Unlike existing "New Relic Lite" alternatives, Scout approaches performance monitoring much like Rollbar's best-of-breed error monitoring. Scout is designed to drastically reducing the investigation time for these complex performance issues. Let's investigate a modern-day performance issue with Scout and compare the experience to New Relic. A sudden increase in response time You hop into Scout and see this chart: There's a clear... --- ### Error monitoring in ASP.NET MVC - Published: 2018-03-07 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/error-monitoring-in-asp-net-mvc/ - Categories: .NET, Code Tutorials - Tags: dotnet ASP. NET MVC is a modern web development framework that combines the features of MVC (Model-View-Controller) architecture for better separation of concerns and the best parts of the ASP. NET platform. We’ll show you an example of how to catch errors and exceptions in ASP. NET MVC using a global action filter. We’ll also show you how to track them in Rollbar’s error monitoring service. This will give you real time visibility into your errors in production. It also captures person data and other context from your app so you can solve errors faster. Above, you can see that we've created an example app that triggers an an exception when the user clicks on a button. The error message is tracked in Rollbar, including a stack trace where you can see the line of code that caused the error. Create a global action filter To track all of our exceptions, we have multiple approaches in . NET. Using a global action filter is the easiest way to catch all the exceptions. It receives uncaught exceptions for your whole application, not just an individual controller. We’ll show you how to override it to create your own global action filter with exception tracking. Here are some simple steps to create global action filter in your application. Open up your own ASP. NET MVC project or use our open source example on GitHub at Rollbar-Dotnet-Example. You can use this filter to add any error monitoring solution, but we will show an example of... --- ### Send Rollbar Error Alerts to Cisco Spark - Published: 2018-03-01 - Modified: 2025-04-22 - URL: https://rollbar.com/blog/send-rollbar-error-alerts-to-cisco-spark/ - Categories: product - Tags: integrations Cisco Spark is a enterprise collaboration platform from Cisco that includes messaging, video conferencing, desk phones, and digital whiteboards to mention a few. If your organization uses Cisco Spark, using Rollbar with it has just got easier. Depending on your setup, you can now receive Rollbar alerts not just in your messaging apps but also on that giant screen in the meeting room. As a Cisco Spark customer you've invested a lot in enabling enterprise collaboration. With this new Rollbar integration, you can further extend the value of the platform for your engineering teams. You can now get notified directly in Cisco Spark when certain situations occur, such as when a new error is detected by Rollbar, or when an error occurs at a very high volume within a specified time period. If you've enabled deploy tracking in Rollbar, you can also notify Cisco Spark of deploys. Rollbar alerts in Cisco Spark: As always, you can customize what alert notifications Rollbar should send. You can also configure which space in Cisco Spark the alerts should go to. Cisco Spark integration settings in Rollbar: For more instructions on how to enable this integration for your account, check out our Docs page{:target="_blank"}. Please feel free to reach out if you have any questions! If you haven’t already, sign up for a 14-day free trial of Rollbar and reduce production issue resolution times. --- ### Announcing Our New .NET Error Monitoring SDK - Published: 2018-02-12 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/announcing-our-new-net-error-monitoring-sdk/ - Categories: product - Tags: dotnet Rollbar is happy to announce our official . NET error monitoring SDK. This new . NET SDK is more rreliable, supports all of the popular . NET platforms (NET Standard, . NET Framework, . NET Core, ASP. NET MVC, UWP, Mono, Xamarin), easy to configure, multithreading friendly, and more. Rollbar helps you monitor errors in production applications. It provides you with a live error feed from your applications, including complete stack traces and contextual data to debug errors quickly. It also lets you easily understand your user experience by tracking who is affected by each error. Check out our features page to learn more about how it can help you. {: . imgcaption} . NET error monitoring, as seen in Rollbar Improvements Multi-target support including . NET Standard 2. 0 and up, . NET Framework (or Full Framework) 4. 5 and up, and . NET Core 2. 0 and up. It also supports UWP, Mono, and Xamarin. Native asynchronous (“fire-and-forget”) implementation. Due to its async nature the SDK has very little impact on its host at runtime. A blocking (synchronous) implementation of the same methods is also available. Rate limiting and buffering of all messages. Automatic retries in case of network failure. Person information is now a part of a notifier configuration object, including field scrubbing for privacy. Improved interface by separately defining ILogger and IRollbar. ILogger also now supports chaining calls. Multiple instances of the notifier can be separately and differently configured, including different access tokens. Easier configuration including... --- ### New Integration - Auto-create Shortcut stories with error data from Rollbar - Published: 2018-02-09 - Modified: 2022-12-07 - URL: https://rollbar.com/blog/new-integration-auto-create-shortcut-stories-with-error-data-from-rollbar/ - Categories: product - Tags: triage At Rollbar, we use Shortcut to manage our software projects. One of the many ways we use it is for tracking issues in product releases. We'd have an epic in Shortcut for each release, and create stories for bugs associated with the release that we need to fix. This is especially useful when we're working on service packs. If you're not familiar, Shortcut is a project and product management software designed for agile software teams. With this integration, you can now automatically: Create a story in Shortcut for a Rollbar error, based on rules you set Include in the story the stack trace and a link to the error details data in Rollbar Mark the story resolved in Shortcut when it's resolved in Rollbar Change the status of a Shortcut story when an error is re-activated Shortcut integration settings in Rollbar: Shortcut story from a Rollbar error: To get started, check out this integration guide from Shortcut. Let us know if you have any questions, or tell us what you think! If you haven’t already, sign up for a 14-day free trial of Rollbar and stop flying blind in production. --- ### Introducing the Account Dashboard - Published: 2018-02-07 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/introducing-the-account-dashboard/ - Categories: product - Tags: monitor {: . highlightbox} Update: As of Aug 1st, 2018 we've made Account Dashboard available to all users, including those on Essentials plans. The Account Dashboard for users in Advanced plans also includes information on deploys and when they took place. As part of this general release, we've removed the Labs label from the Account Dashboard feature. We are excited to release our new Account Dashboard! The Account Dashboard gives your engineering team insight into errors across multiple Rollbar projects. This insight provides an overview of how each application and service is performing, so you can quickly identify and drill down into problem areas and error trends. Your browser does not support the video tag. In today’s microservices world, applications consist of multiple services that interact together to deliver the full user experience. There is the client side of the application that the user typically sees, which may be a webpage or mobile app. Behind that, there may be an application server and multiple API services, often owned by separate development teams. This makes the job of monitoring more complex because you need to monitor all the services at once. Errors or a loss of availability in any one service can result in cascading failures to downstream services, and ultimately the user. Check out what Jason Kozemczak, Tech Lead at Instacart had to say about the Account Dashboard. The Account Dashboard makes it even easier than before to understand the overall health of the Instacart product as well as individual teams/systems... --- ### Debugging JavaScript with Source Maps > Minified JavaScript code generates source maps that can help trace and debug problems back to the exact line of source code. - Published: 2018-02-06 - Modified: 2022-06-17 - URL: https://rollbar.com/blog/debugging-javascript-with-source-maps/ - Categories: product - Tags: JavaScript One of the frustrating situations I often encounter when debugging JavaScript, is tracking down JavaScript errors to line 23 col 63475. I felt as though I was right on the edge of seeing the offending code and being able to fix it. And then, reality came crashing down. I realized that I’ve managed to debug myself right into the middle of a minified JavaScript file . There is a better way - Source Maps. JavaScript source maps are the key to taking what you’ve narrowed down in the minified code, and then being able to map them back to the source code so that you can view and resolve the problem without having to figure it out in the minified code. Source maps are generated when JavaScript code is minified. By using the source map in production, you can trace your problems back to the exact line of source code. It also allows you to use your browser's developer console to step through the source code when debugging problems. We’ll look at how to generate a source map, and then we’ll look at how they work, and how we can use them to make our lives easier. You can download or clone the source for the following demo from https://github. com/echovue/javascript-calculator. The source includes the original JavaScript file, the minified JavaScript file, and the source map. If you already know how to generate a source map or just want to use the generated file, you can skip down to How... --- ### Top 10 JavaScript errors from 1000+ projects (and how to avoid them) - Published: 2018-01-24 - Modified: 2022-06-20 - URL: https://rollbar.com/blog/top-10-javascript-errors-from-1000-projects-and-how-to-avoid-them/ - Categories: topics - Tags: JavaScript To give back to our community of developers, we looked at our database of thousands of projects and found the top 10 errors in JavaScript. We’re going to show you what causes them and how to prevent them from happening. If you avoid these "gotchas," it'll make you a better developer. Because data is king, we collected, analyzed, and ranked the top 10 JavaScript errors. Rollbar collects all the errors for each project and summarizes how many times each one occurred. We do this by grouping errors according to their fingerprints. Basically, we group two errors if the second one is just a repeat of the first. This gives users a nice overview instead of an overwhelming big dump like you’d see in a log file. We focused on the errors most likely to affect you and your users. To do this, we ranked errors by the number of projects experiencing them across different companies. If we looked only at the total number of times each error occurred, then high-volume customers could overwhelm the data set with errors that are not relevant to most readers. Here are the top 10 JavaScript errors: Each error has been shortened for easier readability. Let’s dive deeper into each one to determine what can cause it and how you can avoid creating it. 1. Uncaught TypeError: Cannot read property If you’re a JavaScript developer, you’ve probably seen this error more than you care to admit. This one occurs in Chrome when you read a... --- ### Monitoring tools for serverless environments and AWS Lambda - Published: 2018-01-08 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/monitoring-tools-for-serverless-environments-and-aws-lambda/ - Categories: Code Tutorials - Tags: AWS-lambda Serverless computing platforms like AWS Lambda represent a new computing paradigm. Over the past decade, we’ve been trying to abstract the application layer from the infrastructure layer. VMs started this by virtualizing hardware servers, and Docker containers extended this by packaging just the application code separate from the host system. The next step in this process is to completely remove the host from the equation, and simply focus on the application code—which is what serverless computing is all about. But as with most things new, serverless forces you to change how you used to do things, including the way you monitor functions. Below, I explain how monitoring changes in a serverless environment. I focus on Lambda in particular, although most of these observations apply to any type of modern serverless platform. How monitoring is different with serverless In traditional client-server apps, you typically monitor the performance of your servers, network latency, and more. However, with serverless platforms like Lambda, these metrics are irrelevant. This is because the vendor manages the underlying servers and plumbing, leaving you to focus exclusively on your application code. This means you don’t need to worry about how much compute power your servers have available to execute your code. Lambda automatically scales the available compute capacity to ensure your code is executed (there’s a caveat, but more on that later). You don’t have to worry about load balancing across multiple servers, or optimizing network latency. AWS takes care of this, too. Serverless metrics to monitor Yet... --- ### What We Shipped in 2017 - Published: 2017-12-28 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/what-we-shipped-in-2017/ - Categories: product - Tags: monitor At Rollbar, 2017 has been a year of exciting growth and development for the product and the team. We've grown the total number of users to over 100,000, processing billions of events per week, and the team has more than doubled in size. I know it's cliche, but, it genuinely does feel like we're just getting started. ;-) Before we put this year behind us and speed into 2018, I thought we'd look back, and share some of the highlights of what we shipped in 2017. Error Notifier SDKs PHP SDK 1. 0+ JavaScript SDK 2. 0+ Lambda support for Python and Node Laravel SDK Java and Android SDK 1. 0+ React Native SDK (Alpha) iOS SDK 1. 0+ Product Features JavaScript Telemetry JavaScript Source Maps Major JavaScript source map updates Un-minify JavaScript method names Automatic JavaScript source map processing Error Merging and Grouping Error merging and unmerging Edit and merge multiple errors at once Export RQL results as CSV View errors in each deploy Security and Compliance Compliance Compliant SaaS (HIPAA and ISO 27001) Security Encryption at rest Integrations GitLab source control and issues GitHub Marketplace Love and use Rollbar? We value your feedback. What do you think of our new features and improvements in 2017? What sort of things would you like to see shipped in 2018? Please leave a comment below this post or connect with us at hi@rollbar. com. If you haven’t already, signup for a 14-day free trial of Rollbar and let us help you... --- ### Spring MVC Exception Handling and Monitoring - Published: 2017-11-27 - Modified: 2023-01-19 - URL: https://rollbar.com/blog/spring-mvc-exception-handling-and-monitoring/ - Categories: Code Tutorials, Java - Tags: java The Spring Famework is the most popular framework for Java according to hotframeworks. com. It provides a model view controller (MVC) architecture and readily available components to develop flexible and loosely coupled web applications. If you are new to Rollbar, it helps you monitor errors in real-world applications. It provides you with a live error feed from the application, including complete stack traces and request data from the browser to debug errors quickly. It lets you easily understand user experience by tracking who is affected by each error. Learn more about our Java error monitoring product features. While Rollbar’s notifier works with any Java application, we’re going to show you how to set it up with Spring and how to try it out yourself with a working example app. Create a global exception handler To track all of our exceptions in Spring, we’ll be making use of a global exception handler. This receives uncaught exceptions for your whole application, not just an individual controller. Spring offers two main approaches: 1. ControllerAdvice When you create a class annotated with @ControllerAdvice{:target="_blank"}, it will handle exceptions created by all your controllers. Each controller advice defines a method with a @ExceptionHandler annotation which becomes the default handler. You can insert your custom code to print or track errors there. ControllerAdvice is only available in Spring 3. 2 and above. We won’t be covering this approach in detail but you can see our working example on GitHub{:target="_blank"}. You will need to uncomment the annotation at... --- ### Announcing Our New Java Error Monitoring SDK - Published: 2017-11-17 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/announcing-our-new-java-error-monitoring-sdk/ - Categories: product - Tags: java Rollbar is proud to announce the first official 1. 0 release of our Java notifier SDK for error monitoring. Java continues to be one of the world’s most popular programming languages. It’s the most sought-after language for employers and has the second most pushes on GitHub according to Stackify’s 2017 rankings{:target="_blank"}. Rollbar helps you monitor errors in real-world applications. It provides you with a live error feed, along with stack traces and contextual data to debug errors quickly. It's important to select an error monitoring solution that supports all the languages your company uses for a clear picture across your whole stack from the front end to the back end. Some competing solutions just don't give you that full visibility. Learn more about our product features for Java. This new version of our Java notifier SDK supports many frameworks including web apps, Android, Scala, Kotlin, Spring MVC, and more. In web applications, it captures data about the request including the user's IP address and browser so you can narrow the problem down. It helps you identify root cause quickly, by giving you contextual data on what changed and when from your source control and deployment systems. You can also react proactively by seeing which users were affected and prioritize fixes. {: . imgcaption} Grouped Java exceptions, as seen in Rollbar Additional improvements in our 1. 0 release include: Support for both Gradle and Maven build systems. Synchronous and asynchronous senders, so that your application does not block sending events to... --- ### Laravel error reporting now available - Published: 2017-10-30 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/laravel-error-reporting-now-available/ - Categories: product - Tags: PHP We're happy to introduce our latest error reporting SDK, for Laravel, which tracks and reports errors that happen in your Laravel applications. Laravel is a popular and powerful MVC framework for PHP, designed for developers who need a simple and elegant toolkit to create full-featured PHP web applications. In real-world production applications, it’s important to monitor errors so you understand your user’s experience and can fix issues before more are impacted. Rollbar helps by providing you with a live error feed from your application, including complete stack traces for instant visibility. To give you more context to debug problems, we also track the environment the error is coming from (prod or staging), the server that generated the error, and even the user’s session. Learn more about Rollbar’s product features. Below, we'll show you how to add Rollbar error reporting to your Laravel apps and even give you a code example that you can try yourself. Laravel error reporting with Rollbar Here are some simple steps describing how to integrate Laravel SDK in your code. You can find more details in the Laravel Documentation. Sign up for a Rollbar account if you haven’t done so yet. Create your project and select Other from the list of notifiers. Copy the server side access token that is generated for you. You’ll need this to configure Rollbar in the steps below. Open command prompt in your project directory and type following command to install the Laravel notifier SDK. composer require rollbar/rollbar-laravel Add the project... --- ### Custom error handling for Angular - Published: 2017-10-24 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/custom-error-handling-for-angular/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript Angular 2+ and AngularJS (version 1) are popular open-source JavaScript MVC frameworks that let you build highly structured, testable and maintainable front-end applications. Angular is most commonly used on single-page applications. Stable and reliable single-page applications depend on solid client-side error monitoring tools and techniques. But getting the right exception data and context isn’t always easy. We’re going to dive into how to capture, handle and debug Angular errors. Error handling in vanilla JavaScript consists of using try, catch and finally statements. You can also use these statements in Angular modules. However, Angular has a special logic to handle uncaught exceptions. We’ll show you how to create custom error handlers for Angular that you can override to add your own functionality. Error logging in Angular The ErrorHandler class in Angular 2+ provides a hook for centralized exception handling. The default implementation of ErrorHandler prints error messages to the console. This service is very simple by design. To intercept the error handling we need to write a custom handler. On the other hand, uncaught exceptions in AngularJS are all funneled through the $exceptionHandler service. When unmodified, $exceptionHandler sends all uncaught exceptions to the $log. error service. The $log. error service passes the error through to the client’s console. Here’s how you can create your own error handler: Angular 2+ AngularJS 1. X class ErrorHandler { constructor {} handleError(error: any): void; } $exceptionHandler(exception, ); In Angular 2+ the handleError(error: any): void method allows you to implement your own code to do something... --- ### Error Boundaries in React 16 - Published: 2017-10-11 - Modified: 2023-01-19 - URL: https://rollbar.com/blog/error-boundaries-in-react-16/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript React recently announced the release of version 16 with long standing feature requests including error boundaries, fragments, improved server-side rendering and more. Error boundaries are especially useful so that an error in one small part of the UI doesn’t break your entire application. Instead, it’s better to contain those errors to the affected components and recover gracefully. JavaScript error logging. When you open this page, you can activate an error boundary by clicking at least five times on the counter. You will then see the error message “Something went wrong. ” Let's dive deeper into this example to learn how error boundaries work. What are error boundaries? Error boundaries are React components that catch JavaScript errors anywhere in their child component tree. They can log errors and display a fallback UI to replace the component tree that has crashed. They are similar to try-catch statements in your code, but surround page elements instead. An error boundary is a React component with a componentDidCatch(err, info) method. Any errors occurring in a component tree get reported up to the nearest error boundary’s componentDidCatch function. Note that error boundaries only catch errors in the components below them in the tree. For simple apps, you can declare an error boundary component once and use it for your whole application. For more complex applications with multiple components, you can have independent error boundaries to gracefully recover each part. You can also report these errors to an error monitoring service like Rollbar. This will give you... --- ### Quickly edit and merge many error items at once - Published: 2017-09-20 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/quickly-edit-and-merge-many-error-items-at-once/ - Categories: product - Tags: monitor Rollbar just added a new feature that allows you to quickly edit and merge hundreds or thousands of items at once. In the past, you could only edit or merge items on a single page, which is limited to 30 items at a time. We added a new link that allows you to apply the change to all items in your view or matching a search. This feature provides a similar user experience to how Gmail lets you select all conversions, and then update or delete them. This is useful to perform bulk updates, such as assigning many items from a single component to a developer to fix. You might want to merge multiple errors that are similar but come from different parts of your application. You could also resolve all your errors before doing a deployment so that you have a fresh view with the new version. Thanks to our intelligent fingerprinting rules you only need to merge items once. New occurrences will remain in the merged item. This makes it much easier to manage the items in your account by keeping your view clutter free, and giving you accurate metrics on how often errors occur. As a result, you can focus your attention on new and high-impact errors. If you haven’t already, signup for a 14-day free trial of Rollbar and let us help you take control of impactful production errors. :-) --- ### Introducing AWS Lambda Support for Node.js and Python - Published: 2017-09-07 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/introducing-aws-lambda-support-for-node-js-and-python/ - Categories: product - Tags: SDK We’ve just updated our Rollbar. js and Python libraries, making it easy for you to monitor errors on AWS Lambda. If you’ve been considering building apps with serverless architectures on Lambda, we’ve got the exception tracking covered so you can rest easy. Serverless architectures Serverless architectures have taken resource abstraction to the next level. We've now gone from having servers hosted and managed in the cloud, to having servers that require zero touch and are ephemeral in nature - they're spun up automatically only when certain events are triggered. They also scale out automatically with usage, and whereas before you paid for compute resources you allocated, now you only pay the resources your app actually uses. AWS Lambda In AWS Lambda, currently the most popular service for building serverless apps, how much you use is based on how many times you trigger functions and how long it takes for those functions to execute. Lambda functions come with limits, such as the concurrency execution limits. This is set at account-level and when you hit those limits, throttling kicks in. As a result, your functions don’t get executed and you get errors. This is just one of many things to consider and monitor when architecting your app to run on Lambda. Monitoring errors in Lambda Lambda uses Cloudwatch for monitoring and logging, providing metrics such as number of invocations, execution duration times, throttles, logs, and number of errors from failed invocations. For richer and more granular information on errors that helps you... --- ### Introducing JavaScript Telemetry - Published: 2017-08-16 - Modified: 2022-01-27 - URL: https://rollbar.com/blog/introducing-javascript-telemetry/ - Categories: product - Tags: debug We're excited to introduce JavaScript telemetry, which provides a timeline of events in the browser leading up to when an error occurred. This helps you find the root cause of JavaScript errors faster by providing critical information on user behavior, network activity, and more. You might also think of this timeline of events as a trail of breadcrumbs or a black box recorder which tells you what happened just before a crash or error. In the screenshot below, we see a timeline showing a complete story of how the user encountered an error. First they loaded the page, typed their email address into the sign up form, validated the email, navigated to an onboarding page, and then the error occurred. This gives clear context on what caused the error and which component needs to be fixed. {: . imgcaption} JavaScript telemetry data, as seen in Rollbar Troubleshooting can be difficult and time-consuming If you’re a web developer, you know it can be difficult to reproduce unusual errors and problems reported by users. There are many variables including inconsistent browser environments, unexpected user behaviors, network calls, state changes in the application, and more. Reproducing problems costs your team time in development, QA and support. Unfortunately, if your team cannot reproduce the problem it’s often put on the back burner which can leave users hanging with no resolution. Having enough contextual information can save you time because you can quickly see the cause of the problem without having to manually test different... --- ### Purpose-Built Error Monitoring Alternative to New Relic - Published: 2017-08-08 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/purpose-built-error-monitoring-alternative-to-new-relic/ - Categories: topics - Tags: APM One of the more frequently asked questions we hear is: "Doesn't my existing Application Performance Management (APM) solution, such as New Relic, monitor and track errors in our application? " The short answer is - it’s not enough. They are very complementary and most Rollbar users use both (we do) for various debugging scenarios. APM tools are great at telling you what's slow, when and where exceptions occur. Rollbar provides a lot more contextual information to help you determine what's broken, why they occur, who is affected, and how to fix them. It saves you a substantial amount of time dealing with errors and leaves more time for resolving issues and improving your product experiences. (/why-rollbar/" alt=""> Let’s see how New Relic and Rollbar compare when it comes to monitoring and managing application errors. Features Rollbar New Relic Error tracking ✓ ✓ Error analytics ✓ ✓ Stack traces ✓ ✓ Error frequency heatmap ✕ ✓ Infrastructure monitoring ✕ ✓ Transaction tracing ✕ ✓ Notifications and alerting ✓ ✓ Issue tracker integration ✓ ✓ Filter by host ✓ ✓ Data retention > 8 days ✓ (180 days) ✕ Custom rate limits ✓ ✕ (100 events per minute) Live error view ✓ ✕ Git repo integration ✓ ✕ Map errors to deployments ✓ ✕ Raw payload per error ✓ ✕ Replay requests ✓ ✕ People affected ✓ ✕ Telemetry ✓ ✕ Local variable values ✓ ✕ Custom error grouping rules ✓ ✕ Overview of New Relic's Error Analytics The New Relic APM... --- ### Security matters: Rollbar now offers advanced encryption at rest - Published: 2017-07-19 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/security-matters-rollbar-now-offers-advanced-encryption-at-rest/ - Categories: product - Tags: security Are your services secure? In today’s world, you can hardly go a week without reading in the news about security breaches, malware, and more. We’ve already had headline news this year for Wanna Cry{:target="_blank"}, and now there are dozens of copycat malware programs taking advantage of out-of-date systems. Think of all the services that your company uses from error monitoring to logging and APM. Some of them may be delivered by vendors and others set up by internal teams. Did your IT team evaluate these services to determine how secure they are? If not, you might want to reconsider the services you use or who can best deliver them. Unfortunately, many companies only do the bare minimum due to time constraints, limited budget, lack of expertise, etc. Real security is hard because threats are constantly evolving, and they target the weakest link across all layers of your organization. Companies make good targets because they concentrate data from potentially billions of customers in one place. Their infrastructure can have millions of lines of code that no one person fully understands. They often rely on a complex and poorly monitored network of third-party service providers, offshore contractors, platforms, modules, etc. These all present opportunities to attack. Sophisticated companies evaluate the security of their service providers when making a purchase, and they hold internal services to the same standards. They typically have a checklist of security requirements covering certifications, security audits, data management processes, etc. Companies in the EU or US-regulated industries like... --- ### Merging versus Custom Fingerprinting - Published: 2017-06-23 - Modified: 2021-07-19 - URL: https://rollbar.com/blog/merging-versus-custom-fingerprinting/ - Categories: product - Tags: monitor With the recent announcement of support for manual merging, there are now multiple ways to combine occurrences of errors into a single item. Before merging was an option, if the default fingerprinting algorithm didn’t combine occurrences the way you wanted, then you needed to define custom fingerprinting rules. Custom fingerprinting rules require you to learn our JSON-based rule syntax, and that could be a deterrent against setting them up. Now that you can easily merge errors via the UI, is there still value in setting up custom fingerprinting rules? Absolutely, and this blog post will explain why! Rollbar’s Default Fingerprinting Algorithm To understand merging vs. custom fingerprinting rules, it helps to first look at how Rollbar combines occurrences of errors. Minus a few tweaks we’ve made over the years to optimize results, our default algorithm works as follows: Combine the filenames and method names from all of the stack frames Append the exception class name Take the SHA1 hash of the result The resulting SHA1 hash is what we call the ‘fingerprint’ of the error. All occurrences that have the same fingerprint will be combined into a single item. The default behavior can be changed to include the exception message, or any other occurrence data, when calculating the fingerprint too. This will result in more unique errors in your Rollbar projects, so use it carefully. Custom Fingerprinting Rules The default fingerprinting algorithm is a good start and may be sufficient for many projects, but often you’ll want to tweak the... --- ### Technical details and challenges of building Error Merging - Published: 2017-06-19 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/technical-details-and-challenges-of-building-error-merging/ - Categories: product - Tags: behind-the-scenes Hopefully you've had the chance to try out our latest feature, error merging. We've heard a lot of positive feedback from our users. They're especially excited to be able to easily merge and un-merge related errors. We thought it would be useful to share how the Rollbar team made this happen from a technical standpoint. If you're interested in the nitty-gritty of how we implemented error merging, read on. I interviewed an engineer here at Rollbar who was instrumental in making error merging possible, about what was involved in engineering this feature. First, let's start with why we created error merging in the first place. Our users were asking for the ability to merge (and unmerge) their errors via our UI, as opposed to having to create custom fingerprinting rules. Prior to creating error merging, if you wanted to merge two items together, you created a custom fingerprinting rule, which doesn't apply retroactively. You also could never unmerge items that had been merged together. As the engineer explains it, "custom fingerprinting is extremely static and only applies when the rule is in existence. You can look at an occurrence of an item and extract the fingerprint, and it is always associated with the item. Item merging is very dynamic. You never change the fingerprint of a given occurrence, and that fingerprint could even come from custom fingerprinting. You can change your mind over and over. Merging is a tool for managing complexity. You can take your dashboard from a zillion... --- ### How Shortcut uses Rollbar to monitor JavaScript errors - Published: 2017-06-14 - Modified: 2022-12-07 - URL: https://rollbar.com/blog/how-shortcut-uses-rollbar-to-monitor-javascript-errors/ - Categories: company - Tags: customer-stories I'm eager to share an insightful interview our friends at Changelog recently did with Andrew Childs, CTO at Shortcut and Rollbar power-user. We're big supporters of the Changelog podcast and we asked them, to help us produce a handful of interviews with our customers. It's a fun project that lets us pull back the curtain and learn more about our customers processes for handling errors and deploying code. Read. Listen. Enjoy! Featured in this interview: Adam Stacoviak, Founder & Chief Editor at Changelog, a podcast on software development and open source. Andrew Childs, CTO of Shortcut, an easy-to-use project management tool for software teams. Adam: Andrew, let's start off with you telling me a bit about Shortcut. Andrew: Shortcut is a software company based in New York, building project management software, specifically for software teams that are looking for something simple and flexible but gives them a little bit more visibility into what the whole team is doing and where the team is going at a high level. Adam: How important is error tracking to Shortcut? Andrew: It's really important, because our software isn't perfect. You could see if you looked at our Rollbar, we have a constant stream of errors coming in that need to be fixed. People are leaving these windows open for weeks and they've got all these third-party extensions loaded, and those extensions are doing things to the page, rewriting things and rewriting stuff on DOM and it's like you're in a very hostile environment and... --- ### Turning Errors Into Action: How and Why Resolving Errors Matters - Published: 2017-05-30 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/turning-errors-into-action-how-and-why-resolving-errors-matters/ - Categories: product - Tags: triage Why resolving errors matters? After fixing a bug, who is responsible for making sure if it really resolves the customer's problem? A lot of companies take a fire-and-forget mentality where the developer makes a code change, and they never think of the problem again until someone complains. Developers often assume that the fix will be deployed with the next release, that the fix will behave the same in production as it does in their development environment, and that it resolves every case uniformly. Only for the most urgent problems will they wait for the fix to hit production and then verify the improvement on the customer's side. Let's face it, verifying the resolution of issues in production is a chore and takes away from developer productivity. Often, the developer has already moved on to other problems by the time fixes are deployed. In many companies that don't have continuous deployment, developers have little control over when releases get shipped. If you're using an issue tracking system, the developer's job usually ends when the code is written and merged. Even if developers wanted to go back and verify the fix works, they may not have the proper tracking tools to do so. Who is accountable for ensuring that bugs are fixed on the customer side? The support or product management teams will complain if it doesn't work as expected, but why should they be responsible? They have better things to do than follow up on dozens of bugs that are filed... --- ### Introducing Error Merging ⎌ - Published: 2017-05-22 - Modified: 2025-04-22 - URL: https://rollbar.com/blog/introducing-error-merging-%e2%8e%8c/ - Categories: product - Tags: monitor We're excited to introduce merging (and un-merging) of errors! Merging errors lets you combine multiple errors into one 'group' for easier management and more accurate metrics. All past and future occurrences of any merged errors will automatically be combined and grouped. Today's merged errors are tomorrow's error groupings. :-) Merge errors When you encounter a duplicated error, you'll want to create a new 'group'. Select one or more errors from the same environment in the error Items feed. Slide the toggle in the box above to 'Merge', set appropriate Level, Status, Owner, and Source values, enter a name for the new item, and click 'Merge'. Done, error merge success! Un-merge errors Merged the wrong error by mistake? No problem! You can easily un-merge errors in Rollbar. Search for merged errors By default, errors which have been merged into a group will no longer appear. To view these errors, you can search for is:member. To only show grouped errors, you can search for is:group. We hope that you and your team will save more time in your day-to-day debugging efforts with Error Merging. Check out the error merging documentation for more details. We appreciate your feedback. Email support@rollbar. com and let us know your thoughts. If you haven’t already, signup for a 14-day free trial of Rollbar and let us help you defeat annoying errors in your applications. :-) --- ### New and improved JavaScript notifier SDK - rollbar.js 2.0 - Published: 2017-05-20 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/new-and-improved-javascript-notifier-sdk-rollbar-js-2-0/ - Categories: product - Tags: JavaScript We are excited to announce a major update to our JavaScript notifier SDK in version 2. 0. This new version adds support for isomorphic or universal applications, which can run on both the client and the server. It standardizes the configuration and logging across environments, and makes it consistent with notifiers for other languages. Here are the big changes: Single library for both client and server side The JavaScript ecosystem has evolved a tremendous amount over the past several years. During that time, server side JavaScript usage has grown to the point where it is quite common to be using JavaScript throughout an application's stack. Applications now are often designed to run both in the client browser and on the server side using Node. These are commonly referred to as "isomorphic" or "universal" applications. The benefits of isomorphic applications include faster loading times, better support for legacy or mobile browsers, and easier search engine indexing. With the line between client and server blurring, it is desirable to have a unified view of exceptions across both environments. To make this possible, we unified the separate notifier libraries so that exceptions are logged uniformly. One require to rule them all. Consistent interface for configuration and logging across multiple environments We now offer a consistent interface for configuration and logging for both client and server side. Furthermore, it is consistent with our notifier libraries for other languages. This will make it much easier for developers since they only need to use one pattern.... --- ### Instacart, leader in grocery delivery, relies on Rollbar for production error monitoring - Published: 2017-05-15 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/instacart-leader-in-grocery-delivery-relies-on-rollbar-for-production-error-monitoring/ - Categories: company - Tags: continuous-delivery   Instacart, a leader in the on-demand marketplace, provides one-hour grocery delivery to users of their app and employs thousands of shoppers across the US to support order fulfillment. Of the one trillion dollar grocery industry, only 1% of market share currently comes from online grocery sales. As Instacart increasingly captures more of this market, they turn to Rollbar for continuous monitoring of their service’s health. With a promise of one-hour delivery, and a shopper workforce relying on their apps, Instacart’s services must be up at all times. Rollbar’s proactive alerting and granular error forensics facilitates the continuous integration and deployment pipeline at the heart of Instacart’s service. Rollbar allows us to go from alerting to impact analysis and resolution in a matter of minutes. It's fully ingrained into our development cycle and monitoring. Without it we would be flying blind. Arnaud Ferreri, Engineering Lead for the Consumer Team at Instacart. The Challenge While many industries have worked out how to participate in the on-demand marketplace, the one trillion dollar grocery industry is one of the last holdouts. Tight margins may be making some investors skittish. Retraining customer perception about grocery quality and freshness with app-ordered deliveries might be at play. Building and scaling the technology layer that acts as the on-demand engine has been a daunting challenge. It’s this last barrier to entry that Instacart has already dismantled. Since its inception in 2012, Instacart has been wooing grocery shoppers away from retail spaces and onto smartphones, to place grocery... --- ### Improved PHP error reporting with our latest rollbar-php 1.0 updates - Published: 2017-05-04 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/improved-php-error-reporting-with-our-latest-rollbar-php-1-0-updates/ - Categories: product - Tags: PHP We are excited to announce a significant upgrade to our PHP notifier SDK. This new version will make it much easier for customers to integrate their PHP apps with Rollbar. It uses the latest standards like Composer, proper namespaces, and is more reliable. Here are some of the highlights: Our first major 1. 0 release This major release of our PHP SDK represents a significant update in architecture, style, and quality for our PHP notifier. In addition, many outstanding issues were fixed so 1. 0 is more reliable and better tested than our prior versions. Our prior version, 0. 18. 2, was written in an old style of PHP with most of the code living in a single file. This was due to our desire to support the oldest version of PHP possible. Due to the changing landscape over the past couple years, it became reasonable to drop support for PHP 5. 2 and this opened the door for many language features which benefit both our code and yours. While the interface has undergone a redesign, it is still backward compatible with 0. 18. 2 via convenience functions. Support for Composer Our SDK is now properly supportive of composer which has become the de facto dependency management tool in PHP. Just add the following configuration to your composer. json file: { "require": { "rollbar/rollbar": "~1. 0" } } Standardized namespace We are now using PHP namespaces, a feature introduced in 5. 3. At the top of your file, you can... --- ### Introducing hassle-free, compliant SaaS error monitoring - Published: 2017-04-26 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/introducing-hassle-free-compliant-saas-error-monitoring/ - Categories: product - Tags: security I'm very excited to announce that today, Rollbar is launching the first and only compliant SaaS error monitoring solution on the market. Our compliant solution meets the standards of HIPAA and ISO 27001, thanks to our team's hard work over the past 6+ months on our infrastructure, application, and policies. From the early days of Rollbar, I've been motivated to help developers build better software, faster, because I believe that empowering software developers is one of the most impactful (if not always visible) ways to improve all of our lives. We've seen customers use Rollbar to build and maintain just about everything you can imagine, from consumer apps to enterprise, healthcare, government, scientific research, and beyond. As we've found our way into applications that power more and more critical functions of modern society (like healthcare and finance), we realized that we would need to be able to meet those organizations' security and compliance requirements--somehow. Our first iteration was Rollbar On-Premises (which we do still offer)--passing the compliance burden off to customers--and a handful of eager customers signed on. Over time, however, we learned that not only is it difficult for us to maintain and support a self-hosted product, it's a huge pain for customers, too. Forgive me for quoting a competitor who seems to be learning the same thing: We went back to the drawing board to ask: why do customers need to self-host? And we realized that in almost all cases, they didn't. What compliance-conscious customers need is compliance,... --- ### Major JavaScript source map updates - Published: 2017-04-20 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/major-javascript-source-map-updates/ - Categories: product - Tags: JavaScript We’re excited to introduce a major update to JavaScript source map support in Rollbar! This update introduces several features unique to Rollbar (source map search, source map failure logs, inline warnings in stack traces) that are critical to anyone using client-side JavaScript in a large-scale, continuous deployment environment. Why Use Source Maps? If your application uses client-side javascript, then you’re probably minifying your code to reduce file sizes and improve page load times. The benefits of minified Javascript are clear, but minification also introduces the need for source maps in order to debug errors that were detected in minified code. Without a source map, it's nearly impossible to determine where an error occurred in your Javascript code. Due to the need for source maps, debugging minified code will always be inherently problematic, but we’ve just introduced several improvements to Rollbar’s source map handling that will make troubleshooting much, much easier. Something didn’t work right... When a Rollbar stack trace includes a minified file that doesn’t have a matching source map, you’ll now see an information message that links you to your project’s source map screen where you can further troubleshoot why the source map wasn’t available. View failed source map uploads and downloads More often than not, you look at your source maps because something didn’t work as expected. You can now see when Rollbar fails to access a source map, including detailed information about what happened. Filter and search your source maps On large projects with frequent deployments, you... --- - [Free Trial](https://rollbar.com/free-trial/sentry-survey/): - [Rollbar vs SmartBear Insight Hub | A Superior SmartBear Insight Hub Alternative for Error Monitoring](https://rollbar.com/vs/insight-hub/): ### Error alert notifications + how to use them for better monitoring - Published: 2017-04-04 - Modified: 2025-04-22 - URL: https://rollbar.com/blog/error-alert-notifications-how-to-use-them-for-better-monitoring/ - Categories: product - Tags: monitor Rollbar offers an impressive array of error alerting and notification options for you to choose from, which is awesome! But sometimes we hear from our users that they aren't quite sure how to leverage their notifications to get the best results. What do notifications here at Rollbar do? How do they work? How should you interpret them? And perhaps most importantly, what are the best practices? Let's explore the answers to all these questions today. Rollbar supports many different messaging and incident management tools, so you and your team can get notified about errors and important events. These notifications can be anything from a message in a Slack channel to an alert in PagerDuty. There are some common notification types that we offer, no matter what tool you're using to be notified. Notification Type Triggered when... New Item An error/ message is seen for the first time. Every Occurrence Every time an error/ message occurs (use wisely). 10^th Occurrence 10th, 100th, 1,000th, 10,000th, ... occurrence High Occurrence Rate {x} occurrences seen in {y} minutes (configurable). Item Resolved An error/message is marked Resolved. Item Reopened An error/message is marked Active by a user. Item Reactivated An error/message occurs again after being marked Resolved. Deploy A new deploy is reported. Daily Summary (Available in email only) Summary of daily error/message activity in a project So now that you know what types of notifications you can get, how about customizing them? You can filter your notifications to adjust the circumstances under which you... --- - [Rollbar vs New Relic | A Superior New Relic Alternative for Error Tracking](https://rollbar.com/vs/newrelic/): ### Onboarding remote employees, on the other side of the world - Published: 2017-03-28 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/onboarding-remote-employees-on-the-other-side-of-the-world/ - Categories: product - Tags: team When I first started full-time here at Rollbar, I was living in Malaysia for the month, starting a year-long journey around the world that I'm currently still on. While it was certainly fun and exciting to explore Kuala Lumpur, it was a bit more difficult to onboard in a new job when I was 15 hours ahead of the rest of the team. Luckily, everyone here at Rollbar is incredibly flexible and helpful, and we were able to get creative about the onboarding process. If you're considering onboarding a remote employee in a different time zone as the rest of your team, read on for some tips and tricks that should help speed up the process. This is my third job in tech, and my second as a remote employee, so while I can't say I've seen it all in terms of onboarding, I have seen a few different methods. The most obvious (and easiest) method is to have your new team member come in to the office bright-eyed and bushy-tailed and have all the members of the team available to help make their onboarding a success. Unfortunately, if the team member you're onboarding doesn't live in the same area, that isn't really possible. What to do? Some companies get around this by requiring all remote employees come onsite for their onboarding. If you're an all-remote company, like the second place I worked, you've probably got the kinks figured out in terms of onboarding your new employees. In many ways... --- - [Rollbar vs DataDog | A Superior DataDog Alternative for Error Tracking](https://rollbar.com/vs/datadog/): ### Building the IoT Rollbar error alarm - Published: 2017-03-11 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/building-the-iot-rollbar-error-alarm/ - Categories: Code Tutorials - Tags: monitor Our friends at Losant wanted to share how they built an actual 'error-alarm' using the Rollbar and Losant API's. Enjoy! When I envision a tech company's smart office, I see tons of dashboards and indicator lights that monitor everything. Efficient monitoring is a critical piece of today's technology stack, and there are always ways to improve. Rollbar already does an impeccable job at alerting you when errors are thrown in your application. But, to increase awareness, accountability, and awesomeness in the office, we can connect Rollbar to our smart office. In this tutorial, we are going to build an office error alarm powered by Rollbar and Losant. Building the Alarm Intel Edison - This is a small compute module that we will use to control the devices in our office. WeMo Insight Switch - This is a Wifi enabled, smart plug that we can control remotely. **Rotating Police Party Light - This is a regular party light. Setting up the Light Connect the WeMo Insight Switch to your office network using the WeMo app and plug in the light. You should be able to control the light with the WeMo app. Setting up Intel Edison The WeMo switch exposes a local API. There is a Node. js module that wraps the API so we can control the WeMo switch. Since the API is local, the Intel Edison must be on the same network as the WeMo switch to connect to the device. Intel has a configuration tool we need to... --- - [Low Risk Continuous Delivery Guide](https://rollbar.com/low-risk-continuous-delivery-guide/): Rollbar can help you discover and fix errors faster across your development pipeline by uncovering and resolving them in real-time, before users complain. - [Rollbar vs Instabug | A Superior Instabug Alternative for Error Tracking](https://rollbar.com/vs/instabug/): ### Up your incident management alerts game with Rollbar and VictorOps - Published: 2017-03-02 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/up-your-incident-management-alerts-game-with-rollbar-and-victorops/ - Categories: product - Tags: integrations Resolving on-call errors can be faster and easier than ever before when you integrate VictorOps and Rollbar. VictorOps is a fantastic on-call management tool that provides incident notifications to engineers to help teams resolve incidents faster and minimize downtime. We're excited to announce that you can now automatically send your Rollbar items to VictorOps, and get alerted to new errors quickly - before your users notice. Linking Rollbar and VictorOps To automatically turn your Rollbar items into Alerts in VictorOps, read on. Configuration is per-project in Rollbar. Head to the Notification settings page for a project: Dashboard -> Settings -> Notifications -> VictorOps. In VictorOps, go to Settings (or Complete Setup) -> Alert Behavior -> Integrations, and choose Rollbar. Click "Enable Integration" if it's not already enabled. Copy the API key from VictorOps. In Rollbar, enter the API and routing keys, and click "Enable VictorOps Integration. " Congrats! You have now integrated Rollbar with your VictorOps account. Now, when a new error or higher occurs in Rollbar, it will create an Alert in VictorOps, which will be automatically resolved when it is resolved in Rollbar. If you want, you can customize the default rules by editing, adding, or deleting them. By bringing your Rollbar data into VictorOps, you can streamline your monitoring, minimize downtime, and resolve incidents faster. For more information, check out our integration docs for VictorOps. We also have an integration with another incident management alerts provider, PagerDuty; check out the docs here. To see if Rollbar integrates... --- - [Customers](https://rollbar.com/customers/): Read what our customers have said about our tool and understand first-hand why a growing number of software teams are adopting Rollbar. - [500](https://rollbar.com/500-error/): ::CLOUDFLARE_ERROR_500S_BOX:: If you need immediate assistance or wish to report an issue, please contact our Support Team   - [Rollbar vs Highlight.io | A Superior Highlight.io Alternative for Error Tracking](https://rollbar.com/vs/highlight/): Have you had enough of these issues with Highlight.io? Complex Features, Endless Technical Glitches, Poor Support and Responsiveness, Steep Learning Curve, Complex Pricing Structure. Time to switch to Rollbar for the best error monitoring solution for frontend, backend and mobile applications. - [Zipy](https://rollbar.com/integrations/zipy/): Send notifications to chatrooms so everyone on your team knows when an error needs to be resolved instantly.Unlock advanced error insights in Rollbar with Zipy session URLs for contextual debugging and efficient issue resolution. - [Public Roadmap](https://rollbar.com/product/roadmap/): - [Rust Error Tracking](https://rollbar.com/platforms/rust-error-tracking/): Install our Rust SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - [Rollbar Offer for YC Startups](https://rollbar.com/solutions/yc-startups/): Prioritize development and let us do the heavy lifting. We'll provide all the info regarding which errors are affecting customers, what IPs are affected, and more. - [Bird Eats Bug](https://rollbar.com/integrations/bird-eats-bug/): Send notifications to chatrooms so everyone on your team knows when an error needs to be resolved instantly. - [Flask Error Tracking with Rollbar](https://rollbar.com/platforms/flask-error-tracking-2/): Install our Flask SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - [FastAPI Error Tracking with Rollbar](https://rollbar.com/platforms/fastapi-error-tracking/): Install our FastAPI SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - [Features](https://rollbar.com/features/): - [Local Variables / Arguments](https://rollbar.com/features/local-variables/): You need to know what triggered an error before you can fix it. See the exact line of code and the timeline of browser events leading up to an error with Rollbar. - [Product](https://rollbar.com/product/): - [Rollbar Thank you](https://rollbar.com/events/rollbar-thank-you/): - [Rollbar Offer for G2 Customers](https://rollbar.com/solutions/g2-offer/): Prioritize development and let us do the heavy lifting. We'll provide all the info regarding which errors are affecting customers, what IPs are affected, and more. - [Software Agency](https://rollbar.com/solutions/software-agency/): Prioritize development and let us do the heavy lifting. We'll provide all the info regarding which errors are affecting customers, what IPs are affected, and more. - [Live Webinar: Rollbar Project Configuration Best Practices](https://rollbar.com/events/project-best-practices/): - [Jira](https://rollbar.com/integrations/jira/): Create Jira tickets directly from Rollbar Errors with automatic creation and ticket resolution built-in. - [Slack](https://rollbar.com/integrations/slack/): Send notifications to chatrooms so everyone on your team knows when an error needs to be resolved instantly. - [Real-time, production quality data as a guide](https://rollbar.com/solutions/improve/): Monitor errors in all projects in one view. Rollbar groups similar errors together for you and also provides the option to manually merge errors to fit your needs. - [Technical Intro to Improve: Release](https://rollbar.com/vs/tech-intro-to-improve-release/): Introducing Improve: Release from Rollbar. - [Intro to Rollbar](https://rollbar.com/events/intro-to-rollbar/): - [Intro to Improve: Release from Rollbar](https://rollbar.com/vs/intro-improve-release/): Introducing Improve: Release from Rollbar. - [Introducing Improve: Release from Rollbar](https://rollbar.com/vs/introducing-improve-release/): Introducing Improve: Release from Rollbar. - [Angular](https://rollbar.com/vs/angular/): Rollbar for Angular. Find and fix errors quickly. - [Office Hours](https://rollbar.com/vs/office-hours/): Visit our conference booth and learn more about Rollbar. Find and fix errors quickly. - [Conference](https://rollbar.com/vs/conference/): Visit our conference booth and learn more about Rollbar. Find and fix errors quickly. - [Rollbar vs Airbrake | A Superior Airbrake Alternative for Error Tracking](https://rollbar.com/vs/airbrake/): - [How to Wrap and Unwrap Errors in Golang](https://rollbar.com/blog/golang-wrap-and-unwrap-error/): In Golang, wrapping errors entails giving them more context and in order to see what context has been introduced they must be unwrapped. Learn more. - [PHP's ErrorException Explained (with Example)](https://rollbar.com/blog/php-errorexception/): The PHP ErrorException class is meant to be thrown explicitly to catch and handle errors that would otherwise be ignored. Learn more about it here. - [Rollbar vs Raygun | A Superior Raygun Alternative for Error Tracking](https://rollbar.com/vs/raygun/): - [Rollbar vs Bugsnag | A Superior Bugsnag Alternative for Error Monitoring](https://rollbar.com/vs/bugsnag/): - [Track and Debug Errors on Any Platform](https://rollbar.com/platforms/): Instrument any application with Rollbar error monitoring. Install our SDKs in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks - [Announcing Rollbar Live In-App Chat Support](https://rollbar.com/blog/announcing-rollbar-live-in-app-chat-support/): What’s better than great support? Live in-app support with a real person when you need it During the last two... - [Salesforce Apex Tracking with Rollbar](https://rollbar.com/platforms/apex-error-tracking/): Install our Apex SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - [How to Fix AttributeError in Python](https://rollbar.com/blog/python-attributeerror/): The Python AttributeError is an exception that occurs when an attribute reference or assignment fails. Learn how to fix it. - [The Ultimate Guide to Error Logging in Go](https://rollbar.com/blog/golang-error-logging-guide/): Logging can be a life-saver when it comes to fixing faults in your Go code. Learn how to log ✓ to the console ✓ to a file ✓ using a logging framework. - [How to Fix TypeError Exceptions in Python](https://rollbar.com/blog/python-typeerror/): The Python TypeError is an exception that occurs when the data type of an object in an operation is inappropriate. Learn how to fix it. - [How to Fix ImportError: Cannot Import Name in Python](https://rollbar.com/blog/python-importerror-cannot-import-name/): The Python ImportError: cannot import name error occurs when an imported class is not accessible or is in a circular dependency. Learn how to fix it. - [Go Error Tracking with Rollbar](https://rollbar.com/platforms/go-error-tracking/): Install our Go SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - [How to Handle the MemoryError in Python](https://rollbar.com/blog/python-memoryerror/): A MemoryError is an error encountered in Python when there is no memory available for allocation. Learn two ways to solve this. - [How to Fix TypeError: Cannot Read Property Length of Undefined in JavaScript](https://rollbar.com/blog/javascript-typeerror-cannot-read-property-length-of-undefined-in-javascript/): The JavaScript TypeError: Cannot read property 'length' of undefined occurs when the length property is read on an undefined variable. - [How to Fix TypeError: Null is Not an Object in JavaScript](https://rollbar.com/blog/javascript-typeerror-null-is-not-an-object/): The JavaScript error TypeError: null is not an object occurs when a property is accessed or a method is called on a null value within Safari. - [How to Fix The Format Flags Conversion Mismatch Exception in Java](https://rollbar.com/blog/java-formatflagsconversionmismatchexception/): The FormatFlagsConversionMismatchException in Java is thrown when a conversion and a flag are incompatible in the source code. - [How to Fix The Service Configuration Error in Java](https://rollbar.com/blog/java-serviceconfigurationerror/): The ServiceConfigurationError occurs in Java when there is a failure in loading or locating a service provider. - [.NET Error Tracking with Rollbar](https://rollbar.com/platforms/dotnet-error-tracking/): Install our .NET SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - [How to Handle the Argument Null Exception in C#](https://rollbar.com/blog/csharp-argumentnullexception/): The ArgumentNullException occurs in C# when null arguments are passed to a method in that expects non-null values. - [Resolving the Boto3 NoCredentialsError in Python](https://rollbar.com/blog/python-boto3-nocredentialserror/): NoCredentialsError is raised while using Boto3 to access AWS in Python, when a credentials file is invalid or cannot be located. ### Free Trial - Published: 2025-03-04 - Modified: 2025-03-05 - URL: https://rollbar.com/free-trial/sentry-survey/ --- - [How to Fix the OperationalError in Python](https://rollbar.com/blog/python-operationalerror/): The OperationalError in Python is encountered when using the Psycopg library to indicate that incorrect database information was provided - [Swift Error Tracking with Rollbar](https://rollbar.com/platforms/swift-error-tracking/): Install our Swift SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - [How to Fix ReferenceError: Event is Not Defined in JavaScript](https://rollbar.com/blog/javascript-referenceerror-event-is-not-defined/): JavaScript's ReferenceError: Event is Not Defined occurs if the event parameter is not declared correctly when using an event handler. ### Rollbar vs SmartBear Insight Hub | A Superior SmartBear Insight Hub Alternative for Error Monitoring - Published: 2025-01-14 - Modified: 2025-01-24 - URL: https://rollbar.com/vs/insight-hub/ --- - [How to Handle the Psycopg2 UniqueViolation Error in Python](https://rollbar.com/blog/python-psycopg2-errors-uniqueviolation/): Thrown by the psycopg2 library when a user attempts to insert a duplicate key value in a SQL or SQL-like library. - [Flutter Error Tracking with Rollbar](https://rollbar.com/platforms/flutter-error-tracking/): Install our Flutter SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - [How to Handle the FileNotFoundException in C#](https://rollbar.com/blog/csharp-filenotfoundexception/): The FileNotFoundException occurs in C# when the system is unable to locate a file when the program is executed. Learn how to handle it here. - [How to Fix the FileNotFoundException in Java.io](https://rollbar.com/blog/java-filenotfoundexception/): The FileNotFoundException is a checked exception in Java that occurs when an attempt to open a file denoted by a specified pathname fails. ### Rollbar vs New Relic | A Superior New Relic Alternative for Error Tracking - Published: 2024-12-23 - Modified: 2024-12-23 - URL: https://rollbar.com/vs/newrelic/ --- - [How to Fix the No Such Element Exception in Java](https://rollbar.com/blog/java-nosuchelementexception/): The NoSuchElementException in Java can be thrown by various accessor methods to indicate that the element being requested does not exist. - [MacOS Error Tracking with Rollbar](https://rollbar.com/platforms/macos-error-tracking/): Install our macOS SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. ### Rollbar vs DataDog | A Superior DataDog Alternative for Error Tracking - Published: 2024-12-19 - Modified: 2024-12-23 - URL: https://rollbar.com/vs/datadog/ --- - [iOS Error Tracking with Rollbar](https://rollbar.com/platforms/ios-error-tracking/): Install our iOS SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. ### Low Risk Continuous Delivery Guide > Rollbar can help you discover and fix errors faster across your development pipeline by uncovering and resolving them in real-time, before users complain. - Published: 2024-12-19 - Modified: 2024-12-20 - URL: https://rollbar.com/low-risk-continuous-delivery-guide/ --- - [Apple Error Tracking with Rollbar](https://rollbar.com/platforms/apple-error-tracking/): Install our Apple SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - [Move Faster with Rollbar Improve](https://rollbar.com/blog/rollbar-improve-alpha/): Building software is complex and, at Rollbar, we believe it’s better to move quickly and manage risk intelligently rather than... ### Rollbar vs Instabug | A Superior Instabug Alternative for Error Tracking - Published: 2024-12-04 - Modified: 2025-01-24 - URL: https://rollbar.com/vs/instabug/ --- - [How to Fix the Missing Resource Exception in Java](https://rollbar.com/blog/java-missingresourceexception/): The MissingResourceException occurs when a resource required by a Java program is not found within the specified filepath. - [How to Fix the Unknown Format Conversion Exception in Java](https://rollbar.com/blog/java-unknownformatconversionexception/): The UnknownFormatConversionException in Java is thrown when an unknown conversion occurs while formatting data. ### Customers > Read what our customers have said about our tool and understand first-hand why a growing number of software teams are adopting Rollbar. - Published: 2024-11-18 - Modified: 2024-11-18 - URL: https://rollbar.com/customers/ --- - [How to Fix the Missing Format Argument Exception in Java?](https://rollbar.com/blog/java-missingformatargument/): Java's MissingFormatArgumentException occurs if a format specifier does not have an argument/argument index points to a nonexistant argument. ### 500 - Published: 2024-11-07 - Modified: 2024-11-07 - URL: https://rollbar.com/500-error/ ::CLOUDFLARE_ERROR_500S_BOX::If you need immediate assistance or wish to report an issue, please contact ourSupport Team  --- - [How to Fix the Input Mismatch Exception in Java?](https://rollbar.com/blog/java-inputmismatchexception/): Thrown by a Scanner to indicate that a retrieved token does not match the pattern for the expected type, or that the token is out of range. - [Scala Error Tracking with Rollbar](https://rollbar.com/platforms/scala-error-tracking/): Install our Scala SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. ### Rollbar vs Highlight.io | A Superior Highlight.io Alternative for Error Tracking > Have you had enough of these issues with Highlight.io? Complex Features, Endless Technical Glitches, Poor Support and Responsiveness, Steep Learning Curve, Complex Pricing Structure. Time to switch to Rollbar for the best error monitoring solution for frontend, backend and mobile applications. - Published: 2024-10-14 - Modified: 2025-01-24 - URL: https://rollbar.com/vs/highlight/ --- - [Java Guide: What is Heap Space & Dynamic Memory Allocation?](https://rollbar.com/blog/java-heap-space/): The heap space in Java is used for the dynamic memory allocation of Java objects and classes at runtime, i.e on the creation of a new object. - [Spring Error Tracking with Rollbar](https://rollbar.com/platforms/spring-error-tracking/): Install our Spring SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - [How to Handle the Headless Exception in Java](https://rollbar.com/blog/java-headlessexception/): This exception is thrown when code that depends on a keyboard, display or mouse is called in an environment that does not support any of these ### Zipy > Send notifications to chatrooms so everyone on your team knows when an error needs to be resolved instantly.Unlock advanced error insights in Rollbar with Zipy session URLs for contextual debugging and efficient issue resolution. - Published: 2024-03-07 - Modified: 2024-03-07 - URL: https://rollbar.com/integrations/zipy/ --- - [Java: List of Checked & Unchecked Exceptions](https://rollbar.com/blog/java-list-of-all-checked-unchecked-exceptions/): List of checked & unchecked Java exceptions with links to their corresponding guide. 1.InvocationTargetException 2.NoSuchMethodException.... - [What is a Java Stack Trace? How to Read & Analyze Traces](https://rollbar.com/blog/java-stack-trace/): Displayed when an error/exception occurs, stack traces in Java can be used to debug or troubleshoot issues encountered in code. ### Public Roadmap - Published: 2024-03-07 - Modified: 2024-03-07 - URL: https://rollbar.com/product/roadmap/ --- - [Android Error Tracking with Rollbar](https://rollbar.com/platforms/android-error-tracking/): Install our Android SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - [How to Resolve an Uncaught Reference Error in Javascript](https://rollbar.com/blog/javascript-referenceerror/): The ReferenceError occurs when referencing a variable that does not exist or has not been initialized in the current scope. Learn how to solve it. ### Rust Error Tracking > Install our Rust SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2024-02-16 - Modified: 2024-02-16 - URL: https://rollbar.com/platforms/rust-error-tracking/ --- - [PHP Nested Try-Catch](https://rollbar.com/blog/php-nested-try-catch/): In PHP, Try-catch blocks can be nested up to any desired levels and are handled in reverse order of appearance. Learn more now! - [How to Handle the Syntax Error in Javascript](https://rollbar.com/blog/javascript-syntaxerror/): The Javascript SyntaxError is thrown when the engine comes across tokens or token orders with incorrect syntax when parsing code. ### Rollbar Offer for YC Startups > Prioritize development and let us do the heavy lifting. We'll provide all the info regarding which errors are affecting customers, what IPs are affected, and more. - Published: 2024-01-10 - Modified: 2024-01-10 - URL: https://rollbar.com/solutions/yc-startups/ --- - [How to Handle the Socket Exception in Java](https://rollbar.com/blog/java-socketexception/): The SocketException in Java is thrown to indicate that an error was encountered while creating or accessing a Socket. - [Java Error Tracking with Rollbar](https://rollbar.com/platforms/java-error-tracking/): Install our Java SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. ### Bird Eats Bug > Send notifications to chatrooms so everyone on your team knows when an error needs to be resolved instantly. - Published: 2023-11-21 - Modified: 2023-11-27 - URL: https://rollbar.com/integrations/bird-eats-bug/ --- - [How to Handle the Unknown Host Exception in Java](https://rollbar.com/blog/java-unknownhostexception/): The UnknownHostException occurs when trying to connect to a remote host, but the IP address of the host could not be determined. - [How to Implement Custom Exceptions in C++](https://rollbar.com/blog/cpp-custom-exceptions/): Custom exceptions in C++ provide relevant information about an error to the exception handling mechanism and customize the error message. - [How to Handle the Clone Not Supported Exception in Java](https://rollbar.com/blog/java-clonenotsupportedexception/): Thrown to indicate that Object.clone() was called to clone an object, but that object's class does not implement the Cloneable interface. - [Django Error Tracking with Rollbar](https://rollbar.com/platforms/django-error-tracking/): Install our Django SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. ### Flask Error Tracking with Rollbar > Install our Flask SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2023-10-12 - Modified: 2023-10-13 - URL: https://rollbar.com/platforms/flask-error-tracking-2/ --- - [How to Resolve the Instantiation Exception in Java](https://rollbar.com/blog/how-to-resolve-the-instantiation-exception-in-java/): The InstantiationException in Java is thrown when the JVM cannot instantiate a Java type at runtime using the Class.newInstance() method. ### FastAPI Error Tracking with Rollbar > Install our FastAPI SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2023-10-12 - Modified: 2024-11-05 - URL: https://rollbar.com/platforms/fastapi-error-tracking/ --- - [How to Fix the Empty Stack Exception in Java](https://rollbar.com/blog/java-emptystackexception/): The EmptyStackException is a runtime exception in Java that is thrown by methods in the Stack class to indicate that the stack is empty. ### Features - Published: 2023-06-26 - Modified: 2023-06-26 - URL: https://rollbar.com/features/ --- - [How to Fix the Type Not Present Exception in Java](https://rollbar.com/blog/java-typenotpresentexception/): Java's TypeNotPresentException is thrown when the definition of a type, attempted to be accessed using a specified name, cannot be found. - [How to Resolve the Illegal Format Conversion Exception in Java](https://rollbar.com/blog/java-illegal-format-conversion-exception/): Java's IllegalFormatConversionException is an unchecked exception thrown when an incompatible type argument is passed to a format specifier. - [Flask Error Tracking with Rollbar](https://rollbar.com/platforms/flask-error-tracking/): Install our Flask SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. ### Local Variables / Arguments > You need to know what triggered an error before you can fix it. See the exact line of code and the timeline of browser events leading up to an error with Rollbar. - Published: 2023-06-26 - Modified: 2023-06-26 - URL: https://rollbar.com/features/local-variables/ --- - [Reduce Debugging Time With Rollbar](https://rollbar.com/blog/reduce-debugging-time-with-rollbar/): Developers want to work on new features. They want to fix bugs that occur, but they don’t want to spend hours searching for the problem. ### Product - Published: 2023-06-26 - Modified: 2023-06-26 - URL: https://rollbar.com/product/ --- - [Python Error Tracking with Rollbar](https://rollbar.com/platforms/python-error-tracking/): Install our Python SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - [Rollbar Certified for SOC 2 Type II and SOC 3](https://rollbar.com/blog/rollbar-certified-for-soc-2-type-ii-and-soc-3/): We are pleased to announce that an independent service auditor has certified that Rollbar meets SOC 2 Type II criteria... ### Rollbar Thank you - Published: 2023-05-22 - Modified: 2025-01-08 - URL: https://rollbar.com/events/rollbar-thank-you/ --- - [Slack Oauth 2.0 system is available for your projects](https://rollbar.com/blog/slack-oauth-2-0-system-is-available-for-your-projects/): NoSuchFieldError in Java is thrown when an application accesses or modifies a field of an object/class that no longer contains that field. ### Rollbar Offer for G2 Customers > Prioritize development and let us do the heavy lifting. We'll provide all the info regarding which errors are affecting customers, what IPs are affected, and more. - Published: 2023-04-06 - Modified: 2023-04-07 - URL: https://rollbar.com/solutions/g2-offer/ --- - [How to Resolve the NoSuchFieldError in Java](https://rollbar.com/blog/java-nosuchfielderror/): NoSuchFieldError in Java is thrown when an application accesses or modifies a field of an object/class that no longer contains that field. - [Sinatra Error Tracking with Rollbar](https://rollbar.com/platforms/sinatra-error-tracking/): Install our Sinatra SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - [How to Fix Unsupported major.minor Version 52.0 Error in Java](https://rollbar.com/blog/java-unsupported-major-minor-version-52-0/): Java's unsupported major.minor version error happens when a class is compiled using a higher version JDK but executed on a lower version JRE. ### Software Agency > Prioritize development and let us do the heavy lifting. We'll provide all the info regarding which errors are affecting customers, what IPs are affected, and more. - Published: 2023-03-21 - Modified: 2025-02-25 - URL: https://rollbar.com/solutions/software-agency/ --- - [How to Resolve the SecurityException in Java](https://rollbar.com/blog/java-securityexception/): The SecurityException in Java is a runtime exception thrown by the security manager to indicate a security violation. ### Live Webinar: Rollbar Project Configuration Best Practices - Published: 2023-02-07 - Modified: 2023-03-01 - URL: https://rollbar.com/events/project-best-practices/ --- - [Handling the ArithmeticException Runtime Exception in Java](https://rollbar.com/blog/java-arithmeticexception/): The ArithmeticException in Java is thrown by the JVM when an arithmetic operation creates an exceptional condition. ### Jira > Create Jira tickets directly from Rollbar Errors with automatic creation and ticket resolution built-in. - Published: 2022-12-05 - Modified: 2023-03-23 - URL: https://rollbar.com/integrations/jira/ --- - [Handling the ClassCastException Runtime Exception in Java](https://rollbar.com/blog/java-classcastexception/): The ClassCastException in Java happens when the JVM tries to cast an object to a class (or in some instances, an interface) and fails. - [Rails Error Tracking with Rollbar](https://rollbar.com/platforms/rails-error-tracking/): Install our Rails SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - [How to Handle String Index Out Of Bounds Exception in Java](https://rollbar.com/blog/java-stringoutofboundsexception/): The StringOutOfBoundsException in Java that occurs when accessing a string at an index which is negative/greater than the string length. ### Slack > Send notifications to chatrooms so everyone on your team knows when an error needs to be resolved instantly. - Published: 2022-12-05 - Modified: 2023-03-23 - URL: https://rollbar.com/integrations/slack/ --- - [How to Handle the NumberFormat Exception in Java](https://rollbar.com/blog/java-numberformatexception/): The NumberFormatException in Java is thrown when it is not possible to convert a string to a numeric type (e.g. int, float). - [Ruby Error Tracking with Rollbar](https://rollbar.com/platforms/ruby-error-tracking/): Install our Ruby SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. ### Real-time, production quality data as a guide > Monitor errors in all projects in one view. Rollbar groups similar errors together for you and also provides the option to manually merge errors to fit your needs. - Published: 2022-10-11 - Modified: 2023-01-11 - URL: https://rollbar.com/solutions/improve/ --- - [How to Avoid the Concurrent Modification Exception in Java](https://rollbar.com/blog/java-concurrentmodificationexception/): The ConcurrentModificationException in Java occurs when an object is attempted to be modified concurrently without permission. ### Technical Intro to Improve: Release > Introducing Improve: Release from Rollbar. - Published: 2022-10-10 - Modified: 2022-11-15 - URL: https://rollbar.com/vs/tech-intro-to-improve-release/ --- - [Better together: Rollbar and Datadog](https://rollbar.com/blog/better-together-rollbar-and-datadog/): It just makes sense to use Rollbar for debugging and error monitoring and Datadog for observability. By taking a little time to integrate the two tools and have them work together you will reap additional benefits throughout your SDLC and also find synergies and features that you might not be making the most of right now. - [How to Handle the InterruptedException Checked Exception in Java](https://rollbar.com/blog/java-interruptedexception-checked-exception/): Java's InterruptedException is thrown when a thread is interrupted from waiting, sleeping, or when otherwise occupied. ### Intro to Rollbar - Published: 2022-09-23 - Modified: 2023-02-08 - URL: https://rollbar.com/events/intro-to-rollbar/ --- - [How to Handle the UnsatisfiedLinkError Runtime Error in Java](https://rollbar.com/blog/java-unsatisfiedlinkerror-runtime-error/): The Java java.lang.UnsatisfiedLinkError is thrown when a program uses a native libaray but is unable to find it at runtime for some reason. - [Laravel Error Tracking with Rollbar](https://rollbar.com/platforms/laravel-error-tracking/): Install our Laravel SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. ### Intro to Improve: Release from Rollbar > Introducing Improve: Release from Rollbar. - Published: 2022-09-15 - Modified: 2022-09-30 - URL: https://rollbar.com/vs/intro-improve-release/ --- - [How to Handle the Illegal Monitor State Exception in Java](https://rollbar.com/blog/java-illegalmonitorstateexception/): The IllegalMonitorStateException in Java occurs when a multithreaded application attempts to wait or notify a monitor that it does not own. ### Introducing Improve: Release from Rollbar > Introducing Improve: Release from Rollbar. - Published: 2022-09-08 - Modified: 2022-09-23 - URL: https://rollbar.com/vs/introducing-improve-release/ --- - [How to Handle the Negative Array Size Exception in Java](https://rollbar.com/blog/java-negativearraysizeexception/): The Negative Array Size Exception in Java occurs when an application attempts to create an array with a negative size. - [Symfony Error Tracking with Rollbar](https://rollbar.com/platforms/symfony-error-tracking/): Install our Wordpress SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - [How to Fix the Unsupported Class Version Runtime Error in Java](https://rollbar.com/blog/java-unsupportedclassversionerror/): The UnsupportedClassVersionError in Java occurs when the JVM attempts to read a malformed or otherwise erroneous class file. ### Angular > Rollbar for Angular. Find and fix errors quickly. - Published: 2022-09-07 - Modified: 2022-09-07 - URL: https://rollbar.com/vs/angular/ --- - [How to Handle the Exception In Initializer Runtime Error in Java](https://rollbar.com/blog/java-exceptionininitializererror-runtime-error/): Java's ExceptionInInitializerError occurs when an unchecked exception takes place in a static initializer or static variable assignment. ### Office Hours > Visit our conference booth and learn more about Rollbar. Find and fix errors quickly. - Published: 2022-08-29 - Modified: 2023-09-01 - URL: https://rollbar.com/vs/office-hours/ --- - [Wordpress Error Tracking with Rollbar](https://rollbar.com/platforms/wordpress-error-tracking/): Install our Wordpress SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. ### Conference > Visit our conference booth and learn more about Rollbar. Find and fix errors quickly. - Published: 2022-08-29 - Modified: 2022-08-31 - URL: https://rollbar.com/vs/conference/ --- ### Rollbar vs Airbrake | A Superior Airbrake Alternative for Error Tracking - Published: 2022-08-22 - Modified: 2025-01-24 - URL: https://rollbar.com/vs/airbrake/ --- - [How to Fix ArrayStoreException in Java](https://rollbar.com/blog/arraystoreexception-in-java/): The ArrayStoreException in Java is a runtime exception that occurs when an incorrect type of object is stored into an array of objects. ### Rollbar vs Raygun | A Superior Raygun Alternative for Error Tracking - Published: 2022-08-22 - Modified: 2025-01-24 - URL: https://rollbar.com/vs/raygun/ --- - [How to Handle the Incompatible Types Error in Java](https://rollbar.com/blog/how-to-handle-the-incompatible-types-error-in-java/): The Java incompatible types error happens when a value assigned to a variable or returned by a method is incompatible with the one declared. - [PHP Error Tracking with Rollbar](https://rollbar.com/platforms/php-error-tracking/): Install our PHP SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - [How to Handle the Unclosed String Literal Error in Java](https://rollbar.com/blog/java-unclosed-string-literal-error/): Python unclosed string literal error refers to the Java compiler failing to interpret a string literal due to the missing of a double quote. ### Rollbar vs Bugsnag | A Superior Bugsnag Alternative for Error Monitoring - Published: 2022-08-22 - Modified: 2025-01-24 - URL: https://rollbar.com/vs/bugsnag/ --- - [The Ultimate Guide to Logging in Python](https://rollbar.com/blog/logging-in-python/): Logging in Python allows you to track, tag, and assign severity levels to events that happen when an application runs. - [How to Fix Method/Constructor X in Class Y Cannot be Applied to Given Types in Java](https://rollbar.com/blog/how-to-fix-method-constructor-in-class-cannot-be-applied-to-given-types-in-java/): Java "Method/Constructor in Class Cannot Be Applied To Given Types" happens when formal parameters and the actual parameters differ. ### Track and Debug Errors on Any Platform > Instrument any application with Rollbar error monitoring. Install our SDKs in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks - Published: 2022-03-20 - Modified: 2024-03-25 - URL: https://rollbar.com/platforms/ --- ### Salesforce Apex Tracking with Rollbar > Install our Apex SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-20 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/apex-error-tracking/ --- - [Vue Error Tracking with Rollbar](https://rollbar.com/platforms/vue-error-tracking/): Install our Vue.js SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - [Rollbar Log4J CVE-2021-44228 (“Log4Shell”) Community Update](https://rollbar.com/blog/log4j-zero-day-2021-log4shell/): TLDR; Your data is safe with Rollbar. A zero day in the Java ecosystem was discovered that could exploit Apache’s... ### Go Error Tracking with Rollbar > Install our Go SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-20 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/go-error-tracking/ --- - [How to Catch Multiple Exceptions in Python](https://rollbar.com/blog/python-catching-multiple-exceptions/): Python try-except blocks can be used to catch/respond to processes that raises more than one possible exception, with a single except clause. - [How to Handle Unhashable Type List Exceptions in Python](https://rollbar.com/blog/handling-unhashable-type-list-exceptions/): The Python TypeError: Unhashable Type: 'list' happens when a mutable list, instead of an immutable tuple, is used as a hash argument. - [React Native Error Tracking with Rollbar](https://rollbar.com/platforms/react-native-error-tracking/): Install our React SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. ### .NET Error Tracking with Rollbar > Install our .NET SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-20 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/dotnet-error-tracking/ --- - [How to Solve the Chunk Load Error in JavaScript](https://rollbar.com/blog/javascript-chunk-load-error/): Whenever there’s an error observed in dynamically fetching helper JavaScript files known as Chunks, a ChunkLoad Error is thrown. - [How to Resolve The Non-static Variable/Method X Cannot be Referenced from a Static Context Error in Java](https://rollbar.com/blog/java-non-static-variable-method-x-cannot-be-referenced-from-a-static-context/): Attempting to access a non-static variable/method from a static context without a class instance creates ambiguity. - [React Error Tracking with Rollbar](https://rollbar.com/platforms/react-error-tracking/): Install our React SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - [E_ERRORs in PHP: What You Need to Know](https://rollbar.com/blog/e_errors-in-php/): PHP E_ERRORs occures when a major, irrecoverable issue arises during runtime. Lesser errors are recoverable and PHP would continue to run. ### Swift Error Tracking with Rollbar > Install our Swift SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-20 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/swift-error-tracking/ --- - [Resolving TypeError: "X" is Not a Constructor in JavaScript](https://rollbar.com/blog/javascript-typeerror-x-is-not-a-constructor/): JavaScript "TypeError: "x" is not a constructor" errors occur when invalid objects or a variable is erroneously used as a constructor. - [JavaScript Constructors: What You Need to Know](https://rollbar.com/blog/javascript-constructors/): JavaScript constructors are special functions that creates and initializes an object instance of a class when created using the "new" keyword. - [Express Error Tracking with Rollbar](https://rollbar.com/platforms/express-error-tracking/): Install our Express SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - [Introducing Adaptive Alerts: Detect application-level error trends](https://rollbar.com/blog/introducing-adaptive-alerts-detect-application-level-trends-with-greater-accuracy/): Adaptive Alerts is a new feature from Rollbar that adds to our reliable, informative and actionable alerts about unexpected issues in monitored applications and services. Adaptive Alerts uses anomaly detection to learn the standard behavior of enterprise applications, and alerts developers about atypical exception rates, reducing unwanted noise. ### Flutter Error Tracking with Rollbar > Install our Flutter SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-20 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/flutter-error-tracking/ --- - [How to Resolve The Cannot Find Symbol Error in Java](https://rollbar.com/blog/how-to-resolve-the-cannot-find-symbol-error-in-java/): The cannot find symbol error refers to a situation where the Java compiler is unable to find the symbol associated with a given identifier. - [Ember Error Tracking with Rollbar](https://rollbar.com/platforms/ember-error-tracking/): Install our Ember SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - [How to Handle the <Identifier> Expected Error in Java](https://rollbar.com/blog/how-to-handle-the-identifier-expected-error-in-java/): The expected error in Java occurs when an expression statement is written outside of a constructor/method/instance initialization block. ### MacOS Error Tracking with Rollbar > Install our macOS SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-20 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/macos-error-tracking/ --- - [Angular Error Tracking with Rollbar](https://rollbar.com/platforms/angular-error-tracking/): Install our Angular SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - [Spring vs. Spring Boot: Whats the Difference](https://rollbar.com/blog/spring-vs-spring-boot-whats-the-difference/): Spring Boot was introduced as a Spring Framework as the latter has become increasingly complex because of added functionalities. - [How to Fix Unreachable Statement Errors in Java](https://rollbar.com/blog/handling-the-unreachable-statement-error-in-java/): The “Unreachable Statement” error in Java arises when the compiler detects a statement that's never executable in the program's control flow. ### iOS Error Tracking with Rollbar > Install our iOS SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-20 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/ios-error-tracking/ --- - [Coding Java Applications the Serverless Way](https://rollbar.com/blog/guide-to-going-serverless-with-java/): Advantages, disadvantages, and use cases of going serverless with Java. Build ✓on-demand, ✓high-availability apps without tedious server management! - [Node.js Error Tracking with Rollbar](https://rollbar.com/platforms/node-error-tracking/): Install our Node.js SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - [What Are Cloud Native Java Applications & Architectures](https://rollbar.com/blog/what-is-cloud-native-java/): Cloud-native Java is an approach to building and running a Java application that provides organizations with greater elasticity, resiliency, and portability. - [Quarkus vs Spring Boot: Which Framework is Right for You](https://rollbar.com/blog/quarkus-vs-spring-boot/): If you’re vacillating between the extremely popular Quarkus and Spring Boot microservices frameworks for building cloud-native Java apps, we’re here to help. - [Scary Developer Stories to Tell in The Dark](https://rollbar.com/blog/developer-horror-stories-2021/): We've all heard developer horror stories. Here are some that you submitted to Rollbar. Make sure to turn on the light and read on with caution! - [Javascript Error Tracking with Rollbar](https://rollbar.com/platforms/javascript-error-tracking/): Install our JavaScript SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - [How to Throw & Handle Scala Exceptions](https://rollbar.com/blog/how-to-throw-handle-scala-exceptions/): Here's how to respond to and investigate the cause of exceptions in Scala: 1. Try/Catch → 2. Finally Clauses → 3. Custom Exceptions. - [6 Ways Artificial Intelligence Improves Software Development](https://rollbar.com/blog/6-ways-artificial-intelligence-improves-software-development/): Artificial intelligence is transforming software development. From the code to the deployment, AI is slowly but surely upping its game... ### Apple Error Tracking with Rollbar > Install our Apple SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-20 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/apple-error-tracking/ --- - [What is the Quickest Way to Show All PHP Errors](https://rollbar.com/blog/what-is-the-quickest-way-to-show-all-php-errors/): Viewing PHP errors is critical for developers to troubleshoot an application. Learn how to show all PHP errors and warning notifications. - [Development Updates](https://rollbar.com/development-updates/): - [.NET Error Logging Best Practices](https://rollbar.com/blog/dotnet-error-logging-best-practices/): Following .Net error logging best practices helps make sure they contain the right information when needed. - [ProTips](https://rollbar.com/protips/): Watch our Rollbar Tip of the Day videos where we share with you tips and tricks on how to get the most out of Rollbar. - [Monolithic vs Microservices Architecture](https://rollbar.com/blog/monolithic-vs-microservices-architecture/): We look at the key differences between using a monolithic and microservices architecture as well as their inherent strengths and weaknesses. ### Scala Error Tracking with Rollbar > Install our Scala SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-20 - Modified: 2024-11-05 - URL: https://rollbar.com/platforms/scala-error-tracking/ --- ### Spring Error Tracking with Rollbar > Install our Spring SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-20 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/spring-error-tracking/ --- ### Android Error Tracking with Rollbar > Install our Android SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-20 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/android-error-tracking/ --- - [How to Make a Build vs. Buy Decision for a Software Solution](https://rollbar.com/blog/build-vs-buy-software-solution/): Sourcing the perfect product for your engineering team? Buying software is often the answer, but there is a lot you need to consider first. - [Blog](https://rollbar.com/blog/): ### Java Error Tracking with Rollbar > Install our Java SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-20 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/java-error-tracking/ --- - [Rollbar Academy](https://rollbar.com/rollbar-academy/): Watch our training webinars to learn more about features, and check out our Rollbar Workflow webinars to get the most out of using Rollbar! - [Automate Secure Access Management With Rollbar + Okta](https://rollbar.com/blog/automate-secure-access-management-with-rollbar-okta/): At Rollbar, we know security matters. Our customers represent the leading technology companies in the world today, and keeping their... - [Improve Error Detection and Speed Up Resolution in Selenium Tests](https://rollbar.com/blog/improve-error-detection-and-speed-up-resolution-in-selenium-tests/): Reducing errors in production is critical for all engineering teams. The earlier the error is detected, the cheaper it is... ### Django Error Tracking with Rollbar > Install our Django SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-20 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/django-error-tracking/ --- - [Can Constructors Throw Exceptions in Java](https://rollbar.com/blog/can-constructors-throw-exceptions-in-java/): The short answer is yes! Of course, properly implementing exceptions in your constructors is essential to getting the best results. Learn how here. - [vs-placeholder](https://rollbar.com/vs/): - [How to Solve the Most Common Runtime Errors in Java](https://rollbar.com/blog/most-common-java-runtime-errors/): A runtime error in Java is an application error that occurs during the execution of a program. Learn how to solve the most common runtime errors in Java. - [Introducing the New Rollbar Integration for GitHub Enterprise Server](https://rollbar.com/blog/introducing-the-new-rollbar-integration-for-github-enterprise-server/): We’re excited to launch our new integration with GitHub that supports GitHub Enterprise Server customers. This allows companies using GitHub… - [Persona: QA/Testing](https://rollbar.com/solutions/persona-qa-testing/): - [Accelerating Code Quality with DORA Metrics](https://rollbar.com/blog/accelerating-code-quality-with-dora-metrics/): DORA metrics help DevOps teams make data-driven decisions to continuously improve practices, deliver software faster, and ensure that it remains reliable. - [Handling Node.js Exceptions](https://rollbar.com/blog/handling-node-js-exceptions/): Debugging errors is the hardest part of programming. Errors can appear in your code in a variety of ways, whether as syntax errors, errors… - [How to Throw Exceptions in Python](https://rollbar.com/blog/throwing-exceptions-in-python/): This guide is the ultimate resource for Python developers who want to design, implement, and maintain applications that can deal with errors properly. - [Most Common Java Exceptions](https://rollbar.com/blog/most-common-java-exceptions/): We take a look at how Java handles exceptions, checked vs. unchecked exceptions, and then the ten most common exceptions you’ll face in Java. ### Flask Error Tracking with Rollbar > Install our Flask SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-20 - Modified: 2022-06-16 - URL: https://rollbar.com/platforms/flask-error-tracking/ --- ### Using JavaScript source maps to debug errors - Published: 2017-02-13 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/using-javascript-source-maps-to-debug-errors/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript Some of the most common questions we get here at Rollbar deal with source maps: What are source maps and what do they do? How can you enable source mapping? Why aren't your source maps working properly? Let's explore Javascript source maps together, starting with the basics. {: . highlightbox} Existing Rollbar users, go to our JavaScript source maps documentation to get started. As web developers, we have two major goals. First, we want a highly performant website. Second, we want that website to be easy to debug and maintain. Unfortunately, these goals are often at odds with one other. If we minimize our JavaScript, we can achieve some of these goals. Minimizing JavaScript reduces the download size, and the smaller the payload for our website users, the better. If we combine our JavaScript files, we can also reduce the number of http requests. For a highly performant website, we want to reduce the number of requests the browser has to make in order to fully load, render, and process the page. Furthermore, with transpilers, we can start using new JavaScript features before they are implemented by the browsers. Unfortunately, minimizing JavaScript also comes with some downsides: it's hard to debug, and we lose original filenames, line numbers, and column numbers. Luckily, source maps solve this problem. A source map is a file that provides a mapping from the minified line and column numbers back to the original file, line, and column. Source maps use Base64 VLQ encoding to reduce... --- - [Spring Boot Logging](https://rollbar.com/blog/spring-boot-logging/): Logging in Spring Boot is very flexible and easy to configure. Spring Boot supports various logging providers. Learn more about Spring Boot logging here. - [How to Solve ClassCastException in Java](https://rollbar.com/blog/how-to-solve-classcastexception-in-java/): When your code attempts to cast an object to another class of which the original object is not an instance, a ClassCastException is thrown. Learn how to fix it. ### Python Error Tracking with Rollbar > Install our Python SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-20 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/python-error-tracking/ --- - [How to Resolve InvocationTargetException in Java](https://rollbar.com/blog/how-to-resolve-invocationtargetexception-in-java/): The InvocationTargetException wraps an exception thrown by an invoked method or constructor. Learn how to handle it. ### How GorillaStack used Rollbar to level up logging with the Serverless framework - Published: 2017-02-07 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/how-gorillastack-used-rollbar-to-level-up-logging-with-the-serverless-framework/ - Categories: product - Tags: integrations Our friends at GorillaStack wanted to share how they set up Rollbar with the Serverless framework, and made a handy tool so you can do the same. Here at GorillaStack, we are big lovers of the Serverless framework. By default, the Serverless framework uses CloudWatch logs to store any system log messages and output from your lambda code. Pretty quickly, we found ourselves needing to escalate log messages such that we could be notified of application errors and act on them more proactively. Enter Rollbar. I have been using their service on many side projects since discovering their free tier some years ago. We also robbed them of almost all their swag at the last re:Invent conference. Rollbar is a great system to use for escalating errors and messages from your applications. Best of all, there are options for adding it as a transport for popular logging solutions. As users of the node module 'winston', we found a transport available for Rollbar. Unfortunately, it wasn’t quite up to date, and didn’t format certain argument orders correctly, so we forked it ourselves. :) https://github. com/GorillaStack/winston-rollbar Using this integration with your application logging library, messages of all levels will still be logged to CloudWatch logs, but those at or above a configured log level will be escalated to Rollbar, which will then notify you of application errors as they occur. As we usually do, we decided to publish an open source example to demonstrate our approach. To get started, the only thing... --- - [How to Fix java.lang.NoSuchMethodError in Java](https://rollbar.com/blog/how-to-fix-java-lang-nosuchmethoderror-in-java/): A java.lang.NoSuchMethodError is a runtime error which occurs when a method is called that exists at compile time, but does not exist at runtime. Let's fix it. ### Sinatra Error Tracking with Rollbar > Install our Sinatra SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-19 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/sinatra-error-tracking/ --- - [How to Fix OutOfMemoryError: Permgen Space Exceptions in Java](https://rollbar.com/blog/how-to-fix-java-lang-outofmemoryerror-permgen-space-exceptions-in-java/): Is your permanent generation area in memory exhausted? Here's how to adjust the maximum size of the PermGen area and find out what caused this Java error. - [Pricing](https://rollbar.com/pricing/): Find the plan that’s right for your team. Get started for free. Change anytime. ### Connect Rollbar to your source code and issues in GitLab - Published: 2017-01-31 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/connect-rollbar-to-your-source-code-and-issues-in-gitlab/ - Categories: product - Tags: integrations Good news for GitLab users! You can now deep link error stack traces in Rollbar directly to the code in your GitLab repos. Rollbar now supports GitLab's native issue tracking features, allowing you to seemlessly debug and manage new issues as they happen in your existing workflow. We’ve rolled out support for source control for both GitLab. com and self-hosted. Issue tracking only supports GitLab. com, self-hosted support is coming soon. Linking source code in GitLab to Rollbar stack traces (/docs/gitlab/" alt=""> Whenever Rollbar detects errors in your application, you receive a detailed stack trace. By connecting your GitLab repos, you can also click through from the stack trace in Rollbar directly to the underlying code that broke in GitLab. It's like having x-ray vision for your application errors. Turn errors in Rollbar into trackable issues in GitLab (/docs/gitlab/" alt=""> (/docs/gitlab/" alt=""> (/docs/gitlab/" alt=""> Rollbar now supports GitLab issue tracker. It's a fairly straightforward integration: When viewing an error in Rollbar, simply click the "Create GitLab Issue" button to send the error details to GitLab. You can also link an error in Rollbar to an existing GitLab Issue, by copying and pasting the URL for the GitLab Issue you would like to link. When you connect Rollbar and GitLab together, your debugging and error monitoring will become much more efficient. For more information, visit our GitLab documentation or press release for details. Level up your issue and error tracking workflow when you connect Rollbar to GitLab. GitLab users, signup and... --- ### Rails Error Tracking with Rollbar > Install our Rails SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-19 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/rails-error-tracking/ --- - [Careers](https://rollbar.com/careers/): ### Ruby Error Tracking with Rollbar > Install our Ruby SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-19 - Modified: 2024-11-05 - URL: https://rollbar.com/platforms/ruby-error-tracking/ --- - [Contact Us](https://rollbar.com/contact/):  ### Rollbar integration for the Ionic framework - Published: 2017-01-06 - Modified: 2025-02-19 - URL: https://rollbar.com/blog/rollbar-integration-for-the-ionic-framework/ - Categories: Code Tutorials - Tags: SDK Our friends at Cuttlesoft wanted to share how they use Rollbar to detect errors in Ionic built applications. Enjoy! At Cuttlesoft, we use Rollbar's excellent full-stack error monitoring service for pinpointing and fixing tricky bugs. Our team loves Rollbar for its integrations with other popular services (we get our error notifications via Slack so we’re constantly in the know). For building hybrid mobile and progressive web apps, we generally rely on Ionic. Ionic is an open-source framework for hybrid mobile app development maintained by Drifty. Built with AngularJS and Cordova, Ionic is a popular tool for mobile developers everywhere. To combine these two, we've developed a method for integrating Rollbar error tracking with the Ionic stack. We find it so useful that our co-founder and CTO Emily Morehouse wrote a tutorial for using our method of integration so that you too can harness the bug-squashing power of Rollbar + Ionic. Using just a few tools, we'll show you how to make Rollbar work in perfect sync with Ionic. Since Ionic is a hybrid framework, there are a few different services where Rollbar needs to be plugged in: Native iOS Native Android JavaScript To do this, we'll use a few different plugins that help monitor each OS and stack layer. We'll use Emily Morehouse's fork of the Cordova Rollbar plugin to catch native errors, and the ng-rollbar AngularJS plugin to catch our Ionic application errors. Now, let's dive in. The first (and easiest) plugin to set up is the Cordova plugin,... --- ### Laravel Error Tracking with Rollbar > Install our Laravel SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-14 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/laravel-error-tracking/ --- ### Better workflows for managing errors - Published: 2016-12-21 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/better-workflows-for-managing-errors/ - Categories: product - Tags: triage Happy Holidays Rollbar users! We're gifting you a handful of updates to a key feature in Rollbar, the Live Error Feed. We recently rolled out some improved fucntionality to the Live Error Feed, most notably the ability to quickly view and assign ownership of errors with your team. Instantly know who's working on what and ensure that urgent production issues don't get overlooked. Here's an overview of how these updates will help you and your team members better manage errors in Rollbar: Assign individual errors directly within the feed Multi-select and assign errors Filter to view all assigned or unassigned errors Filter by owner Quickly Resolve and Mute errors Easily change severity of errors Improved look and feel By streamlining the live error feed, we hope that you and your team will save more time in your day-to-day debugging efforts. We appreciate your feedback. Email support@rollbar. com and let us know if there's anything you think we could do better. If you haven’t already, signup for a 14-day free trial of Rollbar and let us help you defeat annoying errors in your applications. :-) --- ### Symfony Error Tracking with Rollbar > Install our Wordpress SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-14 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/symfony-error-tracking/ --- ### Wordpress Error Tracking with Rollbar > Install our Wordpress SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-14 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/wordpress-error-tracking/ --- ### Ruby Exception Handling - Primer for Dealing with Errors in Ruby - Published: 2016-12-19 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/ruby-exception-handling-primer-for-dealing-with-errors-in-ruby/ - Categories: Code Tutorials, Ruby - Tags: ruby Ruby is a popular open source programming language that is highly flexible, and used for everything from basic "hello world" apps to sophisticated, dynamic programs. Whether you've been programming in Ruby for years or you're a complete beginner, tracking down errors in your Ruby app is simple and easy. Let's go through some basic Ruby error handling, and discover how easy it can be to integrate Rollbar into your Ruby app to automatically log and report your exceptions. Raise and Rescue Exceptions Ruby's default exception handling is to terminate the program in the event of an exception. That's not really useful when you're trying to build a complex web application for multiple users. Luckily there's a way around this - declaring exception handlers. Exception handlers are blocks of code that are called if an exception occurs in the execution of another block of code in your program. For the most basic Ruby exception handling, you need to know how to Raise and Rescue an exception. When you Raise an exception, you stop the normal flow of the program, and execute the code that deals with handling an error. This code can either deal with the error in some way, or terminate the program. If you provide a Rescue clause in your error handler, you can choose how to deal with the exception; without it, the program will simply terminate. Ruby Exception Hierarchy Ruby has a predefined Exception class, with quite a few subclasses that can be used for basic error... --- - [Free Trial](https://rollbar.com/free-trial/): ### PHP Error Tracking with Rollbar > Install our PHP SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-09 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/php-error-tracking/ --- ### Join Rollbar at AWS re:Invent - Published: 2016-11-21 - Modified: 2025-02-19 - URL: https://rollbar.com/blog/join-rollbar-at-aws-reinvent/ - Categories: company - Tags: Events Join us this year at Amazon Web Services annual conference, re:Invent! Rollbar will be participating along side of Atlassian and other Atlassian ecosystem partners like StatusPage, Splunk, Puppet, Xmatters and Workato. We will all be in the Atlassian booth demonstrating how our solutions work better together. Come by and check it out - booth 2446. Come join us at the event and see how integrating Rollbar’s error monitoring with Atlassian’s products provides teams with: Instant error grouping and aggregation: Errors are grouped by root cause and linked to your source code within Bitbucket. Real-time notifications: Intelligent alerting rules configured for JIRA. Easy workflow and prioritization: Discover the most impactful errors with data and create issues in JIRA instantly with rich data, contextual details and error analytics. Faster time to resolution: Debug, deploy fixes and track regressions much faster when your error data moves through JIRA and Bitbucket automatically. We'd love to chat with you in person at AWS re:Invent. Make plans to stop by booth 2446 and say hi. We look forward to meeting you. --- - [Free Demo: Error Monitoring and Debugging with Rollbar](https://rollbar.com/request-a-demo/): Join us for an interactive demo and experience all the capabilities of our platform. We will show you how to monitor errors and debug them with Rollbar. ### Vue Error Tracking with Rollbar > Install our Vue.js SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-09 - Modified: 2024-11-05 - URL: https://rollbar.com/platforms/vue-error-tracking/ --- - [Integrations: Terraform](https://rollbar.com/integrations/terraform/): ### Deep link stack traces to Bitbucket and track Pipeline deploys - Published: 2016-11-14 - Modified: 2025-04-22 - URL: https://rollbar.com/blog/deep-link-stack-traces-to-bitbucket-and-track-pipeline-deploys/ - Categories: product - Tags: integrations Good news for Bitbucket users! You can now deep link error stack traces in Rollbar directly to the code in your Bitbucket repos. Rollbar also now integrates with Bitbucket Pipelines. Deep links to your source code in Bitbucket Configure Pipelines to notify Rollbar of new deploys Once Pipelines is configured, every deploy of your app will automatically be tracked in Rollbar. Making it easier to identify which code changes led to critical production issues. Rollbar integrates with the following Bitbucket features, Bitbucket Issue Tracker, and now Bitbucket repos and Bitbucket Pipelines. Don't forget Rollbar also integrates with other Atlassian products, like JIRA, HipChat and of course Bitbucket. Dealing with errors can be time consuming and often an interruption in your everyday development workflow. It's important that we continue to work to improve this process and that we extend the capabilities and insights of your current toolset and workflows. We hope that you enjoy the new integration options! Supercharge your issue and error tracking workflow when you connect Rollbar to Bitbucket. Sign up for a 14-day free trial of Rollbar and let us help you take control of your annoying production errors. --- ### React Native Error Tracking with Rollbar > Install our React SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-09 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/react-native-error-tracking/ --- - [Integrations: GitHub](https://rollbar.com/integrations/github/): ### Correlate errors to feature rollout tests with Rollbar and Split - Published: 2016-11-03 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/correlate-errors-to-feature-rollout-tests-with-rollbar-and-split/ - Categories: product - Tags: integrations Our friends at Split wanted to let you know that you can now integrate Rollbar with Split. And take control of your error handling and feature rollouts - together. Enjoy! :-) Rollbar is an excellent error monitoring service that works across all of the languages Split supports. It’s great at telling you what’s going wrong and where, but doesn’t necessarily have all the details on why. That’s where Split comes in, with our new Rollbar integration. We built Split to help teams take control of their deployments by slowly delivering features to targeted groups of users. In this way you can limit the scope of trouble when things do go wrong, killing the feature until it’s fixed, then slowly rolling it out again. Our new integration brings rollout metadata from features in Split into the Rollbar interface, so teams can quickly correlate errors against the latest deployments. When it looks like a recently-released feature was responsible for the degradation of service, Rollbar users can click-through to Split to quickly take action, saving valuable time in the remediation process. Here's a a quick demo on how Rollbar and Split work together to make your controlled feature rollouts more productive. Like you, we care deeply about giving your end-users the best experience possible, and Split’s controlled rollouts paired with Rollbar’s robust error notification make delivering on that promise easy. Our Rollbar integration is free to customers of both services, and you can always try Split free for 30 days. To learn more,... --- - [Integrations: Atlassian](https://rollbar.com/integrations/atlassian/): ### React Error Tracking with Rollbar > Install our React SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-08 - Modified: 2024-11-05 - URL: https://rollbar.com/platforms/react-error-tracking/ --- ### A better error monitoring workflow Rollbar + Atlassian - Published: 2016-10-12 - Modified: 2025-04-22 - URL: https://rollbar.com/blog/a-better-error-monitoring-workflow-rollbar-atlassian/ - Categories: product - Tags: integrations Dealing with errors can be time consuming and often an interruption in your everyday development workflow. It's important that we at Rollbar continue to work to improve this process and that we extend the capabilities and insights of your current toolset and workflows. Atlassian users can now rejoice! Debugging errors just got a whole lot easier and faster. With our latest improvements and integrations with Atlassian products you can now keep tabs on your application directly within the tools you're already using to build it. No more switching between multiple tools and services to debug and deploy code. Creating a seamless user experience and unified workflow around production errors. Integrating Rollbar’s error monitoring with Atlassian’s products provides teams with: Instant error grouping and aggregation: Errors are grouped by root cause and linked to your source code within Bitbucket. Real-time notifications: Intelligent alerting rules configured for HipChat and JIRA. Easy workflow and prioritization: Discover the most impactful errors with data and create issues in JIRA instantly with rich data, contextual details and error analytics. Faster time to resolution: Debug, deploy fixes and track regressions much faster when your error data moves through HipChat, JIRA and Bitbucket automatically. Take your production error monitoring to the next level and maintain your existing workflow. By integrating Rollbar with JIRA, HipChat and Bitbucket you can detect, diagnose and resolve errors in less than 2 minutes! By integrating Rollbar with JIRA, HipChat and Bitbucket you can Detect, diagnose and resolve errors in less than 2 minutes!... --- ### Express Error Tracking with Rollbar > Install our Express SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-08 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/express-error-tracking/ --- - [Integrations: Google Cloud](https://rollbar.com/integrations/google-cloud/): - [Compliance GDPR](https://rollbar.com/compliance/gdpr/): ### Rollbar add-on now available for JIRA - Published: 2016-10-10 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/rollbar-add-on-now-available-for-jira/ - Categories: product - Tags: integrations We’ve recently released a new JIRA Add-On to help extend your application error monitoring workflow. JIRA is one of the leading issue tracking solutions used by agile teams. Enabling them to plan, track, release and support building better software. Send rich error data to JIRA Connect Rollbar to JIRA and enhance issues with detailed error data like stack trace, error status, total occurrences, unique IPs affected, first seen date, last seen date and the date the error reoccurred and regressed. All conveniently displayed, linked and accessible within JIRA. Here are a few of the ways you can improve your monitoring workflow when you connect Rollbar with JIRA and install the new Rollbar for JIRA add-on: Link and display root cause exception data in issues. Set notification rules to automatically open new issues. Create and assign JIRA issues with a few clicks. Bidirectional syncing, update statuses in both Rollbar and JIRA. (/integrations/atlassian/" alt="jira-rollbar"> PRO TIP / REMINDER: Automatically (and manually) create JIRA issues from Rollbar errors when you configure JIRA as a Notification Channel in Rollbar. Supercharge your issue tracking when you use JIRA Notications + Rollbar for JIRA Add-On together. Check out our JIRA documentation for details. (/integrations/atlassian/" alt=""> To install the new Rollbar for JIRA add-on: In your JIRA account go to Admin > Add-ons Search for "Rollbar" Click "Install" on the Rollbar for JIRA add-on OR Go to our Atlassian Marketplace listing for JIRA Click 'Get it Now' We hope that by bringing Rollbar data into JIRA you... --- ### Ember Error Tracking with Rollbar > Install our Ember SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-08 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/ember-error-tracking/ --- - [Support](https://rollbar.com/developer/): Get the help you need — find product docs, guides, learning resources or submit a support ticket for any urgent requests. - [solutions](https://rollbar.com/solutions/): ### Angular Error Tracking with Rollbar > Install our Angular SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-08 - Modified: 2024-11-05 - URL: https://rollbar.com/platforms/angular-error-tracking/ --- ### How CircleCI uses Rollbar to level up their continuous delivery - Published: 2016-09-22 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/how-circleci-uses-rollbar-to-level-up-their-continuous-delivery/ - Categories: company - Tags: customer-stories I'm excited to share a fun and insightful interview our friends at The Changelog recently did with Paul Biggar, Founder at CircleCI (and Rollbar super-user). We're big supporters and fans of The Changelog and we asked their host and master interviewer Adam, to help us produce a few short interviews with our customers. It's a fun project that lets us pull back the curtain and learn more about how our customers monitor their applications and processes for handling errors and deploying code. Enjoy! {: . highlightbox} Featured in this interview: Adam Stacoviak, Founder & Chief Editor at The Changelog, a podcast on software development and open source. Subscribe via iTunes or RSS. Paul Biggar, Founder of CircleCI, a leading continuous integration platform. Adam: Hey there. Adam here, editor-in-chief of Changelog. I'm here with Paul Biggar, founder of CircleCI (circleci. com) and we're gonna talk about how important Rollbar is to him and his team to help them deliver on their brand promise to ship better coder faster. Paul, tell me about CircleCI. What types of services do you provide? Paul: CircleCI is a continuous integration and continuous delivery platform. Our customers are the developers in an organization. Developers rely on us heavily as part of their deployment workflows. Adam: I guess deploying obviously is important. You've got the phrase 'ship it' for a reason, so it's a critical piece to an ops or developer organization to be able to ship code fast, ship code reliably. Paul: Right. The idea is... --- - [Use Cases](https://rollbar.com/use-cases/): Rollbar can help you discover and fix errors faster across your development pipeline by uncovering and resolving them in real-time, before users complain. ### Node.js Error Tracking with Rollbar > Install our Node.js SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-08 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/node-error-tracking/ --- ### Improved ruby error reporting with our latest gem updates - Published: 2016-09-14 - Modified: 2023-01-19 - URL: https://rollbar.com/blog/improved-ruby-error-reporting-with-our-latest-gem-updates/ - Categories: product - Tags: ruby Recently, we released version 2. 13. 0 of the rollbar-gem. This update is full of new features and some minor bug fixes. The full release notes can be found here, Release 2. 13. 0. Here are a few of the highlights in this update: 1. Allow overriding configuration Many customers have asked to implement a way to override the default configuration for a specific block of code. Some of them use the same process to send reports to our API for different projects, some need to change the environment, and others want to use one async handler for a single block of code (or none at all). So, we've added a new method called Rollbar. with_config to do this. It receives a Hash object with the configuration overrides you want to use for the given block. The configuration options can be found at Configuration. The Hash passed to with_config should be formatted like {environment: 'specific-environment'}. For example: Rollbar. with_config(use_async: false) do begin # do work that may crash rescue => e Rollbar. error(e) end end This method looks similar to Rollbar. scoped, and Rollbar. with_config uses it internally. Now Rollbar. scoped can receive a second argument with the configuration overrides for the given block of code. So if you need to set a new payload scope and new config for a code block, you can write: scope = {context: 'foo'} new_config = {framework: 'Sinatra'} Rollbar. scoped(scope, new_config) do begin # do work that may crash rescue => e Rollbar. error(e)... --- - [Error Monitoring](https://rollbar.com/error-monitoring/): ### Javascript Error Tracking with Rollbar > Install our JavaScript SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-08 - Modified: 2025-03-17 - URL: https://rollbar.com/platforms/javascript-error-tracking/ --- - [Knowledge Base](https://rollbar.com/knowledge-base/): ### Development Updates - Published: 2022-02-04 - Modified: 2022-02-12 - URL: https://rollbar.com/development-updates/ --- - [About](https://rollbar.com/about/): Developers are held back from producing quality software because of unforeseen errors that appear during production. Our mission is to make life easier for them. ### ProTips > Watch our Rollbar Tip of the Day videos where we share with you tips and tricks on how to get the most out of Rollbar. - Published: 2021-12-06 - Modified: 2023-01-25 - URL: https://rollbar.com/protips/ --- ### Blog - Published: 2021-07-14 - Modified: 2023-10-12 - URL: https://rollbar.com/blog/ --- - [Learn How To Monitor and Resolve Errors in Your Language](https://rollbar.com/guides/): ### 5 ways to reduce noise when logging your JavaScript exceptions - Published: 2016-08-16 - Modified: 2021-11-22 - URL: https://rollbar.com/blog/5-ways-to-reduce-noise-when-logging-your-javascript-exceptions/ - Categories: product - Tags: grouping Developing and maintaining user facing software is a challenge and a very distracting one at that. :-) Often times it can be difficult trying to stay focused on what matters most. It can be hard to tell what's really broken and why, with dozens of alerts notifying you every other minute. Volatile... The client-side being one of the most volatile of them all. When we attempt to capture errors in this environment we can very quickly get overwhelmed by lots and lots of noise. This noise is typically generated from many different places. Some examples would be old outdated browsers, browser extensions, third-party scripts, bots, spiders, etc. Rollbar's JavaScript error monitoring supports many different ways of reducing this noise so you can be more proactive in what and how you're collecting your JavaScript exceptions. 1. Ignore noisy errors on the client-side Rollbar. js supports the ability to ignore errors on the client-side. This option is really great because you have access to the entire payload and can filter by any value in it. By doing this the error will never be sent to the Rollbar API. This is supported via the checkIgnore configuration option. var _rollbarConfig = { ... checkIgnore: function(isUncaught, args, payload) { // Code here to determine whether or not to send the payload // to the Rollbar API } ... }; Let's break down the function value. First the parameters passed to the function. isUncaught: This is true if the error bubbled up to window. onerror or... --- ### Rollbar Academy > Watch our training webinars to learn more about features, and check out our Rollbar Workflow webinars to get the most out of using Rollbar! - Published: 2021-06-16 - Modified: 2023-06-01 - URL: https://rollbar.com/rollbar-academy/ --- - [Compliance](https://rollbar.com/compliance/): Rollbar helps developers deliver better software faster by providing rich, real-time application error data, without compromising security and compliance. ### vs-placeholder - Published: 2021-06-02 - Modified: 2021-09-29 - URL: https://rollbar.com/vs/ --- ### SAML-based Single Sign-On (SSO) now available - Published: 2016-07-18 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/saml-based-single-sign-on-sso-now-available/ - Categories: product - Tags: security If your team uses Google Apps for Work or Okta, you can now access your Rollbar account using SAML-based single sign-on (SSO). SSO via Google Apps and Okta is available on all paid plans, and can be setup in minutes by an admin. Once SSO is enabled, users can access your Rollbar account with just a click from the Google App Drawer or Okta My Applications screen. Google App Drawer Okta My Applications If Google or Okta-based SSO is enabled on your account, then SSO options will show up on the login screen whenever you are prompted. Ready to set up SSO for your account? Check out our step-by-step documentation. --- - [Integrate Existing Tools and Workflows With Rollbar](https://rollbar.com/integrations/): Don't be afraid of disrupting your workflows with new software. Rollbar has native and custom integrations so you can continue using your existing tools. ### Persona: QA/Testing - Published: 2021-05-27 - Modified: 2021-06-10 - URL: https://rollbar.com/solutions/persona-qa-testing/ --- - [Automate](https://rollbar.com/automate/): Most software development life cycles consist of finding errors, let alone fixing them. Spend more time developing new features and let Rollbar find errors for you. - [Resolve Errors The Right Way](https://rollbar.com/resolve/): You need to know what triggered an error before you can fix it. See the exact line of code and the timeline of browser events leading up to an error with Rollbar. ### Two-Factor Authentication now available for all users - Published: 2016-06-23 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/two-factor-authentication-now-available-for-all-users/ - Categories: product - Tags: security We’re excited to introduce Two-Factor Authentication (2FA) in Rollbar as an optional extra layer of security on every user’s account. 2FA reduces your risk of having your account hacked through phishing, credential exploitation or other remote attacks. We highly recommend enabling Two-Factor Authentication for your entire team. It’s easy to setup (and free)! To enable 2FA, go to your user settings page and click Enable under Two-Factor Authentication. Then scan the QR code, and enter in your two-factor authentication verification token from an authentication app of your choice. One of the more popular authentication apps is Google Authenticator (available free for iOS and Android). Once you're all setup, you’ll be prompted for your token whenever you log in. 2FA is available for all users in all plans at no additional charge. To learn more about Two-Factor Authentication in Rollbar, check out our documentation. --- - [Prioritize and Fix Errors Based on Severity](https://rollbar.com/prioritize/): See what errors are affecting customers, when and how often they’re occurring, what browsers and IPs they’re affecting, and assign errors to colleagues instantly. - [Discover New and Reactivated Errors in Real Time](https://rollbar.com/discover/): Monitor errors in all projects in one view. Rollbar groups similar errors together for you and also provides the option to manually merge errors to fit your needs. ### Using Rollbar to unravel existing Laravel applications - Published: 2016-05-24 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/using-rollbar-to-unravel-existing-laravel-applications/ - Categories: Code Tutorials, PHP - Tags: laravel {: . highlightbox} Read our new blog Announcing Laravel error monitoring with Rollbar! About 6 months ago I inherited a project (let’s call it Project Mayhem) that was grossly neglected by the original developer. I won’t go into too many details, but let’s just say that I’ve seen spaghetti with more order than this codebase had. No unit tests, no documentation, illogical architecture, and an expecting client... I felt like I was literally living in one of those nightmares where I’m late for the final exam in a class I passed a decade ago. The icing on this terrible cake was that I also inherited the hosting and was graciously provided with absolutely no specs in order to replicate the previous production environment. I was flying blind, and if it weren’t for Rollbar's php error logging tools, this project would have crashed and burned long before I could make any meaningful changes to it. I was able to manage and prioritize exceptions as they happened, which gave me the information I needed to build out a proper hosting architecture and quickly fix existing issues in the codebase. Suffice it to say, I am a big fan of Rollbar. Luckily for me, Project Mayhem was built on Laravel, an increasingly popular PHP framework with an impressive array of third-party plugins; one of which just so happens to be made specifically for Rollbar. Getting Rollbar setup on Laravel was as simple as running just a few commands, but what if the project... --- - [Rollbar vs Sentry | A Superior Sentry Alternative for Error Tracking](https://rollbar.com/vs/sentry/): ### Streamline monitoring with Rollbar & Datadog - Published: 2016-04-25 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/streamline-monitoring-with-rollbar-datadog/ - Categories: product - Tags: integrations Good news! We’ve recently released a new integration with Datadog to help extend your error monitoring options. Datadog is a leading cloud monitoring solution that brings metrics from all of your apps, tools & services (like Rollbar) into one place. Now Rollbar and Datadog users can syndicate exceptions, errors and code deployments as 'Events’ within Datadog (example below). Here's a few of the ways you can improve your monitoring when you connect Rollbar and Datadog: Get notified of exceptions, errors, code deployments in your event stream Filter notifications by severity, environment, host, users and more Search for exceptions in your graphs Discuss exceptions with your team Most important - spend less time debugging issues We hope that by bringing your Rollbar data into Datadog you can streamline your monitoring efforts and reduce some of the noise in your day to day workflow. For more information, check out our integration docs for Datadog. Also, to see if Rollbar integrates with other tools you’re using, see our full list of integrations here. If you haven’t already, signup for a 14-day free trial of Rollbar and let us help you defeat errors in production. :-) --- - [Rollbar vs New Relic](https://rollbar.com/vs/new-relic/): ### Pricing > Find the plan that’s right for your team. Get started for free. Change anytime. - Published: 2021-05-20 - Modified: 2025-02-25 - URL: https://rollbar.com/pricing/ --- - [Resources](https://rollbar.com/resources/): Welcome to our Rollbar Library! We hope you find something interesting to read, watch and share. ### 6 ways to improve error grouping in Rollbar - Published: 2016-04-11 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/6-ways-to-improve-error-grouping-in-rollbar/ - Categories: product - Tags: grouping You're two weeks into using Rollbar. You've watched in amazement as issue after issue comes in without a single customer complaint to accompany them. How did you ever find errors before! ? Now that your unresolved errors have drastically decreased, you've started to notice a handful of Rollbar items that all seem to be exactly the same issue. Maybe you've been notified that your UI has exceeded the maximum call stack when calling a particular function. And in one case you found out that your database is actually missing several columns which got grouped into a single error. What's a new Rollbar user to do? Here's 6 steps to help you improve your error grouping in Rollbar: 1. Learn how Rollbar groups items. The Rollbar grouping algorithm attempts to be as smart as possible by grouping items by root cause. Error type items are grouped by a combination of platform, environment, error class, and stack trace information. Message type items are grouped by message text after stripping out certain number-like and date-like portions of the message. 2. Customize your error grouping. Custom grouping enables you to decide exactly how Rollbar will group your items. You can alter the title, change the fingerprinting (and therefore the grouping), and use any data you send to us to make it work! 3. Make sure you're setting the server root. Before grouping by filename, Rollbar will strip off whatever you're sending in the server root segment. This means that you can host the code... --- ### Careers - Published: 2021-05-17 - Modified: 2024-08-12 - URL: https://rollbar.com/careers/ --- - [Resolve Support Tickets Faster and Improve Customer Satisfaction](https://rollbar.com/solutions/customer-support/): Get all the contextual and historical information you need to find the root cause of every customer issue. HelpScout and Zendesk integrations supported. ### Contact Us - Published: 2021-05-17 - Modified: 2024-12-02 - URL: https://rollbar.com/contact/  --- ### Free Trial - Published: 2021-05-17 - Modified: 2024-07-17 - URL: https://rollbar.com/free-trial/ --- ### Query Rollbar data directly from our API - Published: 2016-02-15 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/query-rollbar-data-directly-from-our-api/ - Categories: product - Tags: monitor Good news for RQL users. Until recently RQL usage was limited to the Rollbar interface. That's no longer a problem. Now you can access RQL directly from our API. We like to believe that our interface provides just about everything you need to discover, investigate and resolve errors in your software. That being said, we know that everyone's needs are not the same. So, we created the Rollbar Query Language (RQL for short) to give Rollbar users more controls over their data. Many of our users have grown to depend on RQL for getting their day to day work done. RQL is a familiar SQL-like language for querying your Rollbar data. Here's a few ways that RQL can be useful: Want to find out the number of 500s your users experienced broken down by the url they were on at the moment? Search items using more complex filters than is possible on the Rollbar website. Search for items that occurred between two specific deploys Extend the power of RQL and make the perfect dashboard or tool with your queried error data directly from the API. For help, checkout our API documentation for RQL. For an example that runs on the data from our Live Demo check out the API-Examples repository on GitHub. New to Rollbar? Signup for a 14-day free trial and get instant insights into your application errors. --- ### Free Demo: Error Monitoring and Debugging with Rollbar > Join us for an interactive demo and experience all the capabilities of our platform. We will show you how to monitor errors and debug them with Rollbar. - Published: 2021-05-17 - Modified: 2024-11-22 - URL: https://rollbar.com/request-a-demo/ --- ### Rollbar add-on now available for Bitbucket - Published: 2015-06-11 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/rollbar-add-on-now-available-for-bitbucket/ - Categories: product - Tags: integrations On the heels of Atlassian's announcement of Atlassian Connect for Bitbucket yesterday, we're excited to introduce our very own Rollbar Add-On for the Bitbucket community. With the new Rollbar Add-On for Bitbucket and our recent Bitbucket Issue Tracker integration, you can now monitor and keep tabs on your errors and exceptions within Bitbucket. No more switching between multiple tools and services to debug and deploy code. Atlassian Connect for Bitbucket provides an integration architecture that embeds add-ons right within the their UI creating a seamless user experience and unified workflow. How to install the Rollbar Bitbucket add-on? If you're currently a user of Bitbucket, click on your avatar, select "Manage Account", and simply install the Rollbar add-on by selecting "Find new add-ons" from the left menu. Once the add-on is installed, Rollbar data will be accessible per your Bitbucket repo dashboard(s). Note: Atlassian Connect for Bitbucket uses fine-grained permissions to grant add-on access to repositories, issues, accounts, teams, snippets and pull requests. We are thrilled to be a part of Atlassian Connect for Bitbucket and for the opportunity to build and maintain a valuable add-on for the Bitbucket community and Rollbar users to find and fix errors even faster! What's next? We're currently working toward full support for Bitbucket which includes Issues, Source Control and Authentication. Stay tuned. Leave a comment or send a note to support@rollbar. com and let us know if you have any feedback or questions. Happy to help. --- ### Integrations: Terraform - Published: 2021-05-13 - Modified: 2021-06-11 - URL: https://rollbar.com/integrations/terraform/ --- ### Easier way to get your team on Rollbar - Published: 2015-05-19 - Modified: 2022-09-15 - URL: https://rollbar.com/blog/easier-way-to-get-your-team-on-rollbar/ - Categories: product - Tags: onboarding Joining and getting your team on Rollbar is now easier. Rollbar is better together and our latest account setting makes it easier to get everyone together. Introducing Email Domain Safelists. Previously the only way to join your team on Rollbar was being invited via email. Admins had to send email invites one by one. This can be tough for large organizations and fast growing engineering teams. With Email Domain Safelists, now you can set an email domain safelist, so that anyone with an address at a specified domain can join your account (once confirmed). No more one off invitations. Making the workflow for admins and new team members easier and less confusing. PROBLEM As we have grown we've seen more and more new users who are employees at companies that are already using Rollbar get lost trying to join their company’s account. The scenario looks something like this: You see a notification in your company's Slack, or an issue in JIRA, GitHub etc. Click link to view more details Hit the Rollbar login page (confusion ensues) Decide to signup and create a new separate account that is orphaned from your company’s account Ask Admin to add/invite you to their Team on Rollbar The new account you created gets abandoned :( SOLUTION With the new email domain safelist, anyone who signs up (from specified domains) automatically gets added to your account once they confirm their email address. Go to /settings/accounts/Name/ to setup (need to be on the Owners team to enable).... --- ### Integrations: GitHub - Published: 2021-05-13 - Modified: 2021-06-11 - URL: https://rollbar.com/integrations/github/ --- ### Edit and rename error item titles - Published: 2015-03-26 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/edit-and-rename-error-item-titles/ - Categories: product - Tags: monitor You can now rename/edit your error titles. Fix ugly long titles. Hover over, click, edit, and save. Enjoy! --- ### Integrations: Atlassian - Published: 2021-05-13 - Modified: 2023-01-25 - URL: https://rollbar.com/integrations/atlassian/ --- ### Connect Rollbar to Bitbucket Issue Tracker - Published: 2015-03-17 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/connect-rollbar-to-bitbucket-issue-tracker/ - Categories: product - Tags: triage New integration now available - Bitbucket Issue Tracker Supercharge your issue and error tracking workflow when you connect your Rollbar and Bitbucket accounts. New Items in Rollbar will instantly create Issues in your Bitbucket repo, or you can create and link Issues with the click of a button within Rollbar. Here's how: Go to your project's Settings, then Notifications, and select Bitbucket Issues from the list of channels. Click 'Connect with Bitbucket” to grant Rollbar access to your account. From here, you can choose which repository, and add/edit/remove rules for Issues to be created automatically. Like magic, your Rollbar error items and details now show up in your Bitbucket repo. Success! Create Bitbucket Issues manually Prefer to create Issues by hand? You can create an Issue directly from the error Item page in Rollbar, or link with an Issue that already exists. You can use this alongside the automatic rules; or, remove the rules for full manual control. What's next? We're working toward full support for Bitbucket, like we have for GitHub - Issues, Source Control and Authentication. I know Rollbar users who rely on Bitbucket in their workflows are rejoicing. :) Let us know if you have any feedback or questions. We're here to help. Deploy and enjoy! --- ### Integrations: Google Cloud - Published: 2021-05-13 - Modified: 2021-06-11 - URL: https://rollbar.com/integrations/google-cloud/ --- ### Daily, Hourly, New Errors and Trend graphs are now clickable - Published: 2015-03-10 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/daily-hourly-new-errors-and-trend-graphs-are-now-clickable/ - Categories: product - Tags: monitor Yes, that's correct. Daily, Hourly, New Errors, and Trend graphs are now clickable. You can find and fix errors even faster, and in less clicks. :D Common usability feedback we get from our users: Sure would be nice if I could click the dashboard bar graphs and sparklines to quickly see what caused a spike in error events etc. Couldn't agree more. We love aggregating data and we love it clickable. So we enabled it! The following are now clickable in the project Dashboard: Hourly Error/Critical Occurrences Daily Error/Critical Occurrences Daily New/Reactivated Items Trends (24 hour and 7 day) Trends are also clickable on the Items page. For reference Trends are these guys also called 'sparklines'. When viewing a specific error item, the Last 60 Minutes, Hours, and Days are now clickable and aggregate error data by your selection. We're excited to get this features out the door. It reduces a lot of friction in navigating Rollbar. One of many UI and UX improvements to come. :) Login today and go click through your data now. Deploy and enjoy! --- ### Compliance GDPR - Published: 2021-05-13 - Modified: 2021-06-14 - URL: https://rollbar.com/compliance/gdpr/ --- ### Support > Get the help you need — find product docs, guides, learning resources or submit a support ticket for any urgent requests. - Published: 2021-05-12 - Modified: 2021-09-08 - URL: https://rollbar.com/developer/ blog videos webinar libarary for the 4 boxes ( --- ### solutions - Published: 2021-05-12 - Modified: 2021-06-11 - URL: https://rollbar.com/solutions/ --- ### Use Cases > Rollbar can help you discover and fix errors faster across your development pipeline by uncovering and resolving them in real-time, before users complain. - Published: 2021-05-12 - Modified: 2024-12-19 - URL: https://rollbar.com/use-cases/ --- ### Using Logstash and Rollbar Together - Published: 2015-03-02 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/using-logstash-and-rollbar-together/ - Categories: product - Tags: integrations The infrastructure behind most modern web applications includes an assortment of tools for collecting server and application metrics, logging events, aggregating logs, and providing alerts. Most systems are made up of a collection of best-in-class tools and services, selected and deployed over time as team members arrive and depart, needs change, the system grows, and new tools are introduced. One of the challenges web development and operations teams face is collecting and analyzing data from these disparate sources and systems and then piecing together what’s happening by looking at multiple reports and dashboards. Two common pieces in this puzzle are Logstash and Rollbar. Logstash (and the Kibana web interface, both of which are heavily supported by and integrated with Elasticsearch) lets you collect and parse logs, store them in a central location, search and explore the data via the Kibana UI, and output events to other services. Logstash provides a powerful tool for taking logs in many different formats, converting them into JSON events, then routing and storing those events. Rollbar collects errors from your application, notifies you of those errors, and analyzes them so you can more efficiently debug and fix them. With a few lines of code or config changes to your application, you can make errors, complete stack traces, trends and affected user reports accessible via your Roller dashboard. Like Logstash, Rollbar collects and analyzes events represented in JSON. By connecting Logstash and Rollbar, you can not only centralize and analyze your system and application logs, but... --- ### Error Monitoring - Published: 2021-05-12 - Modified: 2021-06-11 - URL: https://rollbar.com/error-monitoring/ --- ### Knowledge Base - Published: 2021-05-12 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/ --- ### About > Developers are held back from producing quality software because of unforeseen errors that appear during production. Our mission is to make life easier for them. - Published: 2021-05-11 - Modified: 2024-12-05 - URL: https://rollbar.com/about/     --- ### Increasing max-open files for beanstalkd - Published: 2015-02-28 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/increasing-max-open-files-for-beanstalkd/ - Categories: Code Tutorials - Tags: behind-the-scenes Quick tip: If you are running out of file descriptors in your Beanstalkd process, use /etc/default/beanstalkd to set the ulimit before the init script starts the process. e. g. # file: /etc/default/beanstalkd BEANSTALKD_LISTEN_ADDR=127. 0. 0. 1 BEANSTALKD_LISTEN_PORT=11300 START=yes BEANSTALKD_EXTRA="-b /var/lib/beanstalkd -f 1" # Should match your /etc/security/limits. conf settings ulimit -n 100000 Lots of resources online tell you to update your /etc/security/limits. conf and /etc/pam. d/common-session* settings to increase your maximum number of available file descriptors. However, the default beanstalkd installation on Ubuntu 12. 04+ uses an init script that starts the daemon process using start-stop-daemon which does not use your system settings when setting the processes ulimits. Just add this line to your defaults and you're good to go! --- ### Learn How To Monitor and Resolve Errors in Your Language - Published: 2021-05-11 - Modified: 2022-04-13 - URL: https://rollbar.com/guides/ --- ### Compliance > Rollbar helps developers deliver better software faster by providing rich, real-time application error data, without compromising security and compliance. - Published: 2021-05-07 - Modified: 2025-02-19 - URL: https://rollbar.com/compliance/ --- ### Assign errors to your team - Published: 2015-02-26 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/assign-errors-to-your-team/ - Categories: product - Tags: triage Ever wanted to assign error items to other team members in Rollbar? Of course you have. Now you can. It is a pretty straight forward enhancement, but here is an overview. On the error ‘items’ details page, there's an “Assigned to" dropdown with the members of your team. Once assigned, we’ll shoot an email to that team member letting them know you assigned that specific item to them, including link and details. They'll be automatically added as a 'watcher' for that specific item and will receive notifications about any comments and updates. Assignment events will be listed in the item history section, so you can see who assigned it to whom, when. To quickly find items assigned to yourself or others on your team, search 'assigned:me', ‘assigned:username’, or 'assigned:unassigned' on the Items page. We're excited to get this out into the wild. Especially for some of the larger teams using Rollbar. Let us know what you think and how we can make it better for you and your team. --- ### Integrate Existing Tools and Workflows With Rollbar > Don't be afraid of disrupting your workflows with new software. Rollbar has native and custom integrations so you can continue using your existing tools. - Published: 2021-05-06 - Modified: 2025-04-22 - URL: https://rollbar.com/integrations/ "we --- ### Get notifications every time an error occurs - Published: 2015-02-26 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/get-notifications-every-time-an-error-occurs/ - Categories: product - Tags: monitor You can now setup notifications every time an error occurs. Previously specific error Notifications were only available for New Items and 10^th Occurrences. Notification Rules are available for all Channels (Email, Slack, HipChat, Trello, PagerDuty). --- ### Automate > Most software development life cycles consist of finding errors, let alone fixing them. Spend more time developing new features and let Rollbar find errors for you. - Published: 2021-05-06 - Modified: 2022-10-15 - URL: https://rollbar.com/automate/ --- ### Resolve Errors The Right Way > You need to know what triggered an error before you can fix it. See the exact line of code and the timeline of browser events leading up to an error with Rollbar. - Published: 2021-05-06 - Modified: 2022-10-15 - URL: https://rollbar.com/resolve/ --- ### Debugging Node.js Apps in Production with PyCharm - Published: 2014-12-19 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/debugging-node-js-apps-in-production-with-pycharm/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript Node. js has a built-in debugger that you can start in running processes. To do this, send a SIGUSR1 signal to the running process and connect a debugger. The one, big caveat here is that the debugger only listens on the local interface, 127. 0. 0. 1. The following are instructions for debugging Node. js applications running in your company's private network from your laptop, through a bastion host. SSH into the production host that is running the Node. js app Put your production app into debug mode. prod-host $> kill -s SIGUSR1 As root, start an SSH tunnel to connect your private network with localhost. prod-host $> ssh -N -q -L :8585:localhost:5858 On your laptop Start an SSH tunnel to the production host, through your bastion host. laptop $> ssh -N -q -L 5858::8585 @ Open PyCharm and create a remote debugging configuration. Run → Edit Configurations Click the + button on the top-left of the window and select “Node. js Remote Debug” Set the host to 127. 0. 0. 1 using port 5858, name it and save. Run the new Debug configuration. Run → Debug... Select the new configuration. At this point your laptop will have connected to your local SSH tunnel which will be connected to your production host's private network interface which will be tunneled to your production host's local network interface and your Node. js process. PyCharm → local SSH tunnel → bastion host → production host private network → production host localhost → Node.... --- ### Prioritize and Fix Errors Based on Severity > See what errors are affecting customers, when and how often they’re occurring, what browsers and IPs they’re affecting, and assign errors to colleagues instantly. - Published: 2021-05-06 - Modified: 2023-04-24 - URL: https://rollbar.com/prioritize/ --- ### RQL String Functions - Published: 2014-12-16 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/rql-string-functions/ - Categories: product - Tags: triage RQL now includes a basic library of string functions. You can use these to slice and group your data in arbitrary ways. For example, "email domains with the most events in the past hour": SELECT substring(person. email, locate('@', person. email)), count(*) FROM item_occurrence WHERE timestamp >= unix_timestamp - 3600 AND person. email IS NOT NULL GROUP BY 1 ORDER BY 2 DESC The new functions: concat, concat_ws, lower, upper, left, right, substring, locate, length, char_length. The functions are implemented to be compatible with MySQL; see the RQL docs for details. --- ### Discover New and Reactivated Errors in Real Time > Monitor errors in all projects in one view. Rollbar groups similar errors together for you and also provides the option to manually merge errors to fit your needs. - Published: 2021-05-06 - Modified: 2025-02-13 - URL: https://rollbar.com/discover/ --- ### Rollbar vs Sentry | A Superior Sentry Alternative for Error Tracking - Published: 2021-05-06 - Modified: 2025-01-24 - URL: https://rollbar.com/vs/sentry/ --- ### October Release Roundup - Published: 2014-10-31 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/october-release-roundup/ - Categories: product - Tags: monitor Happy Halloween, everyone! Here's a roundup of what's new in Rollbar this month. Ruby Upgrades The rollbar gem for Ruby got a lot of attention in October. Early in the month, we released version 1. 1. 0, which added support for Ruby 2. 1 exception causes, and a new 'failover_handlers' feature for more reliable asnyc reporting. Mid-month, we released version 1. 2 which adds a new, much nicer and more powerful interface for sending the data you want into Rollbar. In 1. 2, you can do: begin Rollbar. info("About to do_something") do_something rescue => e # send a message and extra data along with an exception Rollbar. error("Something went wrong", e, :foo => "bar") # customize payload attributes, like the 'person' or 'fingerprint' Rollbar. scope({:fingerprint => "something"}). error(e) end More in the docs. It's available now on Rubygems (latest version is 1. 2. 7). New Status Site We've upgraded status. rollbar. com. We'll be using it to communicate about outages, so if you'd like to be notified, go there and subscribe to updates. The new status site also shows the current maximum latencies for the processing pipeline. Link Rollbar Items with Existing 3rd-party Issues You can now link a Rollbar item with an existing issue in your issue tracker: Or if you have a Rollbar item that is already linked, you can now change or remove the link. This works with Asana, GitHub Issues, JIRA, Pivotal Tracker, Sprintly, and Trello. Geolocation for IP Addresses Rollbar now shows geolocation information on... --- ### Rollbar vs New Relic - Published: 2021-05-05 - Modified: 2021-07-30 - URL: https://rollbar.com/vs/new-relic/ --- ### New "Reports" API calls - Published: 2014-08-20 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/new-reports-api-calls/ - Categories: product - Tags: monitor We've released two new API calls, exposing some of the data on the Dashboard via our JSON API. Use the /reports/top_active_items to fetch the same data as "Top 10 Active Items in last 24 hours". And use /reports/occurrence_counts to fetch the same data as "Daily Error/Critical Occurrences" and "Hourly Error/Critical Occurrences". More details in the docs. If you give this a try, send us any feedback at team@rollbar. com. --- ### Resources > Welcome to our Rollbar Library! We hope you find something interesting to read, watch and share. - Published: 2021-05-05 - Modified: 2025-04-22 - URL: https://rollbar.com/resources/ blog videos webinar libarary for the 4 boxes ( --- ### Resolve Support Tickets Faster and Improve Customer Satisfaction > Get all the contextual and historical information you need to find the root cause of every customer issue. HelpScout and Zendesk integrations supported. - Published: 2021-05-05 - Modified: 2023-03-24 - URL: https://rollbar.com/solutions/customer-support/ --- ### Occurrence counts by minute - Published: 2014-07-31 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/occurrence-counts-by-minute/ - Categories: product - Tags: monitor We've released an improvement to our Item Detail pages, adding a graph showing the aggregate occurrence counts per minute. It's live now for everyone and looks like this: You can use this to see patterns that previously were hard to spot, like errors that occur on a regular, sub-hour interval (like the one shown above). It's also useful for quickly seeing how the occurrence rate changes after a deploy. --- ### node_rollbar 0.3.11 - Published: 2014-07-24 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/node_rollbar-0-3-11/ - Categories: product - Tags: JavaScript We've released a new version of our Node. js library, version 0. 3. 11. It's available on npm and GitHub. This release adds a new function to the public API, handleErrorWithPayloadData. The name's a mouthful, but it allows you to use (nearly) the full power of the Rollbar API when reporting errors. For example, to report an error as a "warning" and pass some additional data: rollbar. handleErrorWithPayloadData(err, {level: "warning", custom: {someKey: "some value"}}); See more examples in the docs for caught exceptions. --- ### More stack trace filename search filters - Published: 2014-07-22 - Modified: 2021-07-19 - URL: https://rollbar.com/blog/more-stack-trace-filename-search-filters/ - Categories: product - Tags: monitor We've released several new search filters to make it easier to find errors by the filenames in their stack trace. If you've ever wanted to find client-side Angular JavaScript errors that only occurred within your own specific domain, or exceptions originating in a specific part of your code, keep reading. You've always been able to search for errors where any filename contains a string, but now you can also search for errors where: all filenames contain a string (allfiles:myproject) no filenames contain a string (nofiles:evilproject) the top stack frame's filename contains a string (topfile:mydomain. com) the bottom stack frame's filename contains a string (bottomfile:some_important_library) the number of filenames is within a range (minfiles:1 and/or maxfiles:10) any filename contains a string (file:. rb) These filters can all be combined in a single query. If you forget which filters exist, mouse over the ? next to the search box to see the help text. --- ### Missing daily summary emails - Published: 2014-07-21 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/missing-daily-summary-emails/ - Categories: product - Tags: monitor We just rolled out a fix for missing daily summary emails. The bug was introduced last week when we refactored a bunch of our email code. As a result, some projects did not receive their daily email for the previous 24 hours. We don't want to spam users with old summaries so please contact support@rollbar. com if you'd like to get yours. --- ### rollbar-gem v0.13.2 - Published: 2014-07-08 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/rollbar-gem-v0-13-2/ - Categories: product - Tags: ruby We've released a patch version (0. 13. 2) of our Ruby gem, fixing two issues. The use_sucker_punch config option could cause timeouts when using Unicorn (#121) - thanks to Fabio Napoleoni for the report Sidekiq payloads were being mutated, causing the sidekiq-failures UI not to display parameters correctly (#122) - thanks to Dmitry Krasnoukhov for investigating and reporting this. It's available now on Rubygems and GitHub. --- ### Prettier Node.js stack traces - Published: 2014-07-01 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/prettier-node-js-stack-traces/ - Categories: product - Tags: debug Small tweak of the day: we now render Node. js stack traces to look more like they do via console. log(err. stack). We also fixed an issue where the context lines would appear indented at random levels. Before: After: --- ### Debugging by IP Address - Published: 2014-06-30 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/debugging-by-ip-address/ - Categories: product - Tags: debug We've released a first round of features around IP Addresses. Similar to how you can see the history by Person, you can now see the history by IP address. If you're tracking down an issue affecting logged-out users, this can be really helpful. To get there, click on an IP address anywhere in the Rollbar interface: You'll be able to see all events affecting that IP: There's also a handy link to the WHOIS record for the IP. --- ### Better support for Browserify and Webpack - Published: 2014-06-18 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/better-support-for-browserify-and-webpack/ - Categories: product - Tags: JavaScript Recently (actually last week), we released a new version of rollbar. js that has a few fixes to play nicely with Browserify and Webpack. It's being served from our CDN and the source is on GitHub. We've also put together examples showing how to use rollbar. js with each. If you use Browserify or Webpack and want to include rollbar. js that way instead of using our standard snippet, this is your lucky day: Browserify example Webpack example Thanks to @altano for helping with this. --- ### Codeship + Rollbar - Published: 2014-06-17 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/codeship-rollbar/ - Categories: product - Tags: integrations Our friends over at Codeship wrote a piece about how they use Rollbar to track deployments and fix exceptions. More on the Codeship blog: Tracking Deployments with Rollbar. --- ### rollbar.js snippet update - Published: 2014-06-10 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/rollbar-js-snippet-update/ - Categories: product - Tags: JavaScript We've released a new version of rollbar. js (1. 0. 0-rc9), which fixes a bug in some environments. If you've seen "TypeError: Uncaught TypeError: Cannot read property '_wrapped' of null" in your project, you should update to the latest snippet. Grab it from the docs to update. --- ### More Powerful Custom Grouping - Published: 2014-06-09 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/more-powerful-custom-grouping/ - Categories: product - Tags: monitor Our Custom Grouping feature just got a lot more powerful. It's now possible to: group TimeoutErrors by the controller+action it appears in group 404s by path group all Android exceptions by the app version number and much more, just by writing a simple JSON rule. This feature is live now for all accounts. For the uninitiated: Custom Grouping allows you to tune Rollbar's grouping algorithm for the specifics of your application. If our default algorithm isn't grouping incoming occurrences like you want, you can define rules to customize. Rules consist of a condition, a title, and a fingerprint. If an incoming occurrence matches the condition, then it will be grouped with others that have the same fingerprint, and given the title title. (If it doesn't match, then the next rule is evaluated, or if there are no more rules, the default algorithm is applied. ) Previously, the title and fingerprint could only contain static text. Now, they're templates that can reference: any part of the incoming occurrence the title and fingerprint generated by our default algorithm For example, to group all ActionController::RoutingErrors by the request path (which comes in as the exception message): Or to have all Android exceptions grouped by app version: See the docs for more details. We've already seen this solve a diverse set of grouping problems and are really excited about how powerful this is. If you have any questions about how to get your errors grouped the way you want, drop us a line at... --- ### Local variable values in stack traces - Published: 2014-06-05 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/local-variable-values-in-stack-traces/ - Categories: product - Tags: debug "This stack trace would be so much easier to debug if I knew what the value of that variable was" - said us, many many times. We finally scratched our own itch and built this into Rollbar. It's really awesome. Take for example a bug I ran into with our new deploy emails feature: "Hmmm, sure would be nice if I knew which variable was None--is it prev_deploy or deploy? " In the past, I would've had to reproduce locally, or add an additional rollbar. report_message to log each variable in production. But now I can just press "locals" for the stack frame and see it instantly: "OK, it's prev_deploy. " That was all I needed: prev_deploy will be None when deploy is the very first deploy in this project. Easy two-line fix. Time taken from opening the Rollbar notification to committing the fix: 2 minutes. Rollbarred! How it works We've implemented this in Python (pyrollbar), and are actively exploring other languages. Ruby and PHP are looking promising. Here's how it works in Python. When this feature is enabled and an exception is reported, we use the inspect module to collect: all stack frames: names and values of all variables that are function arguments in-project stack frames: names and values of all local variables There are two main edge cases to deal with: The variable could contain sensitive data. To deal with this, we use the same scrub_fields configuration used for scrubbing request data. If the variable name matches one... --- ### Security patch for the recent CCS Injection Vulnerability - Published: 2014-06-05 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/security-patch-for-the-recent-ccs-injection-vulnerability/ - Categories: product - Tags: security For the security conscious folks out there - We just finished patching our load balancers with the latest security updates. That is all. :) More info can be found here. --- ### Deploy emails show which commits were deployed - Published: 2014-06-04 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/deploy-emails-show-which-commits-were-deployed/ - Categories: product - Tags: monitor We recently added a feature I've wanted for a long time: our Deploy email notifications now show which commits were in that deploy. It looks like this: This works by querying GitHub's API to find the differences between the commit used for the previous deploy and the commit you just deployed. (If this looks familiar, it's because we show the same information on the Deploys page). As long as one user in your account has GitHub enabled (and the token enabled for your account), all users will be able to see the commit list. Want this? Sign up for a free account, connect with GitHub, and set up deploy tracking. Whenever you deploy, you and your team will get an email like the one above. --- - [How to Detect Memory Leaks in Java: Causes, Types, & Tools](https://rollbar.com/blog/how-to-detect-memory-leaks-in-java-causes-types-tools/): If memory leaks are not handled, your application can eventually run out of memory and terminate. Learn what causes memory leaks in Java and how to handle it. ### Daily summary email bugfix - Published: 2014-06-02 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/daily-summary-email-bugfix/ - Categories: product - Tags: monitor Last week we fixed a bug in our daily summary emails that a customer reported on May 1st. The bug caused some of the emails to miss information on errors that occurred during certain parts of the day. This was a pretty serious bug. It affected almost all of our customers and had been around for a very long time. The issue ended up being a miscalculation in our timezone handling code. Most developers who have worked with timezones know how difficult it can be to get it right. I'll explain how we did it and how Rollbar helped us quickly narrow in on the problem. Debugging The symptoms: The occurrence counts in some of the daily summary emails were too low Some new errors were not even in the daily summary emails The first thing I did was to recreate the database query by hand. After reading the code and pulling out the relevant queries, I was able to recreate the daily summaries for production but in a development environment. At this point, it was clear that we were missing data but the query was correct. Some possible culprits: MySQL slave delay Long-running MySQL transactions Nebulous time-zone related bug in our code I was able to verify that MySQL slave delay was not the cause by looking at our Scout graphs for the database host. Slave delay was nowhere near where it needed to be to cause this. Next, I looked for long-running MySQL transactions. We have quite a... --- - [How to Debug Java Code Faster with Eclipse](https://rollbar.com/blog/how-to-debug-java-code-faster-with-eclipse/): Modern IDEs like Eclipse provide debugging tools that make it easier for developers to walk through their code interactively. Learn all the best practices here. ### rollbar-php v0.9.2 released - Published: 2014-05-30 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/rollbar-php-v0-9-2-released/ - Categories: product - Tags: PHP We've released another small update to rollbar-php, version 0. 9. 2. Get it on Packagist or GitHub. This release contains a fix for an issue occurring in high-volume environments using rollbar-php with rollbar-agent. Previously, it was possible for relay log filenames to collide; now, the filenames include both the PID and the current time in microseconds (from microtime(true)). Thanks to Ryan Fink for the pull request. --- ### rollbar-php v0.9.1 released - Published: 2014-05-29 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/rollbar-php-v0-9-1-released/ - Categories: product - Tags: PHP We've released another small update to rollbar-php, version 0. 9. 1. Get it on Packagist or GitHub. This release contains a fix for an issue when using rollbar-php with rollbar-agent, our server-side agent that allows asynchronous reporting. Previously, when used in agent mode, blank files would be created on each request, even if there was nothing to report. Now, these files are only created when needed. Thanks to Ryan Fink from Red Ventures for the fix. --- - [Announcing the Rollbar Terraform Provider For Managing Rollbar Automatically](https://rollbar.com/blog/announcing-the-rollbar-terraform-provider-for-managing-rollbar-automatically/): It can be really exciting when your development team is growing fast! But then you soon realize that managing all... - [Infographic: The State of Software Code](https://rollbar.com/blog/infographic-the-state-of-software-code/): We surveyed nearly 1,000 developers across the U. S. to uncover key development trends and insights. Today’s businesses are software... - [Announcing The 2021 State of Software Code Report](https://rollbar.com/blog/announcing-the-2021-state-of-software-code-report/): When Cory Virok and I started Rollbar in 2012, we knew something was lacking in how software was being built.... - [Spring Boot vs Spring MVC: How do They Compare?](https://rollbar.com/blog/spring-boot-vs-spring-mvc-how-do-they-compare/): It’s common to confuse Spring Boot and Spring MVC. They both, after all, include the word “Spring” and are used... - [Introducing AI-Assisted Workflows and Automation-Grade Grouping](https://rollbar.com/blog/introducing-ai-assisted-workflows-and-automation-grade-grouping/): Imagine you’ve been working on a new feature for weeks. Finally—after exhaustive QA and testing, and more late coding sessions... ### rollbar-gem v0.12.20 released - Published: 2014-05-29 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/rollbar-gem-v0-12-20-released/ - Categories: product - Tags: ruby We've released a new patch version of rollbar-gem, version 0. 12. 20. Get it on Rubygems or GitHub. This release contains a compatibility fix for Sidekiq < 2. 3. 2, as well as an improvement to the project_gems feature. If you have multiple gems that you want to be considered in-project code, you can now specify them with a regex (strings still work too). For example: Rollbar. configure do |config| config. project_gems = end Thanks to Jonathan Cheatham for the pull request. --- - [Meet Continuous Code Improvement](https://rollbar.com/blog/meet-continuous-code-improvement/): If your experience as a developer is anything like mine, the best moments are those known as the "flow state.... - [Rollbar SDKs and the new Apple-Silicon Mac Platform](https://rollbar.com/blog/rollbar-sdks-and-the-new-apple-silicon-mac-platform/): Apple just introduced Apple M1, it’s new processor, along with their latest product versions. Back in June, when Apple had... ### rollbar-php v0.9.0 released - Published: 2014-05-23 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/rollbar-php-v0-9-0-released/ - Categories: product - Tags: PHP We've released a new version of rollbar-php, version 0. 9. 0. It's available now on Packagist, or find the source on GitHub. E_NOTICES NOW IGNORED BY DEFAULT Rollbar can track E_NOTICEs as 'info'-level events, but in practice this often turns into large amounts of data, even for relatively low-traffic projects. We've changed the defaults to now ignore E_NOTICE errors. If you do want E_NOTICEs to be sent to Rollbar, configure like this: --- - [10 Developer Horror Stories To Keep You Up at Night](https://rollbar.com/blog/10-developer-horror-stories-to-keep-you-up-at-night/): This is a guest post from our partners at LaunchDarkly. We software engineers like to think ourselves unflappable. Consider that... - [Introducing Versions API to Automate Error Response for New Code Versions](https://rollbar.com/blog/introducing-versions-api-to-automate-error-response-for-new-code-versions/): You know the feeling. You’ve just deployed a new version to production and are monitoring the Rollbar dashboard for any... - [Introducing our new Java Spring Error Monitoring SDK](https://rollbar.com/blog/introducing-our-new-java-spring-error-monitoring-sdk/): We’re excited to announce that we’ve strengthened our solution for Java Spring exception handling. Spring developers can now integrate Rollbar... - [5 Ways to Improve Your Dev Team Velocity](https://rollbar.com/blog/5-ways-to-improve-your-dev-team-velocity/): Velocity, much like the pulse rate of an individual, is a measure of health for your scrum team. Learn how to use velocity to ensure that throughput stays high. - [How a Hackathon Led to 80% Fewer Rollbar Items](https://rollbar.com/blog/how-a-hackathon-led-to-80-fewer-rollbar-items/): Earlier this year, we were invited to Thredup’s wonderful office space in Oakland to be one of the presenters at... ### rollbar.js v1.0.0-rc8 released - Published: 2014-05-22 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/rollbar-js-v1-0-0-rc8-released/ - Categories: product - Tags: JavaScript Today, we released rollbar. js version 1. 0. 0-rc8. This release includes a fix for a bug where the global variable i was used, which could cause strange behavior when interacting with other code that also references i as a global variable. The change is live now and being served from our CDN - no action is required on your part for most customers. If you're self-hosting rollbar. js, we recommend upgrading your copy to the latest. --- - [Introducing the Rollbar Deploy GitHub Action](https://rollbar.com/blog/introducing-the-rollbar-deploy-github-action/): We’re excited to announce our support for GitHub Actions with our new Rollbar Deploy GitHub Action. Teams using GitHub Actions... - [We Are Rollbar Support](https://rollbar.com/blog/we-are-rollbar-support/): Hello, we are Rollbar support! At Rollbar, support has many limbs. We receive all the communication sent to Rollbar via... ### Heartbleed Bug Response - Published: 2014-04-08 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/heartbleed-bug-response/ - Categories: product - Tags: security Updated 4/9 7:30pm What is Heartbleed? CVE-2014-0346, known as “Heartbleed”, is a bug in OpenSSL v1. 0. 1 through 1. 0. 1f that allows a remote attacker to access private memory on the target server. It has existed for almost 2 years. More info can be found here: http://heartbleed. com/ With this vulnerability, an attacker can: Get your private key for your domain’s ssl cert Decrypt all current and past SSL traffic to/from all affected machines If this sounds bad, it is. Most sites on the Internet are affected. Are you affected? Probably. If your web server or load balancer is running on linux and you’ve updated your packages anytime in the last 2 years, you are more-than-likely affected. To check your OpenSSL version, run openssl version -a Check out http://filippo. io/Heartbleed/ to test your servers for the vulnerability. How We Responded We learned of CVE-2014-0346 at around 4:50pm on 4/7 and immediately began our response. We completed the most important fix (patching OpenSSL) within about an hour, and have been working over the past 24 hours on related issues. Here is a timeline of what we’ve done since the vulnerability was announced: 4/7 - 3:01pm - Ubuntu Security Announcements email Subscribe to this list here 4/7 - 4:50pm - Began updating our load balancers with the fix. All servers patched by 6pm. We’re running nginx on Ubuntu 12. 04. Updating is as simple as: apt-get update apt-get upgrade openssl version -a # should show that it was built on... --- - [Apache Kafka Example: How Rollbar Removed Technical Debt - Part 2](https://rollbar.com/blog/apache-kafka-example-how-rollbar-removed-technical-debt-part-2/): In the first part of our series of blog posts on how we remove technical debt using Apache Kafka at... ### Connecting Rollbar with PagerDuty - Published: 2013-10-16 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/connecting-rollbar-with-pagerduty/ - Categories: product - Tags: integrations Using Rollbar with PagerDuty is now a lot more seamless. PagerDuty provides SaaS IT on-call schedule management, alerting, and incident tracking. With our new integration, you can automatically send issues found by Rollbar into incidents in PagerDuty. We have a few customers using it already. Here’s what Richard Lee, CTO at Polydice, a mobile development studio, has to say: “With Rollbar’s integration of PagerDuty, we’re able to get notified as soon as errors detected, and avoid possible downtime to our customers. This powerful combination becomes a must have tool for us. ” — Richard Lee, CTO at Polydice Integrating Rollbar with PagerDuty is easy; just create a new Generic API System in PagerDuty, and then link it in Rollbar’s Notification settings. See our docs for detailed instructions. --- - [Rollbar Goes Remote - Recruiting From Home](https://rollbar.com/blog/rollbar-goes-remote-recruiting-from-home/): In the face of the coronavirus outbreak and sudden shift to working from home, Rollbar moved our entire recruiting process... ### Resolving Rollbar Items in Versions - Published: 2013-09-17 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/resolving-rollbar-items-in-versions/ - Categories: product - Tags: triage We just rolled out a new feature to help track which versions/revisions errors are resolved in. When resolving items within Rollbar, you have the option of entering a revision or version number. If one is entered, it will appear in the item’s status history to let anyone looking at the item better understand specifically when it was fixed. This version can be combined with a new code_version parameter set in the configuration options of the latest versions of our notifiers. This can be set to either a numerical value (eg. 1, 24, 300), a semantic version value (eg. 1. 0. 3, 2. 9), or a git revision sha. Here are examples on how to set this parameter in our JavaScript and Ruby notifiers: In the JavaScript snippet: _rollbarParams = { // ... other configuration "client. javascript. code_version": "bdd2b9241f791fc9f134fb3244b40d452d2d7e35" } In your rollbar-gem configuration: Rollbar. configure do |config| # ... other configuration config. code_version = 'bdd2b9241f791fc9f134fb3244b40d452d2d7e35' end The other notifiers have a very similar top-level code_version configuration settings. See the notifier readmes for more info. If you resolve an item within Rollbar in a certain version and are also specifying a code_version for your code, we will use both of these values to decide whether or not to reactivate the item. For example, say you have a bug in version 1. 0 of your app. The bug is fixed and will be deployed to users in verision 1. 1, but that won’t happen for a few days. You can just resolve... --- - [Apache Kafka Example: How Rollbar Removed Technical Debt - Part 1](https://rollbar.com/blog/apache-kafka-example-how-rollbar-removed-technical-debt-part-1/): In this two-part series of blog posts, we’ll explain how Kafka has helped us in removing parts of our architecture... - [Announcing our new $11M Series B funding](https://rollbar.com/blog/announcing-our-new-11m-series-b-funding/): Nearly eight years ago, Cory and I started on a journey to help developers build software quickly and painlessly. As... ### Ad-hoc error reporting with Rollbar CLI - Published: 2013-08-08 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/ad-hoc-error-reporting-with-rollbar-cli/ - Categories: product - Tags: monitor We just coded up a quick tool to send Rollbar messages from the command line. It’s useful for quick, one-off monitoring scripts that you don’t have time to instrument with one of our notifiers. To install, just pip install rollbar and you’re done. e. g. Tracking all non-500s as WARNINGs from HAProxy tail -f /var/log/haproxy. log | awk '{print $11,$0}' | grep '^5' | awk '{$1="";print "warning",$0}' | rollbar -t $ACCESS_TOKEN -e production -v e. g. Watch failed login attempts tail -f /var/log/auth. log | grep -i 'Failed password' | awk '{print "error user ",$11,"failed auth from ",$13}' | rollbar -t $ACCESS_TOKEN -e ops More info on how to install and use it can be found here. --- - [Introducing Notifications API to Automate Notification Settings Across Projects](https://rollbar.com/blog/introducing-notifications-api-to-automate-notification-settings-across-projects/): At Rollbar we love workflow automation. With our new Notifications API, you can automate setting up of custom notification rules... - [Introducing Git Blame Support for GitHub Integration](https://rollbar.com/blog/introducing-git-blame-support-for-github-integration/): At Rollbar, we care about reducing the time it takes developers to find and fix errors. This is why we’re... ### jQuery Error Instrumentation - Published: 2013-08-07 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/jquery-error-instrumentation/ - Categories: product - Tags: JavaScript Today we are releasing a new feature for our JavaScript notifier that should make tracking down errors much easier if you use jQuery 1. 7 and above. The new functionality comes in a separate JS plugin snippet that should be placed right below where jQuery is loaded. Here is the first version of the plugin: // The source can be found on GitHub here. The snippet wraps the ready, on and off functions in jQuery to wrap any passed-in handlers in try/except blocks to automatically report errors to Rollbar. This lets us collect the full stack trace with line and column numbers for each frame, instead of just the last frame with only a line number. When combined with source maps, this makes debugging JavaScript errors much more doable. The new snippet also adds a handler to ajaxError to automatically report any jQuery AJAX errors such as 404s and 500s to Rollbar. If you don’t want this, add the following option to your base snippet’s _rollbarParams: "notifier. plugins. jquery. ignoreAjaxErrors": true You can start tracking errors in Rollbar by signing up for free. Or read more in the docs. --- - [Best Practices for Moving from a Monolith to Microservices](https://rollbar.com/blog/best-practices-for-moving-from-a-monolith-to-microservices/): In the first post of this series, we looked at the state of your organization, how to tell if Microservices... - [Transforming Engineering at Rollbar](https://rollbar.com/blog/transforming-engineering-at-rollbar/): It's been a busy year at Rollbar! While many of the new features we built got all the needed attention... ### JavaScript and Source Maps in a Django App - Published: 2013-08-02 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/javascript-and-source-maps-in-a-django-app/ - Categories: Code Tutorials, JavaScript, Python - Tags: JavaScript It’s pretty well known that every web app needs frontend JavaScript these days to provide the best possible user experience. You are probably going to have a bunch of JavaScript files that need to be loaded by your users for that to happen, and since we all care about performance, minifiying and compressing these files is an absolute must. But what happens when it comes time to debug issues in these minified files? Stack traces will more or less be completely useless. How do we solve this problem? JavaScript source maps solve this problem. They allow you to map a point in a minified file back to the unminfied source, making it possible to actually identify and fix issues encountered in a production app environment. Below I have outlined a simple guide for setting up source map generation and usage in a sample Django app. You’ll learn how generate source maps for minified files, debug errors that happen in these files, and also a quick overview of what’s required to get this working for your production environments. Local Debugging with Source Maps Say you have a simple Django app with the following directory structure: ... app/ ... views. py static/ js/ site. js (containing various models and functionality used in your app) jquery. js (unminified) util. js templates/ index. html site. js would have the following code: var aFunction = function { var a = b; } App = {}; App. errorCausingFunction = function { aFunction; } views. py would... --- - [How to Catch (and Fix) JavaScript TypeErrors](https://rollbar.com/blog/how-to-catch-and-fix-javascript-typeerrors/): It's Friday afternoon and you decide to check on your web logs one last time before you go out for... - [Error Handling with Angular 8 - Tips and Best Practices](https://rollbar.com/blog/error-handling-with-angular-8-tips-and-best-practices/): Handling errors properly is essential in building a robust application in Angular. Error handlers provide an opportunity to present friendly... - [Introducing the New Rollbar UX](https://rollbar.com/blog/introducing-the-new-rollbar-ux/): Migrating to microservices is hard enough. Monitoring errors and debugging shouldn’t be. When we first built Rollbar, microservice architectures and... - [Monolith to Microservices: Is Your Organization Ready?](https://rollbar.com/blog/monolith-to-microservices-is-your-organization-ready/): Transitioning from a Monolith to a Microservices architecture can take years to complete. The internet is full of stories of... ### Debug Production Errors in Minified JavaScript with Source Maps and Rollbar - Published: 2013-07-25 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/debug-production-errors-in-minified-javascript-with-source-maps-and-rollbar/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript Rollbar just got a much-requested feature: Source Maps support for Javascript. If you minify your Javascript code in production, this will make debugging production errors much easier. This feature is now live for all accounts. {: . highlightbox} Here's a link to a recently updated tutorial on using JavaScript source maps with Rollbar. What Are Source Maps? If you minify your Javascript code (i. e. using UglifyJS2 or the Closure Compiler), it gets harder to debug errors. Stack traces reference the line/column numbers in the minified code instead of the original source code. Source Maps were designed to resolve this; they provide a mapping back from the minified line/column numbers to the original code. Chrome and Firefox have tools to use them in development, but what about errors that happen in production? Source Maps and Rollbar Rollbar can now map stack traces that reference minified code back to the original source files, lines, and column numbers. Here’s what a stack trace might have looked like before: Here’s the de-minified version: We’ll also use the de-minified stack trace in our grouping algorithm, which should result in more useful grouping. Getting this set up To get started, you’ll need to make a change to _rollbarParams in the on-page javascript snippet. Add the following two parameters: _rollbarParams = { // ... existing params ... // set this to 'true' to enable source map processing "client. javascript. source_map_enabled": true, // provide the current code version, i. e. the git SHA of your javascript code.... --- - [Announcing the First Error Monitoring Solution for Salesforce Apex](https://rollbar.com/blog/announcing-the-first-error-monitoring-solution-for-salesforce-apex/): We're very exited to bring all the error monitoring and debugging capabilities of Rollbar to Salesforce Apex applications. According to... - [Turbocharge QA with Pre-Production Monitoring](https://rollbar.com/blog/turbocharge-qa-with-pre-production-monitoring/): Traditionally, Quality Assurance (QA) has been a very manual process. Our QA teams do an amazing job running through test... - [Rollbar CTO, Cory Virok, Shares His Expertise on Creating an Enterprise Solution for Today’s Modern Software Company](https://rollbar.com/blog/rollbar-cto-cory-virok-shares-his-expertise-on-creating-an-enterprise-solution-for-todays-modern-software-company/): We sat down with Rollbar CTO, Cory Virok, for a Q&A on how his leadership role and industry expertise helped... ### Async node.js API server testing - Published: 2013-07-12 - Modified: 2025-02-19 - URL: https://rollbar.com/blog/async-node-js-api-server-testing/ - Categories: Code Tutorials, JavaScript - Tags: nodejs This post is about how we built our test suite for our API server at Rollbar and some of the tricks and gotchas we ran into along the way. We wanted to build a test suite that not only tested the API logic, but also the underlying code, namely the Express and the Connect middlewares we use. If our API server was going to break, we wanted to know before we deployed it to thousands of customers and millions of requests per day. Testing is super important. If you don’t want to test, this probably won’t be very helpful or interesting. We use Vows. Why not Mocha? Mocha is, by far, the most widely used testing framework for Node. js apps. So, why didn’t we use it? The two main reasons were that Vows was the first thing I found when Googling “nodejs async testing” and the other is that the syntax of Mocha tests felt like another language and less like code. Mocha tests are more readable but the benefit of readability was overshadowed by the need to remember all of these new, special-case methods that Mocha injects. //Mocha . indexOf(5). should. equal(-1); vs //Vows assert. equal(. indexOf(5), -1); There’s something that bothered me about the former. I didn’t like how the library used a bunch of magic to enable something this small/strange. Mocha has a lot of awesome features but none that were important enough for me to switch. A simple Vows test Vows works just as you’d... --- - [Announcing Crash Monitoring for macOS with Rollbar](https://rollbar.com/blog/announcing-crash-monitoring-for-macos-with-rollbar/): What’s better than an SDK that supports iOS? One that also supports macOS! With the latest version of rollbar-ios (v1.... - [Introduction to Error Handling in Angular 7 Using Rollbar](https://rollbar.com/blog/introduction-to-error-handling-in-angular-7-using-rollbar/): In this tutorial, you will be introduced to errors tracking in Angular 7 using the errorHandler class and Rollbar. This... - [New Integration - Create Microsoft Azure DevOps Work Items directly from Rollbar](https://rollbar.com/blog/new-integration-create-microsoft-azure-devops-work-items-directly-from-rollbar/): Does your team use Azure DevOps for tracking work? You’re going to love our latest integration if that’s the case.... ### May Release Roundup - Published: 2013-05-29 - Modified: 2021-07-19 - URL: https://rollbar.com/blog/may-release-roundup/ - Categories: product - Tags: monitor Here’s a roundup of what’s new at Rollbar in the month of May. Big Features We revamped our notifications system, and added integrations with a bunch of new services. Rollbar now works with Asana, Campfire, Flowdock, GitHub Issues, Hipchat, JIRA, Pivotal Tracker, and Trello, as well as any arbitrary system via a Webhook. See the announcement blog post for more details. Small Features You can now customize how occurrences are grouped. This first release allows you to define rules of things that should always be grouped together. See the documentation: Custom Grouping Rules. An in-depth post on how to use this is coming soon. There’s now a “Download CSV” link at the bottom of the Items page, which will let you download a CSV of what you see on the page. Note that this information is also available via our API. You can now sort the Items page by Total Occurrences or Unique Users, in additon to Last Occurrence. Click on the column headers to change the sort. Links to files in GitHub are now linked to the appropriate revision, when this information is available. We’ll use one of the following (trying each in order): the value of server. sha the value of server. branch, if it looks like a SHA the revision from the last deploy before the first occurrence of the item Library Updates Ruby We released rollbar-gem versions 0. 9. 11 through 0. 9. 14. The changes include a fix for use with Rails 4, a concurrency... --- - [Exception Monitoring Across Environments](https://rollbar.com/blog/exception-monitoring-across-environments/): Tools like Rollbar have changed the way development teams are recording and managing their exceptions. What used to be a... ### Rules Engine for Notifications, Plus Integrations with Campfire, Hipchat, JIRA and Trello - Published: 2013-05-06 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/rules-engine-for-notifications-plus-integrations-with-campfire-hipchat-jira-and-trello/ - Categories: product - Tags: integrations Today we’re revamping the model for defining what you want to be notified about from Rollbar. Rollbar now integrates with Asana, Campfire, Flowdock, GitHub Issues, Hipchat, JIRA, Pivotal Tracker and Trello, as well as any arbitrary system via a Webhook. New Integration Channels In addition to our existing channels (Email, Asana, GitHub Issues, Pivotal Tracker, and Webhook), we’re launching support for four more: Campfire, Hipchat, JIRA, and Trello. You can set up all of this in Settings -> Notifications. Notification Rules Engine Notifications are now configured per-project (instead of per-user-per-project), using a trigger-action model. There are triggers for the following events: New Item (first occurrence of a new issue) Reactivated Item (a previously resolved issue has occurred again) 10nth Occurrence (an issue has occurred for the 10th, 100th, etc. time) Resolved Item (an item has been resolved by hand) Reopened Item (an item has been reopened by hand) Post-deploy (you’ve notified us that you deployed a new release) Corresponding actions are available for most actions in most channels. If it would make sense, it probably exists. Most actions can be configured as you’d expect (i. e. set which teams should receive an email, or which user to assign JIRA issues to). Item-related triggers can be filtered by environment, level, title (exception class+message), and filename. Deploy triggers can be filtered by environment and comment. Our underlying tech supports much more than the UI exposes, so let us know what other filters you’d like to see. Migration for existing customers We’ve migrated... --- - [Upload Source Maps to Rollbar](https://rollbar.com/blog/upload-source-maps-to-rollbar/): From https://michalzalecki. com/upload-source-maps-to-rollbar/ Upload source maps to Rollbar In production, the most important advantage of using a build tool like... - [Continuous Delivery with Jenkins and Rollbar](https://rollbar.com/blog/continuous-delivery-with-jenkins-and-rollbar/): Continuous delivery (CD) helps reduce the cost, time and risk of delivering changes by allowing for fast incremental updates to... - [How We’re Improving Error Grouping](https://rollbar.com/blog/how-were-improving-error-grouping/): Imagine that you are developing an application and there's an error in the code. When you release it to production,... ### Taking UNIQUE indexes to the next level - Published: 2013-03-29 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/taking-unique-indexes-to-the-next-level/ - Categories: Code Tutorials - Tags: sql You’ve probably seen unique constraints somewhere – either in Rails’ validates :uniqueness, Django’s Field. unique, or a raw SQL table definition. The basic function of unique constraints (preventing duplicate data from being inserted) is nice, but they’re so much more powerful than that. When you write INSERT or REPLACE statements that rely on them, you can do some pretty cool (and efficient) things that you would’ve had to do multiple queries for otherwise. This post covers unique indexes in MySQL 5. 5. Other versions of MySQL are similar. I’m not sure about Postgres or other relational databases but presume they’re similar-ish as well. Primer: what is a unique index? Pre-primer: data in a database is stored on disk somewhere. In a SQL database, the data is organized into tables which have rows and columns. An index is a way to look up particular rows, based on the values of one or more columns, without having to scan through the whole table. Instead, you look up those values in the index, which tells you where to find the matching rows. Index lookups are typically faster than full table scans because they’re organized for fast searches on the indexed columns (usually using binary trees), and they’re also generally smaller than the original data. A unique index is an index that also imposes a constraint: that no two entries in the index can have the same values. It can be comprised of one column or many columns. If many columns, then the entire... --- - [Welcoming Letania Ferreira](https://rollbar.com/blog/welcoming-letania-ferreira/): Letania is another new member of our support team and started as a Customer Service Engineer in December 2018. She’s... - [Introducing Interactive Slack Notifications](https://rollbar.com/blog/introducing-interactive-slack-notifications/): Quickly responding to new, reactivated, and otherwise important exceptions is a critical part of adopting continuous delivery and other DevOps... ### Improved grouping for Javascript errors - Published: 2013-03-21 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/improved-grouping-for-javascript-errors/ - Categories: product - Tags: monitor We’ve released an updated to how Javascript errors are grouped in Rollbar. The new update does a better job of separating different errors into different groups (“Items” in Rollbar parlance) while still recognizing the same issue in different browsers as the same. It’s now enabled for all new projects. Existing projects can enable it on the Migrations tab in Settings. Now the longer version... First some background: by default, exceptions in Rollbar are grouped using their stack traces. We take all of the filenames and method names in all of the stack frames, plus the exception class name, apply a number of heuristics to normalize them, and then combine everything together and take a sha1 hash. The result is a 40-character string used as the “fingerprint”; occurrences with matching fingerprints that also have the same project, environment, and platform are grouped together. The fingerprint can also be overridden at the API level for custom grouping. This generally works pretty well: Omitting the line numbers from stack frames means groups persist across code changes elsewhere in the file. Using the whole stack trace, instead of just the very last frame, avoids conflating unrelated issues that happen to cause an exception on the same line of code. Using just the exception class, instead of also the message, avoids including data in the fingerprint, and when we have a nice, long stack trace, that’s usually enough uniqueness. Javascript uncaught errors are a different story though. They’re reported through window. onerror, which luckily is... --- - [Introducing the Rollbar Pipe for Bitbucket Pipelines](https://rollbar.com/blog/introducing-the-rollbar-pipe-for-bitbucket-pipelines/): Automating your deployment process is a critical step towards adopting continuous delivery. For teams that use Bitbucket for hosting their... - [Welcoming Samebug to Rollbar](https://rollbar.com/blog/welcoming-samebug-to-rollbar/): Today we're announcing that we've acquired Hungary-based Samebug. This is an important moment for Rollbar and represents a big step... ### Launch and initial funding - Published: 2013-02-26 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/launch-and-initial-funding/ - Categories: company - Tags: error-monitoring Today we’re excited to announce the public launch of Rollbar. Rollbar tracks and analyzes errors in production applications, helping dev and ops teams diagnose and fix them. Platform-agnostic API Anything that can speak JSON and HTTP can talk to Rollbar. Our API accepts raw “items” (errors, exceptions, and log messages) and deploys as inputs, and aggregated items, occurrences, and deploys as outputs. We provide official libraries for Ruby, Python, PHP, Node. js, Javascript, and Flash; or you can roll your own. Severity levels Just because something raises an exception, doesn’t mean it should be treated as an “error”. Rollbar lets you utilize five severity levels (from “debug” to “critical”) to control visibility and notifications. Severity can be set in your code, or after-the-fact in the Rollbar interface. Track users through your stack Person tracking helps you provide great customer support by emailing affected users when you fix an error they hit. Or see the history for a particular user and link customer error reports to code problems, client- and server-side. So much more API endpoints on 3 continents. Resolving and reactivations. Real-time notifications for new issues. Graphs everywhere. Deploy tracking. Search by title, host, file, context, date, severity, status. Replay an issue by pressing a button. SSL everywhere. GitHub, Asana, and Pivotal Tracker integration. We’ve built many of the pieces our beta customers have needed, and we really think you’re going to like it. Start a free trial now, or see pricing, features, or docs. More firepower We’re also excited... --- - [4 Reasons Why You Need Error Monitoring](https://rollbar.com/blog/4-reasons-why-you-need-error-monitoring/): Errors are a fact of life in web development, and even the world's greatest brands are not without fault. Errors... - [Reduce noise in error monitoring with Grouping Suggestions](https://rollbar.com/blog/reduce-noise-in-error-monitoring-with-grouping-suggestions/): One perennial problem we face in monitoring is dealing with noise. We don't want to miss important signals, but sorting... - [Error Monitoring In Zend 3](https://rollbar.com/blog/error-monitoring-in-zend-3/): Zend Framework 3 is a free and open-source PHP framework. It uses a model-view-controller (MVC) pattern which makes its structure... ### Upgrading to the new Rollbar notifier libraries - Published: 2013-02-26 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/upgrading-to-the-new-rollbar-notifier-libraries/ - Categories: product - Tags: SDK We’ve updated all of our notifier library repositories to match the name change to Rollbar today. The old Ratchet. io repos have been deprecated and all further development will continue on the respective Rollbar versions. Please note that the submit. ratchet. io endpoint and the existing libraries will continue to work for the indefinite future, so you don’t have to do anything right now. But we do recommend upgrading to take advantage of future updates. Upgrading should be seamless and quick. Please contact support@rollbar. com if you run into any issues. Here are links to the upgrade instructions for each: Browser JS - update the JS snippet used on your site to the version shown here pyratchet ratchetio-gem ratchetio-php ratchet-agent node_ratchet flash_ratchet --- - [Error Handling with Angular 6 - Tips and Best Practices](https://rollbar.com/blog/error-handling-with-angular-6-tips-and-best-practices/): Handling errors properly is essential in building a robust application in Angular. Error handlers provide an opportunity to present friendly... - [What we've shipped in 2018](https://rollbar.com/blog/what-weve-shipped-in-2018/): With 2018 almost coming to a close, let's take a look at all the product improvements we've shipped this year... ### Real-time Search for Exceptions and Errors - Published: 2012-10-24 - Modified: 2022-11-28 - URL: https://rollbar.com/blog/real-time-search-for-exceptions-and-errors/ - Categories: product - Tags: monitor We’re happy today to announce the release of real-time search. You can now search your exceptions, errors, and log messages by title: For exceptions, the title contains the exception class and message. For errors and log messages, it contains the entire message. It’s a full-text search that works best on whole words; we also do a few tricks with camelCase and underscore_separated terms. The search index is kept up-to-date in real-time as new items are added to the system (that’s the “real-time” part). Typically the delay is ~2 seconds from receiving the input at our API to being inthe index and searchable. Current customers can try it out now; let us know if you run into any issues. What else would you like to see indexed? If you don’t have an account yet, sign up here for early access. Under the hood We’re using the new Sphinx realtime features for indexing and querying. It’s currently running on a single dedicated machine (1 core, 2GB ram, 100GB local disk). New items are indexed by a long-running script that indexes new items as they are inserted. (It keeps track of its location in the table and polls every second for new rows. ) The index includes two full-text fields, title and environment, and two scalar attributes, status and level. Title and environment don’t change, so we don’t need to update them. But status (active/resolved) and level (critical/error/warning/info/debug) do. We keep these in sync by simply writing to the search server whenever we... --- - [Monitoring errors in Xamarin apps](https://rollbar.com/blog/monitoring-errors-in-xamarin-apps/): Xamarin is based on Mono, the open source implementation of Microsoft's . NET Standard. It allows us to create apps... - [Win-Win Deployment Strategies for Modern Apps](https://rollbar.com/blog/win-win-deployment-strategies-for-modern-apps/): These days, the biggest change to software development is the frequency of deployments. Product teams deploy releases to production earlier... - [How to Show Errors in WordPress](https://rollbar.com/blog/monitoring-errors-in-wordpress/): WordPress is an open source blogging and website creation tool written in PHP and MySQL. It is a highly flexible... - [Persona: Platform/Ops](https://rollbar.com/solutions/platform-ops/): Unlike infrastructure monitoring tools which take a certain numbers of failures before reporting errors, Rollbar has no threshold and reports them instantly. ### Using a Request Factory in Pyramid to write a little less code - Published: 2012-09-07 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/using-a-request-factory-in-pyramid-to-write-a-little-less-code/ - Categories: Code Tutorials, Python - Tags: Python At Rollbar. com, we’ve been using Pyramid as our web framework and have been pretty happy with it. It’s lightweight and mostly stays out of our way. Pyramid doesn’t have a global request object that you can just import, so it makes you pass around request wherever you need it. That results in a lot of library code that looks like this: # lib/helpers. py def flash_success(request, body, title=''): request. session. flash({'body': body, 'title': title'}) and a lot of view code that looks like this: # views/auth. py @view_config(route_name='auth/login') def login(request): # (do the login... ) helpers. flash_success(request, "You're now logged in. ") # (redirect... ) That is, there ends up being a lot of function calls that pass request as their first argument. Wouldn’t it be nicer if we could attach these functions as methods on request itself? That would save a few characters every time we call them, and let us stop thinking about whether request is the first or last argument. Pyramid facilitates this by letting us provide our own Request Factory: from pyramid. request import Request class MyRequest(Request): def hello(self): print "hello! " def main(global_config, **settings): config = Configurator(settings=settings, request_factory=MyRequest) # ... Now the request passed to our view methods, and everywhere else in our app, has our hello method. So, what can we do with this that’s actually useful? In our codebase, we have a few convenience methods to get data about the logged-in user, flash messages, and check if features are enabled. Here it... --- - [Persona: QA/Testing](https://rollbar.com/solutions/qa-testing/): Get all the information you need to know which tests to prioritize fixing. Directly create an issue to developers and reduce the back-and-forth between teams. - [Persona: Eng Management](https://rollbar.com/solutions/engineering-management/): Rollbar provides automation-grade grouping, intelligent real-time alerts, and automated workflows so that fixing bugs take minutes instead of days. - [Stacktrace Enhancements - Code Context in each Traceback Frame](https://rollbar.com/blog/stacktrace-enhancements-code-context-in-each-traceback-frame/): Rollbar item stacktrace has a new UI and this change was done to support the new and advanced stacktrace. Users... - [Persona: Software Development](https://rollbar.com/solutions/software-development/): Prioritize development and let us do the heavy lifting. We'll provide all the info regarding which errors are affecting customers, what IPs are affected, and more. ### Writing a simple deploy script with Fabric and @roles - Published: 2012-08-16 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/writing-a-simple-deploy-script-with-fabric-and-roles/ - Categories: Code Tutorials, Python - Tags: integrations I first heard about Fabric a couple years ago while at Lolapps and liked the idea of: writing deployment and sysadmin scripts in a language other than Bash that language being Python, which we used everywhere else but we already had a huge swath of shell scripts that worked well (and truth be told, Bash isn’t really that bad). But now that we have at clean slate for Rollbar, Fabric it is. I wanted a simple deployment script that would do the following: check to make sure it’s running as the user “deploy” (since that’s the user that has ssh keys set up and owns the code on the remote machines) for each webserver: git pull pip install -r requirements. txt in series, restart each web process make an HTTP POST to our deploys api to record that the deploy completed successfully Here’s my first attempt: import sys from fabric. api import run, local, cd, env, roles, execute import requests env. hosts = def deploy: # pre-roll checks check_user # do the roll. update_and_restart # post-roll tasks rollbar_record_deploy def update_and_restart: code_dir = '/home/deploy/www/mox' with cd(code_dir): run("git pull") run("pip install -r requirements. txt") run("supervisorctl restart web1") run("supervisorctl restart web2") def check_user: if local('whoami', capture=True) ! = 'deploy': print "This command should be run as deploy. Run like: sudo -u deploy fab deploy" sys. exit(1) def rollbar_record_deploy: # read access_token from production. ini access_token = local("grep 'rollbar. access_token' production. ini | sed 's/^. * = //g'", capture=True) environment = 'production' local_username =... --- ## Guides - [How to Monitor Errors in Magento 2 the Easy Way](https://rollbar.com/blog/how-to-monitor-errors-in-magento-2-the-easy-way/): Magento is the largest open-source eCommerce platform in the world, used by more than 250,000 merchants. While Magento makes setting... - [Enterprise](https://rollbar.com/enterprise/): Adopt Rollbar for your enterprise to boost developer productivity, deliver value to users faster, maintain app quality, and resolve customer tickets quickly. - [Enhancements to the Rollbar Deploy API](https://rollbar.com/blog/enhancements-to-the-rollbar-deploy-api/): Rollbar introduced Versions a few months ago, providing developers a way to easily see whether their most recently deployed code... - [Error Monitoring in Symfony](https://rollbar.com/blog/error-monitoring-in-symfony/): Symfony is a PHP model-view-controller framework used to develop web applications. The main reasons Symfony has acclaimed fame among the... - [Press](https://rollbar.com/press/): - [Error Handling in React Native](https://rollbar.com/blog/error-monitoring-in-react-native/): Learn how to catch unhandled exceptions in React Native, perform tasks to provide the best experience for users, and handle these errors using our SDK. - [Events](https://rollbar.com/events/): Stay in tune with the latest developments in the software industry by hearing from industry experts and Rollbar customers on our webinars, podcasts, workshops, and shows. - [Introducing Versions](https://rollbar.com/blog/introducing-versions/): We built Versions for customers who are adopting software development practices like Continuous Delivery. One important habit to cultivate when... - [Newsroom](https://rollbar.com/news/): Follow and stay up to date with the latest mentions and coverage of Rollbar, from press releases to news articles, and download our press kit. - [Introducing All Items View](https://rollbar.com/blog/introducing-all-items-view/): Increasingly more software teams - ourselves and our customers included - are adopting practices like microservices and/or Continuous Delivery. What... - [Error Monitoring in iOS](https://rollbar.com/blog/error-monitoring-in-ios/): In mobile apps, it’s important to monitor errors so you can understand your user’s experience. Your team should know quickly... - [Home](https://rollbar.com/): Rollbar provides real-time error tracking & debugging tools for developers. ✓ JavaScript ✓PHP ✓Ruby ✓Python ✓Java ✓Android ✓iOS ✓.NET & more. - [Error tracking with Vue.js](https://rollbar.com/blog/error-tracking-with-vue-js/): Vue (pronounced /vjuː/, like view) is a progressive framework for building user interfaces on the web. Vue can power sophisticated... ### What is Error Logging in C++ > Error logs can be a life-saver. Learn how to create an error logging class in C++ to track errors, warnings, and status messages in runtime. - Published: 2022-07-11 - Modified: 2022-07-18 - URL: https://rollbar.com/guides/cpp/cpp-error-logging/ - Guide Languages: C++ In C++, an error logger class is typically used to track errors, warnings, and status messages at runtime. In a simple application, errors are printed directly to the console; however, in most cases, this class will log errors along with a timestamp, severity, and any other necessary details to a log file specified by the developer. This article is designed to help intermediate C++ coders learn how to create an error logging class and customize it as they see fit.   An Example of an Error Logger Class At runtime, the inner workings of a program are invisible to the user. This makes it difficult to understand why an application isn’t working as expected. An error logger is a module designed to assist in these situations. The logger sits within a program and tracks any errors or useful status messages created during runtime. Logs allow you to see the results of each independent process to determine exactly where faults are occurring. Below is an example of a basic error logging class in C++. While a fully realized logger would be more robust, this gives a good starting point to understand how a logger is designed. enum LogPriority { TraceP, DebugP, InfoP, WarnP, ErrorP, FatalP }; class BasicLogger { private: static LogPriority verbosity; public: static void Log(LogPriority priority, const char* message) { if (priority >= verbosity) { switch (priority) { case TraceP: std::cout --- - [Top 10 PHP errors from 1,000+ projects (and how to avoid them)](https://rollbar.com/blog/top-10-php-errors-from-1000-projects-and-how-to-avoid-them/): To give back to our community of developers, we looked at our database of thousands of projects and found the... - [Error monitoring in Golang](https://rollbar.com/blog/error-monitoring-in-golang/): Rollbar is proud to announce its error monitoring SDK for the Go language (aka Golang). It’s an open source programming... - [Security](https://rollbar.com/security/): Who we are Our website address is: https://rollbar. wpengine. com. What personal data we collect and why we collect it... ## Posts ### Error Debugging in C++ with VS Code > Learn how to debug using the C/C++ extension for VS Code with advanced features like breakpoints, tracking variable values, and stepping. - Published: 2022-07-11 - Modified: 2022-07-18 - URL: https://rollbar.com/guides/cpp/cpp-debugging-with-vs-code/ - Guide Languages: C++ Debugging can be a life-saver when it comes to discovering bugs or errors in your code. In this article you will learn how to debug using the C/C++ extension for VS Code, including advanced features like breakpoints, tracking variable values, and stepping.   The Code We’ll Debug Throughout this tutorial, the following C++ class is used as an example (vector. h): class Vector { private: float start_y; float start_x; float end_y; float end_x; public: Vector { start_x = -1; start_y = -1; end_y = -1; end_x = -1; } Vector(float start_a, float start_b, float end_a, float end_b) { start_x = start_a; start_y = start_b; end_y = end_a; end_x = end_b; } float get_length { return sqrt((end_x - start_x) * (end_x - start_x) + (end_y - start_y) * (end_y - start_y)); } }; This class is being called by the following main function (pathfinder. cpp): #include #include #include “Vector. h” int main { std::cout --- - [Errors on the world’s top 100 websites and how to avoid them](https://rollbar.com/blog/errors-on-the-worlds-top-100-websites-and-how-to-avoid-them/): When you think of the top 100 sites in the world, you think of high-traffic domains and pages coded to... - [Data, Privacy, and Compliance - How We Prepared for GDPR](https://rollbar.com/blog/data-privacy-and-compliance-how-we-prepared-for-gdpr/): Over the past couple of months it has been very difficult not to overhear conversations about GDPR and its implications... ### How to Handle Exceptions in C++ > C++ exceptions provide a well-defined way for detecting errors and passing the information up the call stack. - Published: 2022-04-13 - Modified: 2022-07-18 - URL: https://rollbar.com/guides/cpp/how-to-handle-exceptions-in-cpp/ - Guide Languages: C++ When C++ code is executed, various types of errors can occur in the program - coding errors made by programmers, errors due to incorrect input or other unforeseen errors. When an error occurs, C++ usually stops the program execution and generates an error message. In most scenarios, the preferred way to report and handle both logic and runtime errors is to use exceptions. Exceptions provide a formal and well-defined way for detecting errors and to pass the information up the call stack.   C++ Exception Types C++ provides a list of standard exceptions defined in the class which can be used in code. These exceptions are arranged in a hierarchy: Figure 3: C++ Exception Types Hierarchy As shown above, all the exception classes in C++ derive from the std::exception class. Here's a short description of each of the exceptions in the hierarchy above: Table 1. C++ Exception Classes Under std::exception Exception Description std::exception Exception and parent class of all standard C++ exceptions. std::bad_alloc Generally thrown by new. std::bad_cast Generally thrown by dynamic_cast. std::bad_typeid Generally thrown by typeid. std::bad_exception Useful device to handle unexpected exceptions. std::logic_failure Can be detected by reading code. std::runtime_error Cannot be detected by reading code. std::domain_error Thrown when using a mathematically invalid domain. std::invalid_argument Thrown when using invalid arguments. std::length_error Thrown when a large std::string is created. std::out_of_range/td> Thrown by the at method. std::overflow_error Thrown when a mathematical overflow occurs. std::range_error Thrown when attempting to store an out-of-range value. std::underflow_error Thrown when a mathematical underflow occurs.  ... --- - [Monitoring Errors in Android Apps](https://rollbar.com/blog/monitoring-errors-in-android-apps/): When developing mobile apps it’s important to monitor errors so that you can understand your user’s experience. You need deeper... - [Top 10 errors from 1000+ Ruby on Rails projects (and how to avoid them)](https://rollbar.com/blog/top-10-errors-from-1000-ruby-on-rails-projects-and-how-to-avoid-them/): To give back to our community of developers, we looked at our database of thousands of projects and found the... - [5 Surprising and Sneaky Ways Errors Impact Your Business](https://rollbar.com/blog/5-surprising-and-sneaky-ways-errors-impact-your-business/): Every app is imperfect and generates errors, but do you know how errors affect your users and business? When you... - [New Relic vs Scout: Which APM is right for you?](https://rollbar.com/blog/new-relic-vs-scout/): This is a guest post by Derek Haynes from Scout, an APM that integrates with Rollbar. When New Relic launched... ### How to Throw Exceptions in Flutter > Exception in Flutter can be thrown using try, catch and finally blocks when an unexpected issue occurs when executing a program. - Published: 2022-03-24 - Modified: 2023-09-19 - URL: https://rollbar.com/guides/flutter/how-to-throw-exceptions-in-flutter/ - Guide Languages: Flutter An exception is an unexpected issue that occurs when executing a program and disrupts its normal flow. Exceptions can cause the application to terminate abnormally if not handled. Exceptions are intended to be caught and handled so they do not affect the flow of the program. To handle an exception in code, try. . catch. . finally blocks should be used.   Why Throw Exceptions in Flutter? Exceptions can be thrown to convey information to the user about a failure that occurred during the execution of a program. They should contain useful data fields to convey the relevant information. This can help the issue be addressed programmatically. Exceptions can be instantiated and thrown in Flutter using the throw keyword. The syntax for throwing an exception is: throw new exception_name   Flutter Throw Exception Example Here’s an example that shows how to use the throw keyword in Flutter to throw an exception: void validate_age(int age) { if(age < 0) { throw new FormatException; } } In the above example, the validate_age function is used to validate an integer age, which should not be negative in value. If the value is found to be less than 0, a FormatException is thrown.   Handling Exceptions in Flutter To handle exceptions in Flutter, try. . catch. . finally blocks can be used to prevent the application from terminating abruptly. The try block contains the code that might possibly throw an exception. The try block must be followed by on or catch blocks, and an... --- - [Error monitoring in ASP.NET MVC](https://rollbar.com/blog/error-monitoring-in-asp-net-mvc/): ASP. NET MVC is a modern web development framework that combines the features of MVC (Model-View-Controller) architecture for better separation... - [Send Rollbar Error Alerts to Cisco Spark](https://rollbar.com/blog/send-rollbar-error-alerts-to-cisco-spark/): Cisco Spark is a enterprise collaboration platform from Cisco that includes messaging, video conferencing, desk phones, and digital whiteboards to... ### How to Debug PHP Errors > Most PHP error reports are vague, and identifying the underlying causes can be difficult. Learn the common steps towards pinpointing and resolving PHP errors that crop up in production. - Published: 2019-02-12 - Modified: 2021-06-11 - URL: https://rollbar.com/guides/php/how-to-debug-php-errors/ - Guide Languages: PHP Most PHP error reports are vague, and identifying the underlying causes can be difficult. Learn the common steps towards pinpointing and resolving PHP errors that crop up in production. How to Debug PHP Errors Debugging PHP errors in a production environment can be one of the single most frustrating experiences as a developer. More often than not, the error reports are vague, and identifying the underlying causes can be difficult at best. That said, there are a few common steps that can be followed towards identifying and resolving errors that crop up in production. Debugging PHP Errors Step 1: Increase the log level More information is always better. Using the methods described in Where are PHP Errors Logged? , the first step towards diagnosing any issue is to increase the log level. This allows you to see everything that is happening before and after a problem occurs. There is a good chance that the problems you are experiencing have warnings or messages associated with them that don't necessarily make it into the log files by default. Step 2: Retain logs Once you've increased the log level, the next step is to start retaining logs. This can be done through any number of log aggregation platforms, and allows you to start establishing a timeline of events without worrying about the log files being rolled over. Step 3: Attempt to replicate circumstances Once you've determined the log lines that relate to the problem at hand, the next step is to attempt to replicate the circumstances of the error in a development environment. Before we can do this, we first need to establish some testing guidelines. This involves doing things like mimicking... --- - [Announcing Our New .NET Error Monitoring SDK](https://rollbar.com/blog/announcing-our-new-net-error-monitoring-sdk/): Rollbar is happy to announce our official . NET error monitoring SDK. This new . NET SDK is more rreliable,... ### Where are Ruby Errors Logged? > This simple guide explains where Ruby logs are located, how to configure logging, and why error monitoring tools like Rollbar make debugging even faster. - Published: 2019-02-12 - Modified: 2021-06-11 - URL: https://rollbar.com/guides/ruby/where-are-ruby-errors-logged/ - Guide Languages: Ruby This simple guide explains where Ruby logs are located, how to configure logging, and why error monitoring tools like Rollbar make debugging even faster. Where Are Ruby Errors Logged? So, when we encounter errors in our code, where exactly can we find them? At a high level, there are two common places that Ruby errors can be found: inline with program execution, and in a designated log file. The Logger Class Before we look at where Ruby errors are logged, let's first take a look at how those errors are logged. The Logger class is a utility class that can be used to write messages to a specified output path. While this may sound relatively simplistic, it is actually a very sophisticated implementation for a built-in logging tool. Log Files vs. Inline Errors When instantiating the Logger class, you must define a destination to output all logs to. Output could be one of two types: a standard stream output like STDOUT and STDERR, or a file output like /var/log/ruby. log. The standard output stream could also be considered inline errors, as they are output directly to the command line during program execution. To instantiate a Logger that writes to STDOUT, for example, all we need to do is pass STDOUT as the first parameter to the initializer: logger = Logger. new(STDOUT) While this is incredibly valuable for live debugging, a more long-term logging solution is often more desirable. Thankfully, the Logger class initializer also accepts a file path, allowing us to log data directly to a log file: logger = Logger. new("/var/log/ruby. log") Log Levels Once we select a destination for our log data,... --- - [New Integration - Auto-create Shortcut stories with error data from Rollbar](https://rollbar.com/blog/new-integration-auto-create-shortcut-stories-with-error-data-from-rollbar/): At Rollbar, we use Shortcut to manage our software projects. One of the many ways we use it is for... ### How to Raise Exceptions in Ruby > It's not enough to raise exceptions in Ruby. You need to raise exceptions effectively. Here's how to create a human-readable—and diagnosable—exception object. - Published: 2019-02-12 - Modified: 2021-06-11 - URL: https://rollbar.com/guides/ruby/how-to-raise-exceptions-in-ruby/ - Guide Languages: Ruby It's not enough to throw exceptions in Ruby. You need to throw exceptions effectively. Here's how to create a human-readable—and diagnosable—exception object. Raising Exceptions in Ruby Rescuing pre-defined exceptions is one thing, but to more effectively utilize exceptions within your application, it is important to understand how to create and raise your own. At its core, every Ruby exception stems from a built-in Exception class, and includes a handful of built-in methods, but the most commonly used exception method is message. This method can be used to retrieve a specific exception message from a raised exception object. Raising Generic Exceptions Like the title of this section implies, raising exceptions in Ruby can be done using the raise method. While a blank exception can be raised, however, most exceptions include a message with additional information about the error. For example, a default RuntimeError exception can be raised with a custom error message in just one line: raise "This is an exception" While this is valuable for raising generic exceptions, it is also possible to raise an instance of an Exception class, such as StandardError: raise StandardError. new "This is an exception" Keep in mind, however, that while StandardError exceptions are intended to be rescued, Exception exceptions are not (see Exception Handling in Ruby). This means that if you choose to raise a new Exception instance, you will not be able to rescue it without explicitly rescuing every top-level Exception instance, which could cause unexpected problems down the line. raise Exception. new "This is an exception" Raising Custom Exceptions In a nutshell, every custom Ruby exception should extend StandardError, rather than the Exception class... --- - [Introducing the Account Dashboard](https://rollbar.com/blog/introducing-the-account-dashboard/): {: . highlightbox} Update: As of Aug 1st, 2018 we've made Account Dashboard available to all users, including those on... - [Debugging JavaScript with Source Maps](https://rollbar.com/blog/debugging-javascript-with-source-maps/): Minified JavaScript code generates source maps that can help trace and debug problems back to the exact line of source code. - [Top 10 JavaScript errors from 1000+ projects (and how to avoid them)](https://rollbar.com/blog/top-10-javascript-errors-from-1000-projects-and-how-to-avoid-them/): To give back to our community of developers, we looked at our database of thousands of projects and found the... - [Monitoring tools for serverless environments and AWS Lambda](https://rollbar.com/blog/monitoring-tools-for-serverless-environments-and-aws-lambda/): Serverless computing platforms like AWS Lambda represent a new computing paradigm. Over the past decade, we’ve been trying to abstract... ### How to Handle Exceptions in Ruby > The simple guide to exception handling in Ruby. ✓ Harden your app against unexpected errors ✓ Respond more effectively ✓ Adapt to any issue that may arise. - Published: 2019-02-12 - Modified: 2022-11-30 - URL: https://rollbar.com/guides/ruby/how-to-handle-exceptions-in-ruby/ - Guide Languages: Ruby The simple guide to exception handling in Ruby. ✓ Harden your app against unexpected errors ✓ Respond more effectively ✓ Adapt to any issue that may arise. Exception Handling in Ruby In Ruby, error handling works like this; all exceptions and errors are extensions of the Exception class. While this may seem intuitive, exception handling in Ruby is a touch more nuanced than you might expect thanks to the designed hierarchy of Ruby exceptions. The begin-rescue Similar to PHP's try-catch handler, Ruby's exception handling begins with the begin-rescue block. In a nutshell, the begin-rescue is a code block in Ruby that can be used to deal with raised exceptions without interrupting the Ruby program execution. In other words, you can begin to execute a block of code, and rescue any exceptions that are raised. Rescuing Exceptions In Ruby by default, begin-rescue rescues every instance of the StandardError class. This includes no method errors, type errors, runtime errors, and every custom error that is intended to be rescued within a Ruby application (see Raising Exceptions in Ruby for more information). To rescue every StandardError, simply wrap the designated section of code in a begin-rescue block: begin # ... rescue => e # ... end In Ruby when a StandardError exception is raised within the begin block, an instance of it will be passed to the rescue block as the variable e (for more information about the structure of Ruby's Exception class, see Raising Exceptions in Ruby). Rescuing Specific Exceptions While rescuing every exception raised in your Ruby app is great for simplistic implementations—such as generalizing API error responses—best practice is to rescue for specific exceptions. To do this,... --- - [What We Shipped in 2017](https://rollbar.com/blog/what-we-shipped-in-2017/): At Rollbar, 2017 has been a year of exciting growth and development for the product and the team. We've grown... - [Spring MVC Exception Handling and Monitoring](https://rollbar.com/blog/spring-mvc-exception-handling-and-monitoring/): The Spring Famework is the most popular framework for Java according to hotframeworks. com. It provides a model view controller... ### How to Debug Ruby Errors > Most Ruby error reports are vague, and identifying the underlying causes can be difficult. Learn the common steps towards pinpointing and resolving Ruby errors that crop up in production. - Published: 2019-02-12 - Modified: 2021-06-11 - URL: https://rollbar.com/guides/ruby/how-to-debug-ruby-errors/ - Guide Languages: Ruby Most Ruby error reports are vague, and identifying the underlying causes can be difficult. Learn the common steps towards pinpointing and resolving Ruby errors that crop up in production. How to Debug Ruby Errors Debugging Ruby errors in a production environment can be one of the single most frustrating experiences as a developer. More often than not, the error reports are vague, and identifying the underlying causes can be difficult at best. That said, there are a few common steps that can be followed toward identifying and resolving errors that crop up in production. Debugging Ruby Errors Step 1: Increase the log level More information is always better. Using the methods described in Where Are Ruby Errors Logged? , the first step toward diagnosing any issue is to increase the log level. This allows you to see everything that is happening before and after a problem occurs. There is a good chance that the problems you are experiencing have warnings or messages associated with them that don't necessarily make it into the log files by default. Step 2: Retain logs using an error monitoring solution Once you've increased the log level, the next step is to start retaining logs. Identifying the request parameters, user, browser, and any other information surrounding a given error can be incredibly valuable. While accomplishing this may seem difficult from within the context of a server, it can be easily done through the use of Rollbar, and allows you to start establishing a timeline of events without worrying about the log files being rolled over. Step 3: Attempt to replicate circumstances Once you've determined the log lines that relate to the problem at hand, the... --- - [Announcing Our New Java Error Monitoring SDK](https://rollbar.com/blog/announcing-our-new-java-error-monitoring-sdk/): Rollbar is proud to announce the first official 1. 0 release of our Java notifier SDK for error monitoring. Java... ### Where are PHP Errors Logged? > This simple guide explains where PHP logs are located, how to configure logging, and why error monitoring tools like Rollbar make debugging even faster. - Published: 2019-02-12 - Modified: 2021-06-11 - URL: https://rollbar.com/guides/php/where-are-php-errors-logged/ - Guide Languages: PHP This simple guide explains where PHP logs are located, how to configure logging, and why error monitoring tools like Rollbar make debugging even faster. Where are PHP Errors Logged? So when we encounter errors in our code, where exactly can we find them? At a high level, there are really only three places where PHP errors can be found: inline with program execution, in the system log, or in error monitoring tools like Rollbar. Inline errors By default, whenever an error or exception is thrown, PHP sends the error message directly to the user via STDOUT. In a command-line environment, this means that errors are rendered in the terminal. In a web environment, errors and exceptions get displayed directly in the browser. While this behavior is useful for debugging problems in a development environment, it should be disabled in a production environment for security reasons. To do this, open up the PHP configuration file for the environment you are working in—typically found in a path that looks like /etc/php/:environment:/php. ini—and change the display_errors directive to Off. ; This directive controls whether or not and where PHP will output errors, ; notices and warnings too. Error output is very useful during development, but ; it could be very dangerous in production environments. Depending on the code ; which is triggering the error, sensitive information could potentially leak ; out of your application such as database usernames and passwords or worse. ; For production environments, we recommend logging errors rather than ; sending them to STDOUT. ; Possible Values: ; Off = Do not display any errors ; stderr = Display errors to STDERR (affects only... --- - [Laravel error reporting now available](https://rollbar.com/blog/laravel-error-reporting-now-available/): We're happy to introduce our latest error reporting SDK, for Laravel, which tracks and reports errors that happen in your... ### How to Throw Exceptions in PHP > It's not enough to throw exceptions in PHP. You need to throw exceptions effectively. Here's how to create a human-readable—and diagnosable—exception object. - Published: 2019-02-12 - Modified: 2022-10-17 - URL: https://rollbar.com/guides/php/how-to-throw-exceptions-in-php/ - Guide Languages: PHP It's not enough to throw exceptions in PHP. You need to throw exceptions effectively. Here's how to create a human-readable—and diagnosable—exception object. Throwing Exceptions in PHP Throwing a generic PHP exception is almost as simple as it sounds. All it takes is to instantiate an exception object—with the first parameter of the Exception constructor being the error message—and then, "throw" it. throw new Exception('Exception message') The most important thing to take note of is the message. Defined in the constructor, and accessed via the getMessage method, the message is the human-readable error that can often be related to the end user. The Exception class To more effectively utilize exceptions within your application, it is important to understand how to create and throw your own PHP exception. But before we get into throwing custom PHP exceptions, let's first take a look at what an exception is under the hood, and how to define your own, starting with the global Exception class that all PHP exceptions stem from: class Exception { protected $message = 'Unknown exception'; // exception message private $string; // __toString cache protected $code = 0; // user defined exception code protected $file; // source filename of exception protected $line; // source line of exception private $trace; // backtrace private $previous; // previous exception if nested exception public function __construct($message = null, $code = 0, Exception $previous = null); final private function __clone; // Inhibits cloning of exceptions. final public function getMessage; // message of exception final public function getCode; // code of exception final public function getFile; // source filename final public function getLine; // source line final public function getTrace;... --- ### Persona: Platform/Ops > Unlike infrastructure monitoring tools which take a certain numbers of failures before reporting errors, Rollbar has no threshold and reports them instantly. - Published: 2021-05-05 - Modified: 2023-03-24 - URL: https://rollbar.com/solutions/platform-ops/ --- - [Custom error handling for Angular](https://rollbar.com/blog/custom-error-handling-for-angular/): Angular 2+ and AngularJS (version 1) are popular open-source JavaScript MVC frameworks that let you build highly structured, testable and... - [Error Boundaries in React 16](https://rollbar.com/blog/error-boundaries-in-react-16/): React recently announced the release of version 16 with long standing feature requests including error boundaries, fragments, improved server-side rendering... ### Persona: QA/Testing > Get all the information you need to know which tests to prioritize fixing. Directly create an issue to developers and reduce the back-and-forth between teams. - Published: 2021-05-05 - Modified: 2023-03-24 - URL: https://rollbar.com/solutions/qa-testing/ --- ### How to Handle Exceptions in PHP > The simple guide to exception handling in PHP. ✓ Harden your app against unexpected errors ✓ Respond more effectively ✓ Adapt to any issue that may arise. - Published: 2019-02-12 - Modified: 2021-09-20 - URL: https://rollbar.com/guides/php/how-to-handle-exceptions-in-php/ - Guide Languages: PHP The simple guide to exception handling in PHP. ✓ Harden your app against unexpected errors ✓ Respond more effectively ✓ Adapt to any issue that may arise. Exception Handling in PHP The try-catch The primary method of handling exceptions in PHP is the try-catch. In a nutshell, the try-catch is a code block that can be used to deal with thrown exceptions without interrupting program execution. In other words, you can "try" to execute a block of code, and "catch" any PHP exceptions that are thrown. PHP nested try-catch Try-catch blocks in PHP can be nested up to any desired levels and are handled in reverse order of appearance i. e. innermost exceptions are handled first. Nested blocks can be useful in case a block of code causes an exception, which can be handled within that block and program execution can continue in the outer block. They can also be useful in case the handling of an exception causes another exception. Here is an example of a nested try-catch block: try{ try{ if(file_exists("myfile. json")){ //upload file } else { throw new Exception( 'File not found'); } } catch (Exception $e){ throw new Exception( 'Unable to upload file',0,$e); } //continue outer try block code } catch (Exception $e){ echo $e->getMessage . ""; while($e = $e->getPrevious) { echo 'Previous exception: '. $e->getMessage . ""; } } In this example, a file is uploaded and it is checked whether the file exists or not prior to the upload operation. If it does not exist, an exception is thrown. This code that checks whether the file exists or not is placed within a try-catch block, which is nested within another try-catch... --- - [Quickly edit and merge many error items at once](https://rollbar.com/blog/quickly-edit-and-merge-many-error-items-at-once/): Rollbar just added a new feature that allows you to quickly edit and merge hundreds or thousands of items at... ### Persona: Eng Management > Rollbar provides automation-grade grouping, intelligent real-time alerts, and automated workflows so that fixing bugs take minutes instead of days. - Published: 2021-05-05 - Modified: 2023-03-24 - URL: https://rollbar.com/solutions/engineering-management/ --- - [Introducing AWS Lambda Support for Node.js and Python](https://rollbar.com/blog/introducing-aws-lambda-support-for-node-js-and-python/): We’ve just updated our Rollbar. js and Python libraries, making it easy for you to monitor errors on AWS Lambda.... ### Persona: Software Development > Prioritize development and let us do the heavy lifting. We'll provide all the info regarding which errors are affecting customers, what IPs are affected, and more. - Published: 2021-05-05 - Modified: 2023-03-24 - URL: https://rollbar.com/solutions/software-development/ --- - [Introducing JavaScript Telemetry](https://rollbar.com/blog/introducing-javascript-telemetry/): We're excited to introduce JavaScript telemetry, which provides a timeline of events in the browser leading up to when an... - [Purpose-Built Error Monitoring Alternative to New Relic](https://rollbar.com/blog/purpose-built-error-monitoring-alternative-to-new-relic/): One of the more frequently asked questions we hear is: "Doesn't my existing Application Performance Management (APM) solution, such as... ### How to Handle Exceptions in .NET > The simple guide to exception handling in .NET ✓ Harden your app against unexpected errors ✓ Respond more effectively ✓ Adapt to any issue that may arise. - Published: 2019-02-12 - Modified: 2021-09-20 - URL: https://rollbar.com/guides/dotnet/how-to-handle-exceptions-in-net/ - Guide Languages: .Net The simple guide to exception handling in .NET ✓ Harden your app against unexpected errors ✓ Respond more effectively ✓ Adapt to any issue that may arise. Where are . NET Errors Logged? Although every developer aims for bug-free code, it’s nearly impossible to deploy an application without a few unwanted bugs. You can test an application thoroughly, but still have logic errors. These errors can vary from critical issues that inhibit proper use of the application to minor annoyances. Regardless, you must be able to fix any bug in the application before it becomes a huge nuisance for your users. You detect bugs and find the . NET object that’s causing it by using logging techniques. . NET can log errors to the Windows Event Viewer, a database, or a file using libraries already included in the . NET framework. Each solution has its pros and cons. You can use your own custom libraries or simplify the process using third-party libraries installed from NuGet. . NET is a backend coding platform as opposed to client-side languages such as JavaScript. This means that your logging solution for . NET must be able to integrate with your application and your server. If the application is public, the logging solution must also be secure; otherwise, attackers can gain valuable insight on critical components for malicious purposes. Types of logs Logging provides root cause analysis for more than just . NET applications. The operating system, system applications such as IIS, and security and network appliances log events to some location determined by the administrator configurations. Custom applications may have no logging components at all, but the operating system or host... --- ### Enterprise > Adopt Rollbar for your enterprise to boost developer productivity, deliver value to users faster, maintain app quality, and resolve customer tickets quickly. - Published: 2021-05-03 - Modified: 2024-01-12 - URL: https://rollbar.com/enterprise/ --- - [Security matters: Rollbar now offers advanced encryption at rest](https://rollbar.com/blog/security-matters-rollbar-now-offers-advanced-encryption-at-rest/): Are your services secure? In today’s world, you can hardly go a week without reading in the news about security... ### Press - Published: 2021-04-29 - Modified: 2021-06-11 - URL: https://rollbar.com/press/ --- - [Merging versus Custom Fingerprinting](https://rollbar.com/blog/merging-versus-custom-fingerprinting/): With the recent announcement of support for manual merging, there are now multiple ways to combine occurrences of errors into... ### Where are JavaScript Errors Logged? > This simple guide explains where JavaScript logs are located, how to configure logging, and why error monitoring tools like Rollbar make debugging even faster. - Published: 2019-02-12 - Modified: 2021-06-11 - URL: https://rollbar.com/guides/javascript/where-are-javascript-errors-logged/ - Guide Languages: JavaScript This simple guide explains where JavaScript logs are located, how to configure logging, and why error monitoring tools like Rollbar make debugging even faster. Where are JavaScript Errors Logged? Unlike other web languages, JavaScript was originally a client-side language. As a result, error handling is designed with the client side in mind, rather than the server side. Rather than dealing with log files, rotation, permissions, and all the other fun things that come with server-side languages, JavaScript errors are dealt with inline. While the client-side-only perception is slowly giving way to server-side Node. js due to the increased security and performance benefits of server-side rendering, many of the logging conventions of Node. js are still influenced by its browser-based siblings. Introduction to The Console In both client-side JavaScript and Node. js, log data is handled by default via a global console instance. While client-side JavaScript writes console data to the individual browser's developer console, Node. js console data is written to stdout and stderr. What this means, at least in terms of client-side JavaScript, is that log data is readily available to both the end user and the developer. While this can present some privacy issues, it can make debugging significantly easier in any environment. For those concerned about privacy, logging can also be disabled in production through logging frameworks or minification tools. Log Levels When it comes to logging, console. log is one of the more common debug methods used in JavaScript development. That said, the Console object offers a handful of other useful log levels, which can be used to provide more relevant information with minimal changes. log The purpose of console.... --- ### Events > Stay in tune with the latest developments in the software industry by hearing from industry experts and Rollbar customers on our webinars, podcasts, workshops, and shows. - Published: 2021-04-29 - Modified: 2023-02-09 - URL: https://rollbar.com/events/ --- - [Technical details and challenges of building Error Merging](https://rollbar.com/blog/technical-details-and-challenges-of-building-error-merging/): Hopefully you've had the chance to try out our latest feature, error merging. We've heard a lot of positive feedback... ### Newsroom > Follow and stay up to date with the latest mentions and coverage of Rollbar, from press releases to news articles, and download our press kit. - Published: 2021-04-29 - Modified: 2021-06-17 - URL: https://rollbar.com/news/ --- ### How to Throw Exceptions in JavaScript > It's not enough to throw exceptions in JavaScript. You need to throw exceptions effectively. Here's how to create a human-readable—and diagnosable—exception object. - Published: 2019-02-12 - Modified: 2021-06-11 - URL: https://rollbar.com/guides/javascript/how-to-throw-exceptions-in-javascript/ - Guide Languages: JavaScript It's not enough to throw exceptions in JavaScript. You need to throw exceptions effectively. Here's how to create a human-readable—and diagnosable—exception object. Throwing Exceptions in JavaScript Errors are thrown by the engine, and exceptions are thrown by the developer. But what exactly does that mean? In JavaScript, all exceptions are simply objects. While the majority of exceptions are implementations of the global Error class, any old object can be thrown. With this in mind, there are two ways to throw an exception: directly via an Error object, and through a custom object. Generic exceptions While the built-in Error class is fairly well defined—including such things as the filename, line number, and stack trace to name a few—when it comes down to it, the most important thing to take note of is the message. The first—and often only—parameter to be passed during Error instantiation, the message is a human-readable error that can often be related directly to the end user. Throwing a generic exception is almost as simple as it sounds. All it takes is to instantiate an exception object—with the first parameter of the Error constructor being the error message—and then... "throw" it. throw new Error('Exception message'); error. code vs. error. message It is important to note here that, while the error message is the human readable error data, Node. js also provides an error code that identifies the kind of error that is being thrown. This value is useful as it allows you to programmatically adapt to errors that may be thrown, regardless of the message contained within the error. While error codes are generally used for system errors, when creating... --- - [How Shortcut uses Rollbar to monitor JavaScript errors](https://rollbar.com/blog/how-shortcut-uses-rollbar-to-monitor-javascript-errors/): I'm eager to share an insightful interview our friends at Changelog recently did with Andrew Childs, CTO at Shortcut and... ### Home > Rollbar provides real-time error tracking & debugging tools for developers. ✓ JavaScript ✓PHP ✓Ruby ✓Python ✓Java ✓Android ✓iOS ✓.NET & more. - Published: 2021-03-30 - Modified: 2024-04-10 - URL: https://rollbar.com/ --- - [Turning Errors Into Action: How and Why Resolving Errors Matters](https://rollbar.com/blog/turning-errors-into-action-how-and-why-resolving-errors-matters/): Why resolving errors matters? After fixing a bug, who is responsible for making sure if it really resolves the customer's... ### How to Handle Exceptions in JavaScript > A simple guide to exception handling in JavaScript. ✓ Harden your app against unexpected errors ✓ Respond more effectively ✓ Adapt to any issue that may arise. - Published: 2019-02-12 - Modified: 2023-09-19 - URL: https://rollbar.com/guides/javascript/how-to-handle-exceptions-in-javascript/ - Guide Languages: JavaScript The simple guide to exception handling in JavaScript. ✓ Harden your app against unexpected errors ✓ Respond more effectively ✓ Adapt to any issue that may arise. Exception Handling in JavaScript The try-catch As with many programming languages, the primary method of dealing with exceptions in JavaScript is the try-catch. In a nutshell, the try-catch is a code block that can be used to deal with thrown exceptions without interrupting program execution. In other words, you can "try" to execute a block of code, and "catch" any exceptions that are thrown. Catching all exceptions At its simplest, catching exceptions in JavaScript requires simply wrapping an expression in a try-catch statement. Without any additional configuration, this method will catch any and all exceptions that get thrown. try { // ... } catch (e) { // ... } While this is relatively simplistic in terms of error handling, it is important to note that the exception that is caught is always an implementation of the JavaScript Error object, which brings with it some useful properties such as a human-readable description of the error. This allows you to log these exceptions for debugging. try { // ... } catch (e) { console. log(e); } Catching specific exceptions In most instances, however, catching every exception thrown is considered bad practice. It is far more manageable to specifically catch and react to exceptions that you expect to encounter, rather than implementing a catchall. To accomplish this, simply check the exception instance type before reacting to it. try { // ... } catch (e) { if ( e instanceof CustomExceptionError ) { // ... } } While JavaScript does offer the ability to... --- ### Security - Published: 2021-02-17 - Modified: 2022-08-09 - URL: https://rollbar.com/security/ Who we are Our website address is: https://rollbar. wpengine. com. What personal data we collect and why we collect it Comments When visitors leave comments on the site we collect the data shown in the comments form, and also the visitor’s IP address and browser user agent string to help spam detection. An anonymized string created from your email address (also called a hash) may be provided to the Gravatar service to see if you are using it. The Gravatar service privacy policy is available here: https://automattic. com/privacy/. After approval of your comment, your profile picture is visible to the public in the context of your comment. Media If you upload images to the website, you should avoid uploading images with embedded location data (EXIF GPS) included. Visitors to the website can download and extract any location data from images on the website. Contact forms Cookies If you leave a comment on our site you may opt-in to saving your name, email address and website in cookies. These are for your convenience so that you do not have to fill in your details again when you leave another comment. These cookies will last for one year. If you visit our login page, we will set a temporary cookie to determine if your browser accepts cookies. This cookie contains no personal data and is discarded when you close your browser. When you log in, we will also set up several cookies to save your login information and your screen display choices.... --- ## Posts - [Introducing Error Merging ⎌](https://rollbar.com/blog/introducing-error-merging-%e2%8e%8c/): We're excited to introduce merging (and un-merging) of errors! Merging errors lets you combine multiple errors into one 'group' for... - [New and improved JavaScript notifier SDK - rollbar.js 2.0](https://rollbar.com/blog/new-and-improved-javascript-notifier-sdk-rollbar-js-2-0/): We are excited to announce a major update to our JavaScript notifier SDK in version 2. 0. This new version... ### How to Debug JavaScript Errors > Identifying the underlying causes of most JavaScript errors can be difficult. Learn the common steps towards pinpointing and resolving JavaScript errors. - Published: 2019-02-12 - Modified: 2021-06-11 - URL: https://rollbar.com/guides/javascript/how-to-debug-javascript-errors/ - Guide Languages: JavaScript Most JavaScript error reports are vague, and identifying the underlying causes can be difficult. Learn the common steps towards pinpointing and resolving JavaScript errors that crop up in production. How to Debug JavaScript Errors Debugging JavaScript errors in a production environment can be a difficult experience. More often than not, the error reports are vague, and identifying the underlying causes can be difficult at best. That said, there are a few common steps that can be followed towards identifying and resolving errors that crop up in production. Gathering information Step 1: Attempt to replicate circumstances In software development, the first step towards debugging any issue is attempting to replicate the circumstances. With most programming languages, this is bolstered by reviewing logs leading up to an error, but with client-side JavaScript, this type of diagnosis requires significantly more foresight (more on that below). Before we can replicate any circumstances of an issue, and assuming we have access to any production logs, we first need to establish some testing guidelines. This involves doing things like mimicking the production database, the user accounts involved, and even the operating system. Everything is fair game here. Step 2: Test assumptions Once you've established the circumstances that you think might throw the exception or error you are hunting down, it's time to test them. Never test exceptions in production. Development and staging environments are designed to be breakable without any impact on the end users, so always always always try to break your code in a safe environment. Step 3: Increase logging More information is always better. Using the methods described in Where are JavaScript Errors Logged? , the first step towards diagnosing any issue... --- - [Instacart, leader in grocery delivery, relies on Rollbar for production error monitoring](https://rollbar.com/blog/instacart-leader-in-grocery-delivery-relies-on-rollbar-for-production-error-monitoring/):   Instacart, a leader in the on-demand marketplace, provides one-hour grocery delivery to users of their app and employs thousands... - [Improved PHP error reporting with our latest rollbar-php 1.0 updates](https://rollbar.com/blog/improved-php-error-reporting-with-our-latest-rollbar-php-1-0-updates/): We are excited to announce a significant upgrade to our PHP notifier SDK. This new version will make it much... ### Where are Java Errors Logged? > This simple guide explains where Java logs are located, how to configure logging, and why error monitoring tools like Rollbar make debugging even faster. - Published: 2019-02-12 - Modified: 2021-06-11 - URL: https://rollbar.com/guides/java/where-are-java-errors-logged/ - Guide Languages: Java This simple guide explains where Java logs are located, how to configure logging, and why error monitoring tools like Rollbar make debugging even faster. Where are Java Errors Logged? Logging Java errors is an essential component in any application as it allows developers to track the root cause of errors and fix them easily. By default, Java log messages are stored only on the console, but they can be transferred to a longer term location as well. These messages let you see what’s happening in your application and troubleshoot problems. Console logs in Java At the most basic level, Java errors are logged on the console. Developers typically call System. out. println to print log messages on the console. Whenever the console is closed, these messages are lost as they cannot be stored in any permanent location. To overcome this problem, developers use Java logging frameworks which are responsible for storing data to any other location such as a file or a database. Java Logging frameworks There are several common frameworks for logging in Java and they let you customize where your logs are sent. Logback and Log4j are two popular Java logging frameworks that are simple to use. Logback was built as a replacement for its predecessor, Log4j. Logback offers a faster implementation than Log4j, provides more options for configuration, and gives more flexibility in archiving old log files. The newest is log4j 2 but it's still catching up in adoption. Let's focus on Logback since it offers many improvements and is very common. The Logback architecture consists of three main classes: logger, appender, and layout. The appender determines where the logs are... --- - [Introducing hassle-free, compliant SaaS error monitoring](https://rollbar.com/blog/introducing-hassle-free-compliant-saas-error-monitoring/): I'm very excited to announce that today, Rollbar is launching the first and only compliant SaaS error monitoring solution on... - [Major JavaScript source map updates](https://rollbar.com/blog/major-javascript-source-map-updates/): We’re excited to introduce a major update to JavaScript source map support in Rollbar! This update introduces several features unique... ### How to Throw Exceptions in Java > It's not enough to throw exceptions in Java. You need to throw exceptions effectively. Here's how to create a human-readable—and diagnosable—exception object. - Published: 2019-02-12 - Modified: 2025-03-17 - URL: https://rollbar.com/guides/java/how-to-throw-exceptions-in-java/ - Guide Languages: Java It's not enough to throw exceptions in Java. You need to throw exceptions effectively. Here's how to create a human-readable—and diagnosable—exception object. Throwing Exceptions in Java It is important to understand how to throw exceptions in Java. This will allow you to create higher quality code where errors are checked at compile time instead of runtime, and create custom exceptions that make debugging and recovery easier. Install the Java SDK to identify and fix exceptions How to throw exceptions in Java Throwing an exception is as simple as using the "throw" statement. You then specify the Exception object you wish to throw. Every Exception includes a message which is a human-readable error description. It can often be related to problems with user input, server, backend, etc. Here is an example that shows how to throw an exception: throw new Exception("Exception message"); It’s limiting to use a generic exception because it makes it difficult for the calling code to catch it. It’s better to throw custom exceptions, which we will come back to in a bit. Using the Throws keyword Throws is a keyword used to indicate that this method could throw this type of exception. The caller has to handle the exception using a try-catch block or propagate the exception. We can throw either checked or unchecked exceptions. The throws keyword allows the compiler to help you write code that handles this type of error, but it does not prevent the abnormal termination of the program. With the help of the throws keyword, we can provide information to the caller of the method about the types of exceptions the method might throw.... --- - [Error alert notifications + how to use them for better monitoring](https://rollbar.com/blog/error-alert-notifications-how-to-use-them-for-better-monitoring/): Rollbar offers an impressive array of error alerting and notification options for you to choose from, which is awesome! But... - [Onboarding remote employees, on the other side of the world](https://rollbar.com/blog/onboarding-remote-employees-on-the-other-side-of-the-world/): When I first started full-time here at Rollbar, I was living in Malaysia for the month, starting a year-long journey... - [Building the IoT Rollbar error alarm](https://rollbar.com/blog/building-the-iot-rollbar-error-alarm/): Our friends at Losant wanted to share how they built an actual 'error-alarm' using the Rollbar and Losant API's. Enjoy!... - [Up your incident management alerts game with Rollbar and VictorOps](https://rollbar.com/blog/up-your-incident-management-alerts-game-with-rollbar-and-victorops/): Resolving on-call errors can be faster and easier than ever before when you integrate VictorOps and Rollbar. VictorOps is a... ### How to Handle Exceptions in Java > The simple guide to exception handling in Java. ✓ Harden your app against unexpected errors ✓ Respond more effectively ✓ Adapt to any issue that may arise. - Published: 2019-02-12 - Modified: 2022-09-28 - URL: https://rollbar.com/guides/java/how-to-handle-exceptions-in-java/ - Guide Languages: Java The simple guide to exception handling in Java. ✓ Harden your app against unexpected errors ✓ Respond more effectively ✓ Adapt to any issue that may arise. Exception Handling in Java The classic definition of an exception is an event that occurs during the execution of a program and that disrupts the normal flow of instructions. Java exceptions are specialized events that indicate something bad has happened in the application, and the application either needs to recover or exit. Why handle Java exceptions? Java exception handling is important because it helps maintain the normal, desired flow of the program even when unexpected events occur. If Java exceptions are not handled, programs may crash or requests may fail. This can be very frustrating for customers and if it happens repeatedly, you could lose those customers. The worst situation is if your application crashes while the user is doing any important work, especially if their data is lost. To make the user interface robust, it is important to handle Java exceptions to prevent the application from unexpectedly crashing and losing data. There can be many causes for a sudden crash of the system, such as incorrect or unexpected data input. For example, if we try to add two users with duplicate IDs to the database, we should throw an exception since the action would affect database integrity. Developers can predict many of the Java exceptions that a piece of code is capable of throwing. The best course of action is to explicitly handle those exceptions to recover from them gracefully. As we will see ahead, programming languages provide ways to handle exceptions starting from specific ones and moving toward... --- ### How to Debug Java Errors > Most Java error reports are vague, and identifying the underlying causes can be difficult. Learn the common steps towards pinpointing and resolving Java errors that crop up in production. - Published: 2019-02-12 - Modified: 2022-11-28 - URL: https://rollbar.com/guides/java/how-to-debug-java-errors/ - Guide Languages: Java Most Java error reports are vague, and identifying the underlying causes can be difficult. Learn the common steps towards pinpointing and resolving Java errors that crop up in production. How to Debug Java Errors Debugging Java code for errors is a must-have skill for any developer. If an application crashes in a production environment, it can badly impact your business. You can prevent crashes and errors by spending time testing and debugging your code before deploying it. There are several ways to debug Java code. When developing, you can use the tools available in your IDE or debugger. Once the application is deployed to production, you can capture the logs or use an error monitoring solution. Let’s explore each of these ways in more detail. Debugging with Eclipse IDE There are several ways to debug your code in Eclipse. Below are a few popular ways: A conditional breakpoint: For debugging a Java code in Eclipse IDE, a breakpoint is a good approach. Applying breakpoints lets a debugger temporarily suspend the execution of your program at a certain point in the code. This allows you to examine the state of the application, the values of local variables, the call stack, and to step through the code line-by-line. This information gives you more clues to why the problem occurs. To set a breakpoint, just toggle it by clicking on the left-hand side of the screen. Exception breakpoints: Runtime exceptions like NullPointerException and ArrayIndexOutofBoundException are the errors encountered most often. Figuring out the root cause of these errors can be difficult. Eclipse IDE offers exception breakpoints in which the execution of the program is stopped whenever the specified exception occurs. Watch point:... --- ### Where are .NET Errors Logged? > This simple guide explains where .NET logs are located, how to configure logging, and why error monitoring tools like Rollbar make debugging even faster. - Published: 2019-02-12 - Modified: 2022-11-30 - URL: https://rollbar.com/guides/dotnet/where-are-net-errors-logged/ - Guide Languages: .Net This simple guide explains where .NET logs are located, how to configure logging, and why error monitoring tools like Rollbar make debugging even faster. Where are . NET Errors Logged? Although every developer aims for bug-free code, it’s nearly impossible to deploy an application without a few unwanted bugs. You can test an application thoroughly, but still have logic errors. These errors can vary from critical issues that inhibit proper use of the application to minor annoyances. Regardless, you must be able to fix any bug in the application before it becomes a huge nuisance for your users. You detect bugs and find the . NET object that’s causing it by using logging techniques. . NET can log errors to the Windows Event Viewer, a database, or a file using libraries already included in the . NET framework. Each solution has its pros and cons. You can use your own custom libraries or simplify the process using third-party libraries installed from NuGet. . NET is a backend coding platform as opposed to client-side languages such as JavaScript. This means that your logging solution for . NET must be able to integrate with your application and your server. If the application is public, the logging solution must also be secure; otherwise, attackers can gain valuable insight on critical components for malicious purposes. Types of logs Logging provides root cause analysis for more than just . NET applications. The operating system, system applications such as IIS, and security and network appliances log events to some location determined by the administrator configurations. Custom applications may have no logging components at all, but the operating system or host... --- ### How to Debug .NET Errors > Most .NET error reports are vague, and identifying the underlying causes can be difficult. Learn the common steps towards pinpointing and resolving .NET errors that crop up in production. - Published: 2019-02-12 - Modified: 2022-12-03 - URL: https://rollbar.com/guides/dotnet/how-to-debug-net-errors/ - Guide Languages: .Net Most .NET error reports are vague, and identifying the underlying causes can be difficult. Learn the common steps towards pinpointing and resolving .NET errors that crop up in production. How to Debug . NET Errors There are many tools available to help developers debug errors. For local development, there is a great debugger built into Visual Studio. In production, you can look at log files and error monitoring solutions like Rollbar give your deeper insight into local variables and parameters. Debugging in Visual Studio The most popular IDE for . NET is Visual Studio and it offers great debugging tools. Visual Studio is considered one of the best development platforms on the market, and it’s easy to use once you understand how it works. Developers can put breakpoints in their code to step through each statement and watch the code execution flow. By watching and stepping through statements, you can replicate errors and find bugs. When you click "Run" from the Visual Studio Debug menu, the code is compiled and executes. The binaries are stored in the debug folder in the solution directory, and code executes until it reaches the break point (the red dot in the image above). When the debugger reaches the break point, execution stops and you can view the variable’s value by hovering your mouse over it. As you step through the program (using menu options or F10 and F11 keyboard shortcuts), you can use the Watch section at the bottom of Visual Studio to watch specific variables. Drag and drop variables to this section to watch as they change. This can help you find bugs in your program before you deploy it. It also... --- ### How to Throw Exceptions in .NET > It's not enough to throw exceptions in .NET. You need to throw exceptions effectively. Here's how to create a human-readable—and diagnosable—exception object. - Published: 2019-02-12 - Modified: 2021-09-20 - URL: https://rollbar.com/guides/dotnet/how-to-throw-exceptions-in-net/ - Guide Languages: .Net It's not enough to throw exceptions in .NET. You need to throw exceptions effectively. Here's how to create a human-readable—and diagnosable—exception object. Throwing Exceptions in . NET Types of exceptions and errors Exceptions happen on logic errors when an operation is invalid or impossible, so the normal flow of execution is aborted. If the exception is not handled, it will crash the application. For example, a QA person may be able to find bad input or a combination of bad input and logic flaws that causes an exception. Any unhandled exception is considered a bug, but even handled events can affect user experience if they are done incorrectly. Regardless of the type of bug, it’s a developer’s goal to handle any of them gracefully so the user is able to continue using the application without losing data or abruptly crashing the program. Developers want to avoid uncaught exceptions the most. These errors crash an application and interrupt user workflow. Because they’re unhandled, a user loses data if any is unsaved; these errors can even cause corruption with saved data. For instance, if the database doesn’t handle errors in workflow, orphaned records could occur and users are forced to contact customer support over issues that can’t be remedied on the front end. Exceptions vs errors You should know when to throw an exception versus an error. Throwing an exception means that you raise an event that interrupts the normal program execution. However, some workflows don’t need an exception thrown. Errors could be coded as regular function return values. For instance, a user entering the wrong URL in a browser is an error, not... --- ## KB Posts ### Error Grouping Best Practices - Published: 2022-02-08 - Modified: 2022-07-20 - URL: https://rollbar.com/knowledge-base/error-grouping-best-practices/ - KB Tags: Best Practices, Core features - KB Categories: Core Features and Best Practices Why error grouping is important Without grouping, error monitoring and error logs churn out a massive list of unsorted errors that must each be separately triaged, identified, and dealt with. Since applications are being used by thousands or even millions of users simultaneously, development teams spend vast amounts of time in triaging and fixing errors. Grouping errors is increasingly important. Below you can find a checklist that will assist you in reviewing your project settings. We also have some handy tips & tricks for you to make sure your grouping works properly, so you can concentrate on the important thing: fixing errors! Error grouping in Rollbar There are two types of item grouping in Rollbar: automation-grade grouping (default grouping) and custom fingerprinting. Automation-grade grouping is performed by Rollbar automatically, it neither requires nor accepts any input from the user and is typically used for the majority of item grouping. Automation-grade grouping combines Rollbar’s extensive error library with machine learning components to formulate optimal grouping solutions. This provides continuous improvement to the grouping engine to help improve your experience. Custom fingerprinting is more of a specialized feature that allows you to override the default grouping engine by declaring your own rules. Custom fingerprinting rules will always be evaluated first, and if no match is found then the automation-grade grouping engine will group the given occurrence. This feature allows users to create grouping rules for custom data and edge cases that the grouping engine may not properly detect. Grouping Issues Since new... --- ### How Rollbar helps ensure Low-Risk Releases - Published: 2021-06-23 - Modified: 2022-07-20 - URL: https://rollbar.com/knowledge-base/how-rollbar-helps-ensure-low-risk-releases/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Pain points You need to get ideas out quickly and with confidence, but releases are inherently risky. The first minutes or hours after release are when errors often first occur. New deploys are a high-risk environment for errors with a high potential impact on user experience. Companies are usually hesitant to deploy code to production, as they are concerned about: Downtime due to a new release in production, Bad user experience when a bug is accidentally released into production Reducing Mean Time To Acknowledge (MTTA) and remediating issues before users notice them is critical to your business. Here's how Rollbar helps make your releases low risk. Customizable notifications help you stay alert and reduce noise Sometimes folks overlook Rollbar’s powerful customizable notification engine. Notifications can be triggered in specific conditions using filters, and the message format can be customized using variables. This ensures that you are notifying people or teams only when it is important. Rollbar supports several messaging tools, including email, Slack, PagerDuty, and many more. Using Rollbar’s customizable notifications can help reduce MTTA (Mean Time To Acknowledge) by taking on the identification and tracking steps. This reduces the manual effort required to notify the right person or team responsible for the affected code. Thanks to Rollbar’s real-time reporting agent and grouping engine, the right people are notified more quickly and can begin to address the issue without spending valuable time gathering information. These notifications are delivered so quickly that they can also be used to trigger LaunchDarkly feature... --- ### Rollbar as a tool for DevOps Teams > DevOps monitoring & troubleshooting is a complex process. There are many different places where failures can occur, and it is up to you as an engineer to diagnose and address these problems. Fortunately, Rollbar can help DevOps teams by providing better alerting signal and a new starting point for your investigations. - Published: 2021-06-23 - Modified: 2022-07-20 - URL: https://rollbar.com/knowledge-base/rollbar-as-a-tool-for-devops-teams/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices DevOps monitoring & troubleshooting is a complex process. There are many different places where failures can occur, and it is up to you as an engineer to diagnose and address these problems. Fortunately, Rollbar can help DevOps teams by providing better alerting signal and a new starting point for your investigations. Rollbar is most commonly known for its ability to help developers improve their code quality by reporting errors in real-time and grouping those errors to effectively determine the code culprit of a given issue. However, thanks to features like Automation-Grade Grouping and customizable alerting, Rollbar can also be used to empower other roles such as SREs and DevOps engineers. These features give better visibility into DevOps processes such as the CI/CD pipeline and the operational health of the code. Use Rollbar as a Starting Point for all Error Investigations Thanks to Rollbar’s ML-powered grouping engine, alerts can notify your team of errors that have not been previously reported in your code. This intelligent analysis helps keep you informed of new problems as they surface — even if only a small number of users are affected — so that you can proactively be one step ahead. Rollbar items are tightly coupled to the code that causes these items. Features like Code Context can show you the exact version and line of code where an error originated, as well as the last person to change that code. Therefore, the use of Rollbar alerts as a first line of defense can be... --- ### Manage Rollbar automatically through the Rollbar Terraform Provider - Published: 2021-04-08 - Modified: 2022-07-20 - URL: https://rollbar.com/knowledge-base/manage-rollbar-automatically-through-the-rollbar-terraform-provider/ - KB Tags: Best Practices - KB Categories: Managing Your Rollbar Account Terraform Provider is available for Rollbar Accounts The Rollbar account administration is critical to get the most out of Rollbar and to maintain data visibility across teams. However, this process can be tedious for large and fast-growing accounts. Users are required to manually support provisioning and management of Rollbar Accounts (using the UI or the APIs). Fortunately, the Rollbar Terraform Provider offers an automated way! Terraform is a multi-cloud provisioning product used to create, manage, and update infrastructure resources. The Provider will automate the creation, modification, and removal of resources within your account such as projects, users, and teams. The Terraform Provider is a declarative framework - which means that you can describe the end state that you want to achieve without stating the exact steps and ‘how’ to get there. It leverages the Rollbar API to make the changes necessary to reach and maintain its desired state. This way you can reduce the time it takes to provision and manage your Rollbar account, while cutting back on manual efforts and human error. What does the integration do? A Terraform integration, known as a Provider, provides a way to provision and manage a Rollbar Account. Instead of using the Ingestion API, it will use parts of the API that create, edit, and destroy Rollbar Accounts, Project, Teams, Access Tokens, etc. With the Rollbar Terraform Provider you will be able to: Manage projects and users with ease Create, read, update or delete projects and users easily Provision new projects automatically as... --- ### Finding items by UUID - Published: 2021-03-30 - Modified: 2022-07-20 - URL: https://rollbar.com/knowledge-base/finding-items-by-uuid/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices UUID in general A universally unique identifier (UUID) is a 128-bit number used to identify information in computer systems. When generated according to the standard methods, UUIDs are, for practical purposes, unique. Unlike most other numbering schemes, their uniqueness does not depend on a central registration authority or coordination between the parties generating them. While the probability that a UUID will be duplicated is not zero, for most applications it is negligible. How Rollbar uses UUID In Rollbar, each item and the corresponding occurrences have UUIDs based on this pattern: aaaaaaaa-bbbb-cccc-dddd-eeeeffffeeee. Rollbar uses UUIDs to differentiate occurrences from each other within a project. You can use them to search and identify occurrences. Finding items by UUID First, let's see where you can find UUIDs. The two most common places are the UI and Rollbar API responses. Here you can see a UUID inside an occurrence: Here is the UUID in an instance creation API response: As every occurrence have its own UUID, regardless if those were created through an API or by a Rollbar SDK, your logs and error messages might show you some, or even your customers can send you one along with their issue. To easily navigate to the corresponding occurrence on our UI, we created an easy-to-use search link. In our last example, we will use the UUID from the first clip: fe3b5d6b-4f14-4594-b5c2-bd632c012a15 In Rollbar, we have two types of UUID search links. One for the Items: https://rollbar. com/item/uuid/? uuid=aaaaaaaa-bbbb-cccc-dddd-eeeeffffeeee And one for the Occurrences: https://rollbar. com/occurrence/uuid/?... --- ### Using Zapier to create Zendesk tickets - Published: 2021-03-19 - Modified: 2022-07-20 - URL: https://rollbar.com/knowledge-base/using-zapier-to-create-zendesk-tickets/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Why use webhooks? Webhooks are a powerful tool to receive information from Rollbar and use in any other workflows you have. These will trigger on conditions you set and contain information about the Rollbar item. More information on webhook configuration and information can be found here. What can we do with webhooks? Here’s one example utilizing Rollbar webhooks and Zapier. Zapier is a tool which can "catch" the webhook, process it, and forward it to other tools you’re using (called Zaps). The following will need a paid subscription to Zapier. For this demonstration, we will use both webhooks and our people tracking features. Suppose you have high priority clientele and need to ensure they have a smooth experience on your application. If they encounter an error you want to triage that immediately and inform your customer success team. As an example, let’s create a ticket in Zendesk for your team to follow up. Don't have time to read? Watch our short video on how you can setup Zapier to create Zendesk tickets: Create a Zendesk ticket automatically using Rollbar webhooks First, copy this Zap to your own Zapier account: https://zapier. com/shared/c2afe0eba9c4e8a565227315ac4831d2db905580 You’ll see a screen which contains the Zapier webhook URL. Copy this URL and we shall use it when creating the Rollbar webhook: We now are able to create the webhook from Rollbar. Go to your project settings, then select the + button in the Integrations column: Select Webhook and proceed to the next page: Paste the webhook URL... --- ### Rollbar Solutions: Enabling Support Teams - Published: 2021-03-18 - Modified: 2022-07-20 - URL: https://rollbar.com/knowledge-base/rollbar-solutions-enabling-support-teams/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Overview When your application surfaces bugs, it might put your Support team in a difficult position in understanding the impact of an error on users and customers and who might be the right team to assign the issue to. A proactive approach is essential: when users are affected by bugs in your software, it corrupts the customer experience, leading to users eventually choosing to stop using your product. In this article, we will walk you through how you can help Support team enablement with certain features of Rollbar: People tracking provides visibility over which users of the application are impacted by an error Item Severity level and error frequency help prioritize errors Automated Issue Tracking helps you to assign a developer to an issue to ensure resolution Rollbar helps your team understand the impact of errors on specific users, and you will be able to prioritize and assign errors based on the frequency of bugs and the volume/value of customers impacted by them. This will enable your team to address and resolve customer issues faster and with more context. People tracking When an error occurs in your application, one of the first questions is “How many people are affected? ” When you have People tracking set up, you will have visibility on how the errors in your application have impacted your customers. You can check the People menu in the Item details view to see: Which customers were affected by any one error: This gives you details on a particular... --- ### Intelligent alerting helps you stay on top of critical errors and reduce noise in your notification channels - Published: 2021-02-24 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/intelligent-alerting-helps-you-stay-on-top-of-critical-errors-and-reduce-noise-in-your-notification-channels/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Overview Discovering errors in a timely manner is crucial when it comes to fixing bugs in your product. Moreover, you should learn about an error before it is reported by your users. Setting up your alerts - for example enabling Slack notifications- can give you a huge advantage and helps your team to quickly react to critical events in a given domain. However, a large number of alerts can be overwhelming and counterproductive. The important alerts might get lost in the avalanche of notifications, and you might not notice severe alerts in time. One of the main problems causing alert noise is the under-specification of alerts created in a system. By providing insufficient parameters and filters and notifying unnecessarily large groups of users, you are essentially creating noise and causing problems in the future. The best way to reduce alert noise is to create a set of specific alert rules targeting the smallest subset of necessary users. This will involve a bit of planning and configuration, but the overhead will pay off in the long run. In this article, you will learn about: how best to set-up relevant channels and groups for notifications, how to specify filters and parameters that notify the appropriate groups of people at the right times, and how best to monitor and fine-tune alert thresholds. Create dedicated notification channels and groups Keeping your team informed on incoming errors is vital, however the noise incurred by false positive alerts can cause users to ignore notifications, which can... --- ### Introducing Automation-Grade Grouping - Published: 2020-12-01 - Modified: 2022-07-20 - URL: https://rollbar.com/knowledge-base/introducing-automation-grade-grouping/ - KB Tags: Core features - KB Categories: Working with Rollbar Items Overview Proactively discover, predict, and remediate errors with Rollbar’s real-time, AI-assisted workflows! The foundation for these workflows is Automation-Grade Grouping which dramatically improves the performance and accuracy of error categorization. Automation-Grade Grouping is the next generation of our grouping engine that is trained by machine learning on millions of crashes. Machine learning enables us to continuously analyze frequently occurring error types to deduplicate items accurately. Benefits include: Reduced noise in your items list and alerts Easier triaging by removing duplicates from the error list Faster response to errors through less manual effort and more automation Machine learning trained grouping algorithm Unlike our competitors, who use hard-coded grouping algorithms, we use machine learning to determine patterns on a on-going basis and identify frequently occurring error types. This helps increase the performance of Automation-Grade Grouping over hard-coded algorithms and significantly reduces the number of both over-grouped and under-grouped errors, getting rid of missed bugs and noise. Hardcoded rules can’t keep up with constantly changing stack traces, so we regularly run our AI model against new errors from our customers to recognize different error types and group them effectively. Frequent Grouping Update releases On the path to Automation-Grade Grouping, we frequently release new grouping updates that further improve grouping accuracy and allow users to observe and respond to errors quickly. Automation-Grade Grouping is currently available for Ruby, JavaScript, Java, Python and C#. We’ll be releasing it for additional languages, including Go and PHP soon! Our latest Ruby Grouping Update improves the grouping accuracy... --- ### Reduce noise with the help of Slack notifications integration - Published: 2020-09-25 - Modified: 2021-12-13 - URL: https://rollbar.com/knowledge-base/reduce-noise-with-the-help-of-slack-notifications-integration/ - KB Tags: Best Practices, Tool Integrations - KB Categories: Core Features and Best Practices Rollbar supports multiple messaging tools, where your team can get notified about errors and significant events. Integrating a messaging tool with your Rollbar projects helps you manage the incoming alerts, so you won’t overlook any essential event in your projects while you are not overloaded with messages. This way, you can focus on the important things: fixing bugs. In this article, we will focus on the most popular notification integration: Slack. We will cover: the benefits of using Slack integration in your projects, the perks of using Slack Actions, and tips and tricks to get the most out of using Slack (or other) notifications. So let’s get to it then! Slack notifications Slack is one of the most commonly used options for notification integration for Rollbar projects. Once Slack is integrated with Rollbar, default rules will have been created for your projects, ready to be used. You can also customize these rules and set them up to make sure they serve your team the best (and least annoying) way. With the help of notifications, you can: set-up the types of notifications you are interested in, add notification filters, to keep the messages relevant and limit the number of alerts, include notification variable values to customize the content of the messages based on the type of event that triggers the notification. With these set-ups, you can make sure that notifications are only triggered in specific conditions, with tailored messaging that fits your needs. For example, you can set-up an alert for... --- ### Jira integration best practices - Published: 2020-09-25 - Modified: 2022-07-20 - URL: https://rollbar.com/knowledge-base/jira-integration-best-practices/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Perks of an issue tracking integration Save time and debug faster by integrating an issue tracking tool with your Rollbar projects so that you can streamline workflows and issue monitoring. Rollbar can integrate with many popular issue tracking softwares, making it easy to track Rollbar detected errors in your already existing workflow. Integrating an issue tracker allows you to Manually: Create an issue to track a Rollbar error Link a Rollbar error to an already created issue Automatically: Create an issue for new or frequent occurrences Reopen a linked issue when a Rollbar error is reactivated or reopened by a user Resolve a linked issue when a Rollbar error is resolved In this article, we will focus on Jira, one of the most popular issue tracking tool for teams. Please continue reading to learn how to best leverage it with your Rollbar projects. Tracking Rollbar detected errors with Jira Setting up Jira with your Rollbar projects allows you to create issues instantly with rich contextual data and error analytics. Moreover, you can track all these in your already existing issue tracker workflow. Once you connect Rollbar with Jira, you can significantly improve your monitoring workflow with: Link and display root cause exception data in issues Set notification rules to open new issues automatically Create and assign Jira issues with a few clicks Bidirectional syncing, update statuses in both Rollbar and Jira Detailed error data will be conveniently and easily accessible within Jira, including: stack traces, error status, number total occurrences,... --- ### Filter or Ignore Errors from Bots - Published: 2020-09-22 - Modified: 2021-06-14 - URL: https://rollbar.com/knowledge-base/filter-or-ignore-errors-from-bots/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Filter or Ignore Errors from Bots Rollbar provides a few ways to filter or ignore errors that happen in requests made by bots. Using Custom Grouping You can create a Custom Grouping rule to group all errors from known bots into their own Item in Rollbar, separate from your other data. Then mute that item or change its severity. Here's an example custom grouping rule to ignore client-side JavaScript errors that are caused by the Baidu spider: }, "fingerprint": "Baiduspider js error", "title": "Baiduspider js error" } ] We use this ourselves: these errors are still tracked in case we need them, but they stay out of sight in day-to-day use. Filtering Client-Side If you would rather ignore them completely, you can filter them out before they are sent to the Rollbar API in the first place. For example, for client-side JavaScript: _rollbarConfig = { // current config... checkIgnore: function(isUncaught, args, payload) { if (window. navigator. userAgent && window. navigator. userAgent. indexOf('Baiduspider') ! == -1) { // ignore baidu spider return true; } // no other ignores return false; } } Some of our other libraries don't implement checkIgnore yet. Please check out the docs for your SDK to see if checkIgnore is implemented, and open an issue on the appropriate repo in GitHub if you'd like checkIgnore in an SDK that hasn't implemented it yet. --- ### Unknown(Script Error) - Published: 2020-09-22 - Modified: 2021-06-09 - URL: https://rollbar.com/knowledge-base/unknownscript-error/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices This happens when your JS code is hosted on a different domain (i. e. a CDN). To fix, set Access-Control-Allow-Origin: * on the JS file, and crossorigin="anonymous" on the tag. If the script errors are coming from Javascript that you don't maintain, you can suppress them using the ignoreMessages option in Rollbar. js It is normal to still get some of these errors even after following the steps below and setting up CORS, because almost everyone has third party JS on their site that isn't set up with the CORS headers. Full explanation "Script Error" happens when an uncaught JavaScript error crosses domain boundaries in violation of the cross-origin policy. For example, if you host your JavaScript code on a CDN, any uncaught errors (errors that bubble up to the window. onerror handler, instead of being caught in try-catch) will get reported as simply "Script error" instead of containing useful information. This is a browser security measure intended to prevent passing data across domains that otherwise wouldn't be allowed to communicate. It's implemented in Firefox and Chrome. To get the real error messages, do the following: 1. Send the Access-Control-Allow-Origin header Setting the Access-Control-Allow-Origin header to * signifies that the resource can be accessed properly from any domain. You can replace * with your domain if necessary, for example Access-Control-Allow-Origin: www. example. com. However, handling multiple domains gets tricky, and may not be worth the effort if using a CDN due to caching issues that may arise. See more here.... --- ### Spot and prioritize production errors with Versions - Published: 2020-09-22 - Modified: 2022-07-20 - URL: https://rollbar.com/knowledge-base/spot-and-prioritize-production-errors-with-versions-2/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Overview Versions feature is available for our Advanced and Enterprise plan customers as a useful addition to Deploy tracking. This feature comes handy if you are deploying continuously or if you have multiple code versions in production. With the help of Versions you will be able to: See which version of your deploys are throwing exceptions, Resolve your items in Versions, Resolve your items easily via Git commit messages. Watch our short video on Versions! Versions Enabling Versions provides you visibility on which versions of your code are throwing exceptions. With Version, you can have a clear view of which occurrences are the result of your latest deployed version, thus being able to decide whether to proceed with a full deployment after a canary deploy or if you should just stick with a previous stable version. It is also very helpful if you have multiple code versions running in production, such as with mobile apps. Triaging your errors will also become easier with Versions, as you will have more insights on when and who was the last to deploy and if the error has already been resolved by a teammate or not. Resolve in version With Versions, you can track which versions your errors are resolved in. When you resolve an item within Rollbar, you have the option to enter a version number. It will then appear in the item’s status history, thus providing more info about the item, when it was fixed and in which version of your deployments.... --- ### Send Log Messages to Rollbar - Published: 2020-09-22 - Modified: 2025-02-19 - URL: https://rollbar.com/knowledge-base/send-log-messages-to-rollbar/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices You can send any log message to Rollbar, not just exceptions. This is especially helpful for client-side applications that don't write to your server logs. Log messages can have the same attached metadata as exceptions (request, server, person, etc. ) and go through a similar fingerprinting process as exceptions. Log messages have a level (critical, error, warning, info, or debug), a body (just a string), and any arbitrary optional parameters you want to include. Javascript // log methods exist for each level, or pass as a param Rollbar. critical("Crash while processing payment"); Rollbar. log("error", "Crash while checking order status"); Rollbar. warning("Facebook API unavailable"); Rollbar. info("User logged in"); Rollbar. debug("Cron job starting"); // can pass arbitrary params Rollbar. info("User logged in", {loginType: "email+password"}); // rich metadata will be included automatically, but if you want to override: Rollbar. scope({person: {id: "123"}}). info("User logged in"); Ruby log methods exist for each level, or pass as a param Rollbar. critical("Crash while processing payment") Rollbar. log("error", "Crash while checking order status") Rollbar. warning("Facebook API unavailable") Rollbar. info("User logged in") Rollbar. debug("Cron job starting") # can pass arbitrary params Rollbar. info("User logged in", :login_type => "email+password") # rich metadata will be included automatically, but if you want to override: Rollbar. scope(:person => {:id => "123"}). info("User logged in") Python default level is 'error' rollbar. report_message('Got an IOError in the main loop') # logs at the 'warning' level rollbar. report_message('Got an IOError in the main loop', 'warning') # can also include the request object rollbar. report_message('Got an... --- ### Reduce Noisy Javascript Errors - Published: 2020-09-22 - Modified: 2021-09-20 - URL: https://rollbar.com/knowledge-base/reduce-noisy-javascript-errors/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Ignore noisy errors on the client-side Rollbar. js enables you to ignore errors client-side if you wish. You can filter by any value in the payload, and ensure that the error never even gets sent to the Rollbar API. To do this, use the checkIgnore configuration function. var _rollbarConfig = { ... checkIgnore: function(isUncaught, args, payload) { // Code here to determine whether or not to send the payload // to the Rollbar API // return true to ignore the payload } ... }; isUncaught is true if the error bubbled up to window. onerror. It is false if the error came from one of the Rollbar. js logging methods. args are the args passed to the Rollbar. js logging method. If the error is uncaught and is from an unhandled rejection, the args parameter contains the Promise object. payload is the payload that will be sent to the Rollbar API. You can use anything in the payload to conditionally filter these errors out. To have Rollbar. js ignore the payload here, return true from the function. To continue processing and have the error sent to the Rollbar API, return false. Whitelist specific domains You can configure Rollbar. js to only accept errors from your own domains. We recommend this if you use a lot of third party scripts that are generating errors you have no control over, and you only want to see errors coming from your own domains. var _rollbarConfig = { ... hostWhiteList: ... }; When hostWhiteList... --- ### Multiple Production Environments - Published: 2020-09-22 - Modified: 2021-05-05 - URL: https://rollbar.com/knowledge-base/multiple-production-environments/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Rollbar requires the environment property on all error occurrences to indicate where they occurred (production ,staging , qa , etc. ). The choice of which environment values to use is very important due to the following considerations: Items cannot be merged if they are in different environments The Dashboard, Items, and Deploys views can only show information from a single environment or all environments. Many of our customers deploy their apps to multiple production environments, e. g. multiple zones in Amazon Web Services, Google Cloud Platform, Azure, etc. In this case, you might want to see all the items and deploys to any of your production environments at once, but also be able to track which environment a particular error occurred in. You probably will want to merge items that occurred in different production environments if they have the same root cause. Recommended usage: Use the environment value production for all errors from and deploys to any production environment. Use the host property in your error payloads to include the 'full path' of the server where an error occurred, including the name of the region/zone, e. g. us-east-1-web02 for the server web-02 that is hosted in the us-east-1 region. If you follow this approach, you can then merge any items that occur in a production environment. To find the items that are only occurring in a particular region, you can use the host advanced search option, which supports prefix search: host:us-east-1 To find items that occurred on a specific server... --- ### Keep an eye on your deploys with the help of Deploy Tracking - Published: 2020-09-22 - Modified: 2021-06-14 - URL: https://rollbar.com/knowledge-base/keep-an-eye-on-your-deploys-with-the-help-of-deploy-tracking-2/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Overview Nowadays, constant and fast deployment has become essential for your applications to keep up with the ever-changing needs of your customers. Elevate your Rollbar projects with Deploy tracking, and notify Rollbar about each one of your deployments to: See new errors for each deployment, Highlight the deployment that is suspected to have caused each error, Auto-resolve errors that were fixed in each deployment, Enable GitHub to notify Rollbar about errors. Watch our short video! Track your deploys for more details Every project that is connected to a web app should use deploys! Reporting a new deploy to Rollbar can allow us to display all the code revisions between each release of the application. The Deploys screen provides a detailed view of all your deployments that were made to a particular environment. The entry for each deploy displays a wide range of information to help you with the debugging process, including: Start & finish time Deploy status Deploying user (if known) Target environment Code version (typically a Git SHA or a version number) Deploy comments List of commits included (if you've connected Rollbar to a git repository) The Deploys screen offers visibility over your successful commits and your undeployed commits too. Undeployed commits are the ones that were added to the master branch but have not yet been deployed. These commits will be highlighted at the top of the Deploys screen. This will provide more visibility for developers who have missed the commits while deploying to act quickly upon them.... --- - [How to Fix the Unsupported Operation Exception in Java](https://rollbar.com/blog/fixing-unsupportedoperationexception-in-java/): The UnsupportedOperationException occurs when attempting operations that aren't supported, primarily when trying to modify immutable collections. - [The 8 Best Application Performance Monitoring (APM) Tools in 2025](https://rollbar.com/blog/best-apm-tools/): Learn what makes each tool stand out, their pros and cons, who they’re ideal for, and how they’re priced (including free plans or trials where available). ### Jenkins - Published: 2020-09-22 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/jenkins/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Tracking deployments in Jenkins will allow you to see new errors for each deployment, determine the deployment that is suspected to have caused each error, and automatically resolve errors that were fixed in each deployment. You can read more examples in our blog Continuous Delivery with Jenkins and Rollbar. To configure Jenkins, use the curl command to notify Rollbar of the deployment: curl https://api. rollbar. com/api/1/deploy/ -F access_token=access_token -F environment=development -F revision=${GIT_COMMIT} -F rollbar_username=rollbar_username -F local_username=jenkins_user -F comment='any comments' Place this command in your deploy script so that it runs once the deploy has completed successfully. If successful, Rollbar's API will give a JSON response like this: { "data": {} } Replace each of the example values according to the parameter reference below. If using a version control system other than Git, change the revision= line as appropriate to set the revision ID. Parameter Reference access_token - Your project access token (required). environment - Name of the environment being deployed, e. g. production (required). revision - Revision number/sha being deployed. If using git, use the full sha (required). local_username - User who deployed (optional). rollbar_username - Rollbar username of the user who deployed (optional). comment - Deploy comment (e. g. what is being deployed) (optional). --- - [Viniou's Story with Rollbar](https://rollbar.com/blog/vininou-story-with-rollbar/): We use Rollbar for all our error reporting. It's used by our engineering team to notify us of issues that arise and to help us debug them. It's really helpful in cutting through the noise and letting us know only the errors that we need to care about. ### Transfer Projects Between Accounts > How to transfer Rollbar projects to another Rollbar Account. Includes Heroku and GitHub project transfers steps. - Published: 2020-09-22 - Modified: 2023-06-16 - URL: https://rollbar.com/knowledge-base/transfer-projects-between-accounts/ - KB Tags: Knowledge Base - KB Categories: Managing Your Rollbar Account Transfer Projects Between Rollbar Accounts Rollbar projects can be moved between accounts by anyone who is a member of the Owners team in both accounts. To transfer a project to a different account Go to Project Settings --> Advanced / Transfer Accounts Select the destination account, then confirm your Rollbar username and password and submit the request. What to do before transferring projects: Add your teams into the new account Add the users you want into the new account Select the correct plan (Essenstials or Advanced) and setup payment options. What will be transferred: *Notification rules will transfer only if it’s the same user token Source control JIRA Github issues Environments settings Project access tokens Slack + its rules (need to allow the new account under Connected Accounts) Service links History and comments What will not be transferred: Existing users and existing teams (additional people on the Owners excluding myself were removed) Need to add the right teams to projects If a user was assigned to an item it turns back to unassigned (see history below) Items to review after transfer: Once you have transferred the project, you should confirm the configuration of the project in the new account, including: Team assignments Notification rules We will attempt to transfer as many settings as possible to the new account, but some may not move depending on which users have access to the new account. Transferring from Heroku / GitHub to a Direct Rollbar Account Rollbar accounts can be created via partners... --- - [Docfield's Story with Rollbar](https://rollbar.com/blog/docfield-story-with-rollbar/): We use Rollbar for all our error reporting. It's used by our engineering team to notify us of issues that arise and to help us debug them. It's really helpful in cutting through the noise and letting us know only the errors that we need to care about. - [Optimizing Item Search: How Rollbar Engineered Faster, More Capable Search](https://rollbar.com/blog/how-rollbar-engineered-faster-search/): Searching through error data efficiently is critical for developers using monitoring tools. At Rollbar, we recently completed a significant overhaul of our Item Search backend. The previous system faced performance limitations and constraints on search capabilities. This post details the technical challenges, the architectural changes we implemented, and the resulting performance gains. ### Personal vs. Organization Accounts - Published: 2020-09-22 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/personal-vs-organization-accounts/ - KB Tags: Knowledge Base - KB Categories: Managing Your Rollbar Account When you sign up for Rollbar, two separate but related things are created in our system: A user, which has a username, primary email address, and password. An account, which can contain projects representing your apps/services. If you sign up with the username johndoe , then we will also create an account accessible via https://rollbar. com/johndoe . Personal vs. Organizational Accounts All new accounts are created as personal accounts, which are meant to be used by a single person for their personal projects. If you are creating an account for your organization, then you can change the account into an organization account by going to Account Settings → General → Convert to Organization. The only difference between an organization account and a personal account is that organization accounts can be renamed. The name of a personal account is based on the user, so if user johndoe is renamed to johnfoo , then their personal account would change from https://rollbar. com/johndoe to https://rollbar. com/johnfoo . --- - [How to Fix Python TypeError: 'int' object is not subscriptable](https://rollbar.com/blog/how-to-fix-int-object-is-not-subscriptable-python/): Learn why Python prevents accessing parts of an integer using []. This guide explains the error and shows how to work with subscriptable types correctly. - [The Art of Throwing Exceptions in C# (or How to Fail Gracefully)](https://rollbar.com/blog/throw-exceptions-c-sharp/): A senior developer's sarcastic guide to C# exceptions. Learn to create meaningful error messages, preserve stack traces, and implement custom exception types. - [How to Fix Python’s “List Index Out of Range” Error in For Loops](https://rollbar.com/blog/how-to-fix-python-list-index-out-of-range-error-in-for-loops/): This error means Python can't find the list position you're asking for. Fix it with enumerate(), proper length checks, or by using -1 to safely get the last item. ### Billing in Rollbar - Published: 2020-09-22 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/billing-in-rollbar/ - KB Tags: Billing - KB Categories: Billing and Event Quotas For both monthly and annual plans, your account will have a billing cycle that starts on the day of the month when you originally signed up for the plan. The billing cycle is used to calculate your monthly usage. If you sign up after the 28th then your billing cycle date will vary depending on the length of the month. If you exceed your monthly event limit, you can pay per event over the limit. If your on-demand charge is sufficiently high that it would be more economical to upgrade to the next plan, then we'll do it for you automatically and you won't be charged for the overages. Once your account has been automatically upgraded, it will remain at the new plan level for future billing cycles. You can change your plan at any time by going to Account Settings –> Choose Plan. If you choose a lower plan level, the change will take effect at the start of your next monthly billing cycle. You may also upgrade your subscription manually at any time by going to Account Settings –> Choose Plan. If you are on a strict budget and don't mind missing some errors, then you can choose to disable on-demand events at Account Settings –> Billing Info. If on-demand is disabled and you reach your plan limit, we will not process new errors until your next billing cycle begins. On-demand event charges are calculated at the end of your billing cycle, and are included in the next... --- ### Bash - Published: 2020-09-22 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/bash/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Use Curl to send an HTTP POST: ACCESS_TOKEN=POST_SERVER_ITEM_ACCESS_TOKEN ENVIRONMENT=production LOCAL_USERNAME=whoami REVISION=git rev-parse --verify HEAD curl https://api. rollbar. com/api/1/deploy/ -F access_token=$ACCESS_TOKEN -F environment=$ENVIRONMENT -F revision=$REVISION -F local_username=$LOCAL_USERNAME Place this command in your deploy script so that it runs once the deploy has completed successfully. If the POST is successful, you will receive a JSON response like: {"data": {}} If using a version control system other than Git, change the revision= line as appropriate to set the revision ID. Parameter Reference ● access_token - Your project access token (required). ● environment - Name of the environment being deployed, e. g. "production" (required). ● revision - Revision number/sha being deployed. If using git, use the full sha (required). ● local_username - User who deployed (optional). ● rollbar_username - Rollbar username of the user who deployed (optional). ● comment - Deploy comment (e. g. what is being deployed) (optional). --- - [How to Throw Exceptions in C++ Constructors Correctly](https://rollbar.com/blog/throw-exceptions-in-cpp-constructors/): Constructors are weird when it comes to error handling. Why? Because unlike regular functions, they don't have a return value. ### Enable GitHub Organization Access for Rollbar - Published: 2020-09-22 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/enable-github-organization-access-for-rollbar/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Sometimes the GitHub repo you want isn't showing up in the dropdown in our UI. If typing the repo name in and saving the settings doesn't work, it may be because you haven't granted permission to the Rollbar application on Github. Go to your personal settings on GitHub, then go to Applications and navigate to the Authorized OAuth Apps. There you should see Rollbar, click on the link and you should be able to grant permission to the organization. --- - [Efficient Error Triage: Reducing Debugging Time](https://rollbar.com/blog/error-triage/): Efficiently triaging issues can drastically reduce downtime, improve user experience, and keep your development team focused on innovation. Rollbar offers powerful features designed to help teams streamline error triage and resolve issues quickly. Here's how you can master the triage process and leverage Rollbar to reduce time spent debugging. - [Exciting Security Enhancements: Stronger, Smarter Access Tokens](https://rollbar.com/blog/smarter-access-tokens/): Security has been our top priority over the last year, and we’re rolling out major improvements to account and project... - [Throwing Exceptions in C++](https://rollbar.com/blog/error-exceptions-in-c/): Exceptions provide a formal and well-defined way for detecting errors and to pass the information up the call stack. - [Java Exceptions Hierarchy Explained](https://rollbar.com/blog/java-exceptions-hierarchy-explained/): The tree diagram below shows the standard exception and error classes defined in Java, organized in the Java exceptions hierarchy. - [Sunset of Bitbucket Web Frame](https://rollbar.com/blog/sunset-bitbucket-web-frame/): Sunset of BitBucket Web Frame - [How to Fix the "Unexpected End of zlib Input Stream" Error](https://rollbar.com/blog/unexpected-end-of-zlib-input-stream/): Improve your decompression process. Learn how to handle truncated data, corrupted streams, and flawed logic with actionable code examples. - [Expanded Search: Nearly All Standard Fields Are Now Searchable](https://rollbar.com/blog/expanded-search/): We’re excited to share some great news about our Related Tab feature! We’ve listened to your feedback and made big improvements to help you manage and investigate your items more easily. The Related Tab is a helpful tool that shows you other items related to the one you’re looking at. This makes it easier to see if the same issue is happening in different parts of your code base or if there are similar items that might be connected. Knowing this can help you understand if a problem is widespread or if there are other occurrences that could help you debug it quicker. - [Enhanced Search: Key/Value Searching Now Available for Custom Fields](https://rollbar.com/blog/custom-field-search/): We’re excited to share some great news about our Related Tab feature! We’ve listened to your feedback and made big improvements to help you manage and investigate your items more easily. The Related Tab is a helpful tool that shows you other items related to the one you’re looking at. This makes it easier to see if the same issue is happening in different parts of your code base or if there are similar items that might be connected. Knowing this can help you understand if a problem is widespread or if there are other occurrences that could help you debug it quicker. ### Filtering Javascript errors by language - Published: 2020-09-22 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/filtering-javascript-errors-by-language/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices If your application has an international user base, you may be receiving Javascript error reports in the local language of your users' browsers. While Rollbar can't translate error messages into your preferred language, it is possible to group errors by language so that you have fewer items to manage. Here are a few custom grouping recipes to match errors based on browser language: One supported language The following rule groups errors where client. language. javascript does not contain en-: { "condition": { "path": "client. javascript. language","ncontains": "en-" }, "fingerprint": "non-en error", "title": "non-english error" } Multiple supported languages The following rule groups errors where client. language. javascript does not contain en-,fr-,de-, or es-: { "condition":{ "all": }, "fingerprint": "non-supported language error", "title": "non-supported language error" } --- - [Fast, Accurate and Powerful Item Search](https://rollbar.com/blog/upgraded-search/): We’re excited to share some great news about our Related Tab feature! We’ve listened to your feedback and made big improvements to help you manage and investigate your items more easily. The Related Tab is a helpful tool that shows you other items related to the one you’re looking at. This makes it easier to see if the same issue is happening in different parts of your code base or if there are similar items that might be connected. Knowing this can help you understand if a problem is widespread or if there are other occurrences that could help you debug it quicker. - [How to Resolve an object reference is required for the non-static field](https://rollbar.com/blog/how-to-resolve-an-object-reference-is-required-for-the-non-static-field/): This error occurs when a static method tries to use a non-static member without having an instance to work with. I'll show you three simple fixes. - [5 Best Error Monitoring Tools to Use in 2025](https://rollbar.com/blog/best-error-monitoring-tools/): Rollbar leads with full-stack support, followed by Sentry, Datadog, Bugsnag, and LogRocket. Includes pricing, pros/cons, and essential features. ### Hiding Third-Party Code - Published: 2020-09-22 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/hiding-third-party-code/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices When using libraries or frameworks you will often have large portions of well-tested third party code that is unlikely to have caused an error for you. In order to keep the focus on your code Rollbar will collapse stack frames from third party code. Single Root To set this up all you have to do is configure your SDK to send the server. root, or the prefix URL for all in-house stack frame filenames. Any code from outside the server. root directory will be collapsed by default when you load that item in the Rollbar UI. For example, in a hypothetical stack trace with lines from the following files: ● /home/deploy/www/app/model. py ● /home/deploy/www/app/controller. py ● /home/deploy/www/vendor/webfmwk/eventloop. py ● /home/deploy/www/vendor/webfmwk/startup. py ● /home/deploy/www/app/main. py and with server. root set to /home/deploy/www/app, the lines from the vendor directory would be collapsed together, to allow you to focus on your code, and not the unlikely possibility that webfmk has a bug. Extra Roots Sometimes you'll have split your code into multiple sibling modules adjacent to folders you do not want included as project code (vendor, models, controllers, for instance). In these cases you can send additional application roots in the project_package_paths key. These paths should look identical to the server root (the beginning of a URL), and the key should be in an array containing any additional folders to be considered "in-project". --- - [5 Best Session Replay Tools in 2025](https://rollbar.com/blog/session-replay-tools/): Users lie, logs lie, everything lies. But session replay tools show you exactly what happened. The newest tools use AI to keep watch so you don't have to. ### Disable Two Factor Authentication - Published: 2020-09-22 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/disable-two-factor-authentication/ - KB Tags: Security - KB Categories: Security If you no longer have access to your 2FA device and do not have your recovery codes, Rollbar cannot disable 2FA on your user account unless you are on a paid account (see below). There are a couple of possible solutions that can allow you to regain access to your account. If there is another user in your account that is a member of the Owners team, they can disable 2FA for you via the Account Settings --> Members screen. If you are the only Owner in your account, and your 2FA device was a smart phone (e. g. iPhone, Android), then you can restore a backup of your device that has your authentication app properly configured. Note: If you are a paying customer, we can make two small charges (less than $1 US) to your credit card. If you can tell us the amount of those charges, then we will disable 2FA and immediately reverse the charges. --- - [Unlock Enhanced Item Management with Our Revamped Related Tab](https://rollbar.com/blog/enhanced-related-items/): We’re excited to share some great news about our Related Tab feature! We’ve listened to your feedback and made big improvements to help you manage and investigate your items more easily. The Related Tab is a helpful tool that shows you other items related to the one you’re looking at. This makes it easier to see if the same issue is happening in different parts of your code base or if there are similar items that might be connected. Knowing this can help you understand if a problem is widespread or if there are other occurrences that could help you debug it quicker. - [What is OpenTelemetry](https://rollbar.com/blog/what-is-opentelemetry/): An Observability framework and toolkit designed to create and manage telemetry data such as traces, metrics, and logs. ### Preventing Client-Side Access Token Abuse - Published: 2020-09-22 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/preventing-client-side-access-token-abuse/ - KB Tags: Security - KB Categories: Security Unfortunately there is no silver bullet here -- all analytics services have this problem too (Google Analytics, Mixpanel, etc. ). Our best practices for mitigating this problem: Access tokens Use a separate client-side token with post_client_item scope only. (This is the default post_client_item token. ) The client-side access token can only be used to send events and only from client-side platforms. It can't be used to read any data, and it can't be used to spoof server-side events. Tokens can be disabled and replaced at any time. If someone is abusing your token, you can disable it and use a new one instead. IP Blocklist We also provide an IP Blocklist so that you can blocklist specific malicious IPs. You can find the source IPs in the Rollbar interface, and then add those IP(s) to the blocklist. (Project -> Settings -> IP Blocklist) --- - [Most Popular Java Web Frameworks in 2025](https://rollbar.com/blog/most-popular-java-web-frameworks/): Look, if you're starting a new Java web project in 2025, you should probably just use Spring Boot. With the... - [How to Fix Android's Resources.NotFoundException](https://rollbar.com/blog/android-content-res-resources-notfoundexception/): This error is like trying to order your favorite dish at a restaurant, only to have the waiter tell you it's not on the menu anymore. - [Next.js or Remix: Which Framework is Better, and When?](https://rollbar.com/blog/nextjs-vs-remix/): Both frameworks cater to modern web development needs, but they differ in their approach to routing, data fetching, and performance optimization. - [Email Warmup's Story with Rollbar](https://rollbar.com/blog/emailwarmup-story-with-rollbar/): We use Rollbar to monitor our backend systems, particularly for email deliverability algorithms and campaign management tools. It integrates seamlessly with our Slack channels to alert our team about issues in real-time. Without Rollbar, small glitches could escalate into bigger problems, impacting our clients’ email performance. ### Source Map Troubleshooting - Published: 2020-09-22 - Modified: 2021-06-14 - URL: https://rollbar.com/knowledge-base/source-map-troubleshooting/ - KB Tags: Troubleshooting - KB Categories: Troubleshooting Rollbar applies source maps to exceptions from minified Javascript so you can view the original line and character numbers for debugging. For full details on source maps in Rollbar, check out our Source Maps guide. Do your source maps work locally? Source maps were originally developed to support local debugging of minified Javascript. If you are not able to debug your minified Javascript code via your browser, then it will probably not work in Rollbar either. For instructions on using source maps for local debugging, see this article in Google's Tools for Web Developers. Are your source maps being successfully uploaded/downloaded? Rollbar provides a detailed view of known source maps for each project. You can view it by going to Settings -> Symbol Mapping -> Source Maps in your Rollbar project. This screen shows all attempt to access source maps, both successful and unsuccessful. It includes a search feature that can be used to look for source maps for specific Javascript files. Are your source maps valid? Sometimes source maps can be generated with no content in them, or in an invalid format, e. g. base64. Check the source maps that are being uploaded to make sure they are in a human-readable format. We also have this helpful tool to help check if your source map produces the correct mapping for the line numbers and column numbers from the exception. Are source maps enabled by default for older projects? If your project was created prior to May 16, 2017, then... --- - [Sentry, But Better? 6 Sentry Alternatives to Keep Your Code Error-Free](https://rollbar.com/blog/sentry-alternatives-for-error-tracking/): If you're looking to optimize your app’s performance and squash bugs more efficiently, we look at some top-tier alternatives to Sentry you should consider. - [Smarter Operations: How Rollbar + GrowthBook Minimize Downtime and Boost Reliability](https://rollbar.com/blog/how-rollbar-growthbook-minmize-downtime-boost-reliability/): Software development and operations teams are the guardians of system stability, ensuring uptime, reliability, and performance across complex software ecosystems. The stakes are high—every second of downtime impacts your brand’s reputation and bottom line. That’s why integrating Rollbar’s error monitoring with GrowthBook’s feature flagging is a game-changer for ops teams. - [The Python stderr Guide I Wish I Had As A Beginner](https://rollbar.com/blog/raise-stderr-python/): Learn how to separate error messages from regular output in Python using stderr. Clear examples, command-line tricks, and formatting tips. ### Improve your Error Grouping with the help of Rollbar - Published: 2020-09-22 - Modified: 2021-06-14 - URL: https://rollbar.com/knowledge-base/improve-your-error-grouping-with-the-help-of-rollbar/ - KB Tags: Strategies - KB Categories: Working with Rollbar Items Overview Congratulations on setting up your Rollbar projects! You took a step towards more visibility and an easier flow when it comes to debugging. Now, you might as well learn how the incoming errors are examined and grouped together by Rollbar. Let’s see how it happens and what else do we have to offer! With the help of Rollbar’s default grouping algorithm, you will: Keep your items list transparent and organized, Reduce the noise in your notifications, Understand and respond to your errors better. Learn how Rollbar groups your items by default Error grouping means that when you release a code to production, and it crashes hundreds of times, our system groups all of those crashes together in one error item and sends you one notification, instead of notifying you every time, resulting in 100 notifications in your inbox. The 1 item in your items list will include all the details of all the occurrences of your error. The Rollbar grouping algorithm is smart and is being improved constantly, so we can serve our customers. Rollbar tries to group occurrences together with the same root cause in one item so that you: Have visibility over all the occurrences of one error item, which makes you Understand your errors a lot easier, and Speed up the bugfixing process. The occurrence fingerprints are resilient to deploys and code changes, so you can track the history of your occurrences through multiple deploys and code versions. Take your Grouping to the next level It... --- - [Chayn's Story with Rollbar](https://rollbar.com/blog/chayn-story-with-rollbar/): At PLUM, we focus on crafting custom software solutions tailored to specific needs. Our projects range from helping startups launch their initial products to assisting established enterprises in scaling and enhancing their software infrastructure. - [How to Fix the OutOfMemoryError in Java](https://rollbar.com/blog/how-to-handle-outofmemoryerror-exceptions-in-java/): A java.lang.OutOfMemoryError is a runtime error in Java which occurs when the JVM is unable to allocate an object due to insufficient space in the Java heap. ### Manual merging vs. Custom fingerprints - Published: 2020-09-22 - Modified: 2021-06-14 - URL: https://rollbar.com/knowledge-base/manual-merging-vs-custom-fingerprints/ - KB Tags: Tool Integrations - KB Categories: Working with Rollbar Items Overview Rollbar has a pretty sufficient default grouping algorithm, that automatically analyzes the stack traces of the incoming occurrences and groups them if there is a common pattern. This helps to reduce the noise of incoming occurrences by a great deal! But what happens, if you want to organize your Items list differently? In this article, we will walk you through all the benefits of: Merging items manually, instantly, when you think 2 or more items should go together, Create custom fingerprints for future occurrences and tailor grouping to your own needs. Merge your items instantly You can manually merge items together, thus combining items into one new group for easier management. In this case, all past and future occurrences of those items will be combined automatically, and you will have one unified view on the Item details page of all the occurrences of the error. Manually merging your items comes handy, when the grouping algorithm separates items that you think should rather go together. You can then group them instantly with the merging option. It is also useful when you want to group items together, that do not require their own custom fingerprint. If you want to remove items from a group, because they were mistakenly grouped together or you decided to organize the occurrences separately, you have the chance to un-merge them and from then on they will be handled as separate items. Create custom fingerprints When you manually merge items together, Rollbar will analyze the items and... --- - [How to Fix TypeError: NoneType Object Is Not Iterable in Python](https://rollbar.com/blog/python-typeerror-nonetype-object-is-not-iterable/): The Python TypeError: NoneType Object Is Not Iterable is an exception that occurs when trying to iterate over a None value. Learn how to fix it. - [How to Fix SyntaxError: Unexpected Token in JavaScript](https://rollbar.com/blog/how-to-fix-syntaxerror-unexpected-token-in-javascript/): This error typically results from missing or misplaced symbols, such as parentheses, commas, or brackets, or from improper JSON formatting. Let's fix it. ### Streamline your items workflow - Published: 2020-09-22 - Modified: 2021-06-14 - URL: https://rollbar.com/knowledge-base/streamline-your-items-workflow-2/ - KB Tags: Tool Integrations - KB Categories: Working with Rollbar Items Overview Chances are you have multiple incoming occurrences in your Rollbar projects, grouped into items, appearing in your Item list, one after another. You also start to receive notifications pouring in your inbox. Now, you might as well keep your incoming items organized and clean by Rollbar’s useful options of: Setting up statuses for your items, that determine how they appear and behave, Triaging and rating them based on their severity level. This way you can make sure your item list is transparent, you will not be spammed by irrelevant notifications, provide clear visibility for your teams who manage the same project by appropriately triaging your errors and setting up the relevant severity level and status, to speed up the process of debugging, making sure everyone focuses their attention on the relevant things! Item statuses At Rollbar, we offer the chance to assign 3 statuses for your items: Active, Resolved, Muted. Active items All items start as active. Active means that the error is present and on-going and it requires your attention. It could represent a bug that has not yet been fixed or an intermittent ongoing backend issue. Active items Appear on the Dashboard Trigger notifications on their first occurrence and when thresholds are crossed (according to your notification rules) Count for billing purposes Can be changed to Resolved and Muted Resolved items When you believe your item is fixed or if you want to be notified if the bug re-appears you can mark it as Resolved. If possible... --- - [Shilpa's Story with Rollbar](https://rollbar.com/blog/shilpas-story-with-rollbar/): Rollbar has been an excellent tool for error reporting on both the server and client sides. It has greatly helped us in pinpointing and identifying the root causes of issues. By using Rollbar, we’ve been able to make our product more robust over time. - [Reduce noise and save time with the new Merge feature on the item detail page](https://rollbar.com/blog/item-merge/): We are excited to release a new feature that will make it easier to group your items, reduce noise, and simplify your error management directly from the Item Detail page header. While you are investigating an item,, you can now search for other items within the same project and environment and merge right from that page without having to navigate back to the Item List page. ### Auto-upgrading in Rollbar - Published: 2020-09-21 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/auto-upgrading-in-rollbar/ - KB Tags: Billing - KB Categories: Billing and Event Quotas If you have a paid subscription to Rollbar, then you can choose to automatically upgrade your account whenever you reach your monthly event limit. Automatic upgrades are enabled by default, and can be turned on/off by going to Account Settings --> Billing Info. If automatic upgrades are enabled, you will receive several warning emails before your plan is upgraded. We send you emails when your account has reached 70%, 90%, and 100% of your monthly quota, and we'll also notify you if your account was automatically upgraded. If automatic upgrades are disabled and your account reaches its monthly event limit, then your account will not receive any more data until your next monthly cycle begins. We send out notifications throughout the month to notify you if you are likely to hit your event limit, so you have the opportunity to choose to auto-upgrade or to limit the number of events sent to Rollbar. Click here for more information about billing in Rollbar --- - [How to Fix TypeError: Cannot Read Property of Undefined in JavaScript](https://rollbar.com/blog/javascript-typeerror-cannot-read-property-of-undefined/): This guide explains the root causes and offers multiple solutions from basic checks to advanced ES2020+ features like optional chaining. - [How to use the Throws keyword in Java (and when to use Throw)](https://rollbar.com/blog/how-to-use-the-throws-keyword-in-java-and-when-to-use-throw/): Both throw and throws are concepts of exception handling in Java. The throws keyword is used to ..., while the throw keyword is used to explicitly... ### GDPR & Rollbar - Published: 2020-09-20 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/gdpr-rollbar/ - KB Tags: Knowledge Base - KB Categories: Security Rollbar is compliant with GDPR and can serve as a data processor for customers who control data from individuals in the EU. We provide the following measures to enable our customers to maintain GDPR compliance: Data Processing Agreement Rollbar provides a data processing agreement (DPA) which can be viewed and accepted by going to Account Settings -> Security -> Data Processing Agreement. Data Retention To ensure that you retain your customer's identifiable data no longer than necessary, we've added the option in paid Rollbar accounts to customize your data retention period between 7-180 days. You can update this by going to Account Settings -> Security -> Data Retention. Right to be Forgotten We've added an API for deleting person tracking data. See our API docs for details. Data Subprocessor Explanation If you are required to list Rollbar as a data subprocessor, the following information can be provided: Purpose: Exception reporting Location: USA Questions? Don't hesitate to contact us via privacy@rollbar. com. --- - [3 Ways to Fix “jquery is not defined”](https://rollbar.com/blog/fix-jquery-is-not-defined/): Discover common causes like incorrect capitalization, missing script tags, and loading order issues. Get step-by-step solutions and best practices. - [How to Fix the EOFException in Java.io](https://rollbar.com/blog/java-eofexception/): This exception typically pops up when you're working with streams of data, such as reading from a file or receiving data over a network. Learn how to fix it. ### Could not compare commits between SHAs ... - Published: 2020-09-17 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/could-not-compare-commits-between-shas/ - KB Tags: Tool Integrations - KB Categories: Troubleshooting Occasionally when using Rollbar's Deploy Tracking feature, you may see a message such as the following: Could not compare commits between SHAs abcdef... . and 123456... . This usually means that one of the SHAs is either invalid or has not been pushed to Github. A common cause of this problem is that your Github OAuth token has expired. Here are steps to see if this is the source of the problem: In Rollbar: In the Rollbar project where you encountered the issue, go to Settings → Source Control . Copy the Repository , Default Branch , and Project Root settings for later use. Click Disconnect where it says Connected to Github as {github-username} . In GitHub: Go to Settings → Applications → Authorized OAuth Apps, find Rollbar, click Revoke, and then confirm that you want to revoke access. In Rollbar: In the Rollbar project where you encountered the issue, go to Settings → Source Control, select Github as the source control provider, then click Connect to Github, and then complete the authorization process. Reconfigure Repository , Default Branch , and Project Root . Check your deploys page. If the SHAs specified in the deploys are valid, then you should no longer see the message. --- - [How to Fix ReferenceError: Require is Not Defined in JavaScript](https://rollbar.com/blog/referenceerror-require-is-not-defined-javascript/): Since require is specific to Node.js, if JavaScript code is executed outside of a Node.js environment, require will not be recognized. - [Xyla AI's Story with Rollbar](https://rollbar.com/blog/xyla-ais-story-with-rollbar/): We use Rollbar for all our error reporting. It's used by our engineering team to notify us of issues that arise and to help us debug them. It's really helpful in cutting through the noise and letting us know only the errors that we need to care about. - [How to Catch Multiple Exceptions in Java](https://rollbar.com/blog/how-to-catch-multiple-exceptions-in-java/): Sometimes multiple catch blocks are best; other times, multi-catch or a catch-all block might be more appropriate. Learn all the best practices here. ### Get more insights and control over your errors - Published: 2020-09-17 - Modified: 2021-06-14 - URL: https://rollbar.com/knowledge-base/get-more-insights-and-control-over-your-errors/ - KB Tags: Tool Integrations - KB Categories: Core Features and Best Practices Overview In this article, we will walk you through all the perks of integrating GitHub source control with your Rollbar projects. Once you have source control integration set up and a Git repository is connected to your Rollbar projects, you will have more visibility on: where the error was most recently activated, the context of the code line where the bug occurred, and who the last person was to work on the affected code section, thus being able to assign it to the right person to work on it and resolve it faster. Additionally, you won’t even have to leave your Rollbar project. Sounds tempting, right? Let's get to it! Don't have time to read? Watch our short video on GitHub source control integration. Gain more visibility all in one place When a Rollbar project is connected to a Git repo, stack traces will include links to each file in the code version where the error was most recently activated. Another advantage is that the list of commits included in each deploy will include URLs so you can view the difference for each commit as well as the entire deployed code version, thus spotting where the error occurred and fixing it with ease. You will also have the chance to view un-deployed commits. Any commit that has been merged to your master branch but not yet deployed will be highlighted at the top of the Deploys screen. This will provide more visibility for developers who have missed the commits while... --- - [New Rollbar Dashboard](https://rollbar.com/blog/introducing-new-dashboard/): We're thrilled to introduce a major update to your Rollbar experience: the new Rollbar Dashboard! Designed with your workflow in mind, this dashboard provides an intuitive, customizable view of your application’s item activity and project setup, all in one place. - [How to Fix the "document is not defined" Error in JavaScript](https://rollbar.com/blog/how-to-fix-document-is-not-defined-error-javascript/): By ensuring you're in a browser context and that the DOM is fully loaded before you access ‘document’, you can avoid this error. ### "There was a problem trying to connect to your Asana account." message appears - Published: 2020-09-17 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/there-was-a-problem-trying-to-connect-to-your-asana-account-message-appears/ - KB Tags: Tool Integrations - KB Categories: Troubleshooting This warning message typically appears because the Rollbar app is having problems accessing the Asana API due to an outage or a timeout. This happens intermittently and is a known issue in the Asana API. Asana's platform team are working to improve performance and stability of the API to reduce future occurrences. If you encounter this error, please wait a couple of minutes and try to repeat your action again. If the error persists, please notify Asana via https://asana. com/support as well as Rollbar via support@rollbar. com or the in-app chat. --- ## Press - [Logging Levels in Python are Unnecessary - Just Log Everything](https://rollbar.com/blog/logging-levels-in-python-are-unnecessary/): Is selective logging costing you valuable insights? Discover the power of logging everything in Python with Rollbar. - [Introducing Overage Budgets](https://rollbar.com/blog/introducing-overage-budgets/): We all know how tricky it can be to keep track of costs, especially when your projects spike or with the latest feature that your users love. That's why we've been working on a solution to ensure you never have surprise billing due to on-demand occurrences. - [How to Fix The IllegalStateException in Java](https://rollbar.com/blog/java-illegalstateexception/): The IllegalStateException in Java occures when a method has been invoked at an illegal or inappropriate time. - [How to Fix "Illegal Start of Expression" in Java](https://rollbar.com/blog/how-to-fix-illegal-start-of-expression-in-java/): The “illegal start of expression” error in Java often arises from an insufficient familiarity with the language or due to basic negligence. Learn how to fix it. ### SafetyDetectives - Interview with Brian Rue - CEO and Co-founder at Rollbar - Published: 2024-01-22 - Modified: 2024-01-22 - URL: https://rollbar.com/press/safetydetectives-interview-with-brian-rue-ceo-and-co-founder-at-rollbar/ Inter --- - [How to Handle Checked & Unchecked Exceptions in Java](https://rollbar.com/blog/how-to-handle-checked-unchecked-exceptions-in-java/): There are 2 types of Java Exceptions → ✓Checked ✓Unchecked. Learn more about Java Exceptions & How to Handle Them Now! ### Rollbar Research Shows Developers Feel Most Productive When Creating Better Quality Code - Published: 2022-07-12 - Modified: 2022-09-28 - URL: https://rollbar.com/press/rollbar-research-shows-developers-feel-most-productive-when-creating-better-quality-code/ SAN FRANCISCO--(BUSINESS WIRE)--New research from Rollbar, provider of real-time error monitoring Software as a Service, indicates that nearly a third (32%) of CTOs, developers, engineers and technical leads feel the most productive when they are creating better quality code – and not just more code. Nearly as many (28%) said that meeting and exceeding their managers’ expectations is what makes them feel the most productive, while more than a quarter (26%) said that productivity means delivering more new product features and services. Meanwhile, just 13% said that they equate productivity with the quantity of code they create. This research is based on a national survey of more than 1,000 CTOs, developers, engineers and technical leads across sectors done on behalf of Rollbar by Propeller Insights in 2022. “Coding is hard, tedious work, and it’s easy for developers to become tired of it, especially amid the uncertainties created by COVID-19 and the changing global business landscape,” said Brian Rue, CEO and co-founder at Rollbar. “But, as our research highlights, developers care deeply about code quality and meeting business objectives, and they equate their productivity to these considerations and to improving product. And 76% of survey participants said that better tools could increase their productivity. So, managers and companies must keep developers engaged with new and challenging tasks, support them with new tools to code better and faster, and create environments that nurture creativity and acknowledge that burnout is real. ” Most organizations are already working on making all of that happen.... --- - [What is “except Exception as e” in Python?](https://rollbar.com/blog/what-is-except-exception-as-e-in-python/): Wrap risky code in a try block and catch exceptions in an except block. The exception is assigned to the variable e for further use. ### Rollbar Secures $11 Million Series B To Help Engineering Teams Release More Often - Published: 2020-03-03 - Modified: 2021-06-11 - URL: https://rollbar.com/press/rollbar-secures-11-million-series-b-to-help-engineering-teams-release-more-often/ SAN FRANCISCO, CA - March 4, 2020 -- Rollbar, provider of real-time error monitoring Software as a Service, today announces $11 million in Series B funding. The round was led by Runa Capital, an international VC firm headquartered in Silicon Valley that backs early-stage startups in deep tech and cloud business software. Long Light Capital and Blossom Street Ventures also participated in this round, along with existing investors Cota Capital, Bain Capital, and Patagonia Capital. Dmitry Galperin from Runa Capital will take a board seat. As every business becomes a software business, real advantages come from being able to iterate quickly and release continuously. And for that, automated release is not enough anymore, you also need automated response. Automated response includes being able to see, understand, and resolve problems in real-time across the entire software development lifecycle. And that's exactly what Rollbar is building. Rollbar provides an automated error response platform centered around its proprietary, customizable grouping engine. Its solution offers workflow capabilities and integrates seamlessly into the modern development stack. "Traditional monitoring doesn't give developers what they need to understand and respond to massive amounts of machine data. Developers need a better way to see where they're going. We're already working with more than 100,000 developers at over 4,000 customers, such as Twilio, Branch, Salesforce and Instacart to help them iterate faster and with more confidence. We're pleased with the support from Runa Capital as we scale our company," said Brian Rue, CEO and Co-Founder of Rollbar. Rollbar plans... --- ### New UX From Rollbar Takes The Hassle Out Of Monitoring And Debugging Errors In Microservices - Published: 2019-12-15 - Modified: 2021-06-11 - URL: https://rollbar.com/press/new-ux-from-rollbar-takes-the-hassle-out-of-monitoring-and-debugging-errors-in-microservices/ Centralized Realtime View of Errors Helps Companies Deliver Better Customer Experiences SAN FRANCISCO – December 16, 2019 - Rollbar, provider of real-time error monitoring Software as a Service, announced today a new UX and interface that fully supports microservices and provides users with a much richer experience. As complex distributed architecture becomes the norm, Rollbar is working diligently to ensure its core user experience reflects this paradigm shift by adopting powerful multi-project views across the entire user workflow. Rollbar’s new UX allows users to monitor all microservices with one tool in one view and receive real-time alerts on errors across multiple services with its multi-project filter. Developers know exactly where the error occurred, how many times, and why. They can also track deploy version quality across one or every microservice in a single glance. And users can set up their own personal workspace for services or projects they are working on with powerful filters for projects, environments, frameworks, and error severity that persist across different views. “When Rollbar was first introduced, practices such as microservice architecture and continuous delivery weren’t as common,” said Cory Virok, co-founder and CTO of Rollbar. “But most enterprises have or are in the process of migrating to a microservices model, which was the primary driving force behind our new UX. ” With the new UX, Rollbar users can have their own personal workspace for services or projects they care about. Whether looking at the main dashboard, the Items view, or Versions, users only see what... --- - [What does java.lang.RuntimeException mean?](https://rollbar.com/blog/java-lang-runtime-exception/): Runtime exceptions help manage unexpected issues that arise while your application is running to avoid crashing. ### Rollbar Announces First Error Monitoring Solution For Salesforce Apex Platform - Published: 2019-11-13 - Modified: 2021-06-11 - URL: https://rollbar.com/press/rollbar-announces-first-error-monitoring-solution-for-salesforce-apex-platform/ Four Million Salesforce Developers Can Now Find and Fix Errors in Apex Apps in Real-Time SAN FRANCISCO – November 13, 2019 -- Rollbar, provider of real-time error monitoring Software as a Service, announced today the first error monitoring solution for Salesforce’s Apex platform. Rollbar’s automatic error detection and analysis solution empowers Salesforce customers and partners using its Apex platform with customizable tools and filters that greatly reduce the time it takes to detect and fix errors in code. There are currently more than four million developers on the Salesforce platform and thousands of ISVs that have built apps on Apex. Apex is a strongly typed, object-oriented programming language that allows developers to execute flow and transaction control statements on Salesforce servers in conjunction with calls to the API. Using syntax that looks like Java and acts like database stored procedures, Apex enables developers to add business logic to most system events, including button clicks, related record updates and Visualforce pages. “The idea to develop a Rollbar solution for Apex was really driven by our customers, who are increasingly utilizing this robust platform to develop a wide variety of applications,” said Francesco Crippa, VP of engineering at Rollbar. “Salesforce developers can now monitor Apex applications they’ve created in real-time and see if anything is broken, where it’s broken, does it matter, and how to fix it, which saves time and human resources and gets applications to the market sooner. ” Whether developing apps internally to extend the functionality of Salesforce or... --- - [How to Fix Invalid SyntaxError in Python](https://rollbar.com/blog/python-syntaxerror/): The Python SyntaxError occurs when the interpreter encounters invalid syntax in code. Learn how to fix it. ### Rollbar to Offer Its Error-Monitoring Solution on Google Cloud Platform Marketplace - Published: 2019-04-08 - Modified: 2021-06-11 - URL: https://rollbar.com/press/rollbar-to-offer-its-error-monitoring-solution-on-google-cloud-platform-marketplace/ SAN FRANCISCO - April 9, 2019 -- Rollbar, provider of real-time error monitoring Software as a Service, announced today its partnership with Google Cloud and its availability on the Google Cloud Platform (GCP) Marketplace. Rollbar provides automatic error detection and analysis centered around its customizable grouping engine. GCP Marketplace lets users quickly deploy software that runs on Google Cloud Platform and allows customers to easily start up a familiar software package with Google Cloud services, with no manual configuration required. With debugging taking up to 50 percent of software development time, adding Rollbar’s error-monitoring solution to the GCP Marketplace means customers now have instant access to a cutting-edge solution that enables developers and DevOps teams to monitor errors in real-time as new software is built and deployed, notify the right team of an error, and have rich contextual data for debugging the error faster across the development lifecycle. With Rollbar, engineering teams can detect application errors and resolve them quickly - greatly reducing time and human resources spent on traditional debugging. “Availability on the GCP Marketplace empowers development teams to take advantage of Rollbar’s real-time error monitoring solution - enabling them to release their software with confidence by providing visibility into the quality of code throughout their development lifecycle,” said Brian Rue, CEO of Rollbar. GCP Marketplace supports ready-to-go technology stacks to accelerate development. Deploying Rollbar into any GCP environment is fast and easy, and billing is simplified because Rollbar shows up as a line item in the monthly GCP... --- - [How to Fix ValueError Exceptions in Python](https://rollbar.com/blog/python-valueerror/): The Python ValueError occurs when a function receives an argument of the correct data type but an inappropriate value. Learn how to fix it. ### Rollbar Acquires Hungary-Based Samebug - Published: 2019-02-24 - Modified: 2022-07-20 - URL: https://rollbar.com/press/rollbar-acquires-hungary-based-samebug/ SAN FRANCISCO and BUDAPEST, February 25, 2019 -- Rollbar, provider of real-time error monitoring Software as a Service, announced today it has acquired Hungary-based Samebug, in a strategic move that further deepens its domain expertise in grouping and allows for integration of proprietary Samebug technology into its error monitoring solution. It also allows Rollbar to quickly grow its engineering team and have greater access to European customers. A study, published in InfoQ, shows debugging takes up to 50 percent of the development cycle, and that it’s twice as hard as writing code in the first place. Rollbar enables developers and DevOps teams to monitor errors in real-time as new software is built and deployed, notify the right team of an error, and provide rich contextual data for debugging the error faster across the development lifecycle. With Rollbar, engineering teams can detect application errors and resolve them quickly - greatly reducing time and human resources spent on traditional debugging, which can better be used elsewhere. Samebug was founded by CEO, Renáta Tamási-Irsai, a recognized entrepreneur and innovator who was the second-place winner at the prestigious CEE Women Startup Competition, along with CTO Árpád Tamási and lead developer Dániel Poroszkai. “We are very excited to be part of the Rollbar family and ready to tackle the challenges associated with this fast-growing market,” said Renáta. “Our goal is to change how developers, in any industry, code and debug, providing solutions to software problems (crashes) automatically whenever it’s needed, in a form it’s needed.... --- - [How to Resolve the NoClassDefFoundError in Java](https://rollbar.com/blog/java-no-class-def-found-error/): NoClassDefFoundError is a Java error that occurs when the JVM is unable to find a class at runtime which was available at compile-time. ### How to Fix the Unsupported Operation Exception in Java > The UnsupportedOperationException occurs when attempting operations that aren't supported, primarily when trying to modify immutable collections. - Published: 2025-04-20 - Modified: 2025-04-20 - URL: https://rollbar.com/blog/fixing-unsupportedoperationexception-in-java/ - Categories: Code Tutorials, Java - Tags: error-handling, java Java throws an UnsupportedOperationException when you attempt to modify an object that was designed to be viewed but not changed. Think of UnsupportedOperationException as trying to open a door with the wrong key. The door exists and looks like any other door, but your particular key (or operation) simply isn't compatible with its lock. This runtime exception is Java's way of telling you that while the method you're calling appears to exist, this specific implementation doesn't support that operation - usually because you're dealing with an unmodifiable or fixed-size collection. For example, if an unmodifiable List is attempted to be modified by adding or removing elements, an UnsupportedOperationException is thrown. This is one of the common exceptions that occur when working with Java collections such as List, Queue, Set and Map. Since it's an unchecked exception, it doesn't need to be declared in the throws clause of a method or constructor, making it even more frustrating when it appears unexpectedly in your logs. What Causes UnsupportedOperationException The UnsupportedOperationException is thrown when a requested operation cannot be performed because it's not supported for that particular class. Here are the most common causes: 1. Fixed-Size Lists from Arrays. asList One of the most frequent causes is using the asList method of the java. util. Arrays class. This method returns a fixed-size, unmodifiable List, so operations like add or remove will throw the exception. 2. Immutable Collections Trying to modify collections returned by factory methods like List. of, Set. of, or Collections. unmodifiableList... --- - [How to Fix java.lang.StackOverflowError in Java](https://rollbar.com/blog/how-to-fix-java-lang-stackoverflowerror-in-java/): The java.lang.StackOverflowError is a runtime error which indicates that the application stack is exhausted. Let's fix it. - [How to Throw IllegalArgumentException in Java](https://rollbar.com/blog/how-to-throw-illegalargumentexception-in-java/): The IllegalArgumentException is thrown to indicate an illegal or unsuitable argument passed to a method. Learn how to solve it. - [How to Handle JavaScript Uncaught TypeError: "x" is Not a Function](https://rollbar.com/blog/how-to-handle-uncaught-typerror-x-is-not-a-function/): The Javascript TypeError: "x" is not a function occurs when calling a function on a value or object, which is not actually a function. Learn how to fix it. - [How to Fix KeyError Exceptions in Python](https://rollbar.com/blog/python-keyerror/): The Python KeyError is an exception that occurs when an attempt is made to access an item in a dictionary that does not exist. Learn how to fix it. ### A Rollbar felvásárolja a Samebugot - Published: 2019-02-24 - Modified: 2021-06-11 - URL: https://rollbar.com/press/rollbar-acquires-hungary-based-samebug-hu/ San Francisco & BUDAPEST, 25 február 2019 -- A szoftverhibák valós idejű monitorozását végző szoftvercég, a Rollbar felvásárolja a magyarországi székhelyű Samebugot. A stratégiai lépés célja a szoftverfejlesztés során felmerülő hibák csoportosításában szerzett eddig tudás mélyítése, valamint a Samebug technológiájának integrálása a jelenlegi szolgáltatásba. Egyben remek lehetőség ez arra is, hogy a Rollbar gyorsan növelje fejlesztői létszámát és könnyebben elérjék az európai ügyfeleiket. Egy InfoQ-ban megjelent tanulmány szerint a fejlesztők idejének nagyjából ötven százaléka telik hibakereséssel, vagyis debugginggal és javítással, ráadásul hibákat keresni kétszer olyan nehéz, mint kódot írni. A Rollbar megoldásával a fejlesztőcsapatok valós időben, a szoftverek megírásával egyidőben követhetik nyomon a hibákat és azonnal értesíthetik a megfelelő csapatot, hogy azok javítsák a problémát. Ezzel kellő mennyiségű adatot szolgáltatnak és maga a hibakeresés folyamata is felgyorsul - az így felszabaduló erőforrást új célok elérésére tudják használni. A Samebugot hárman alapították, Tamási-Irsai Renáta cégvezető, Tamási Árpád technológiai vezető és Poroszkai Dániel vezető fejlesztő. "Büszkék vagyunk arra, hogy a kaliforniai Rollbar csapat tagjaivá válunk és együtt nézünk szembe a gyorsan növekvő piac kihívásaival", mondta Tamási-Irsai Renáta. "Célunk, hogy megváltoztassuk ahogyan a fejlesztők kódolnak és hibákat javítanak azzal, hogy automatikus megoldásokat nyújtunk a szoftveres problémákra olyan formában és ott, ahol azokra szükség van. ” "Ez a felvásárlás megszilárdítja a Rollbar vezető pozícióját az ágazatban", ezt Salil Deshpande, a Palo Alto-i Bain Capital Ventures igazgatója mondta, cége hatmillió dollárt fektetett a Rollbarba. "A valós idejű hibakeresés gyorsan válik minden fejlesztő eszköztárának meghatározó részévé, a Samebug technológiájának és szakértelmének integrációjával a Rollbar elsődleges választása... --- - [How to Catch and Fix NullPointerException in Java](https://rollbar.com/blog/how-to-catch-and-fix-nullpointerexception-in-java/): The java.lang.NullPointerException occurs when trying to use a variable that does not point to an object and refers to nothing or null. ### The 8 Best Application Performance Monitoring (APM) Tools in 2025 > Learn what makes each tool stand out, their pros and cons, who they’re ideal for, and how they’re priced (including free plans or trials where available). - Published: 2025-04-17 - Modified: 2025-04-22 - URL: https://rollbar.com/blog/best-apm-tools/ - Categories: topics - Tags: APM Application Performance Monitoring (APM) tools are software platforms that help developers, DevOps engineers, and technical managers track the performance and health of their apps and infrastructure in real time. They collect telemetry data like response times, error rates, resource usage, and user behavior, visualize this data, and make it easier to detect performance issues, pinpoint root causes, and ensure a smooth user experience. ​ In short, they help teams be proactive rather than reactive. In this roundup, we’ll review eight of the best APM tools available today, covering a mix of SaaS platforms and open-source solutions. We’ll look at what makes each tool stand out, their pros and cons, who they’re ideal for, and how they’re priced (including free plans or trials where available). But first, let’s talk about how we evaluated these tools – in other words, what makes a great APM tool in the first place. What Makes a Great APM Tool? Not all monitoring tools are created equal. Here are some key criteria and features that distinguish a great APM tool from the rest of the pack: Comprehensive Monitoring: Full-stack visibility across application metrics, infrastructure health, and user experience User-Friendly Setup: Easy deployment with out-of-the-box instrumentation and intuitive interface Strong Integrations: Compatibility with your tech stack and other tools in your workflow Effective Alerting: Real-time monitoring with customizable alerts and root cause analysis Scalability: Ability to handle large systems without performance degradation Reliable Support: Strong community or vendor backing with regular updates Cost-Effective: Pricing model that provides... --- ### Series A Funding - Published: 2017-10-22 - Modified: 2021-06-11 - URL: https://rollbar.com/press/series-a-funding/ --- ## Testimonials - [Introducing IP Safelist for our API access](https://rollbar.com/blog/ip-safelist-api-access/): We are excited to announce the expansion of our security controls by introducing IP Safelist for our API access. This new feature extends the advanced security options available in our Enterprise packages. - [Warmup Inbox's Story with Rollbar](https://rollbar.com/blog/warmupinbox/): At PLUM, we focus on crafting custom software solutions tailored to specific needs. Our projects range from helping startups launch their initial products to assisting established enterprises in scaling and enhancing their software infrastructure. - [How to Fix the Array Index Out Of Bounds Exception in Java](https://rollbar.com/blog/how-to-fix-the-array-index-out-of-bounds-excepiton-in-java/): To avoid this exception, ensure that your index values are within the valid range, from 0 to the length of the array minus one. ### Viniou's Story with Rollbar > We use Rollbar for all our error reporting. It's used by our engineering team to notify us of issues that arise and to help us debug them. It's really helpful in cutting through the noise and letting us know only the errors that we need to care about. - Published: 2025-04-16 - Modified: 2025-04-16 - URL: https://rollbar.com/blog/vininou-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Viniou is a web and mobile app that helps wine enthusiasts track, organize, and efficiently manage their vast wine collection 1. Can you introduce yourself, and tell us about your team or company? My name is Arnaud Cariou, and I’m the founder of Viniou, a web and mobile app designed to help wine enthusiasts manage their wine collections with ease. Viniou was born from a simple observation: it’s still surprisingly hard to keep track of what’s in your cellar, what should be opened, what needs to be restocked, or what’s been shared with friends. Our platform offers an intuitive and powerful way to organize bottles, optimize wine purchases, and follow the aging process over time. You can learn more here: https://www. viniou. co. uk 2. How are you using Rollbar? We use Rollbar for real-time error monitoring across both our . NET backend and our React Native mobile app. It allows us to detect issues as they occur, understand the context, and act quickly to deliver the best possible experience to our users. Since we handle personal data—especially users’ wine inventory—reliability is a top priority. Without Rollbar, we’d spend a lot more time chasing bugs manually, and we’d likely miss some critical problems. 3. What made you choose Rollbar? We chose Rollbar after evaluating several error tracking tools. What really made the difference was how easy it was to set up, the clarity of its interface, and how well it integrates into our workflow. The smart error grouping, detailed reports, and... --- - [How to Fix the ClassNotFound Exception in Java](https://rollbar.com/blog/how-to-resolve-classnotfoundexception-in-java/): The Java ClassNotFoundException occurs when the JVM tries to load a class but does not find it in the classpath. Learn the three steps you can take to fix it. ### Anonymous ThredUP (Results) - Published: 2021-10-18 - Modified: 2021-10-18 - URL: https://rollbar.com/?testimonial=anonymous-thredup-results --- ### Anonymous ThredUP (Strategy #2) - Published: 2021-10-18 - Modified: 2021-10-18 - URL: https://rollbar.com/?testimonial=anonymous-thredup-strategy-2 --- ### Anonymous ThredUP (Strategy #1) - Published: 2021-10-18 - Modified: 2021-10-18 - URL: https://rollbar.com/?testimonial=anonymous-thredup-strategy-1 --- ### Plexus (Goal) - Published: 2021-09-17 - Modified: 2021-09-21 - URL: https://rollbar.com/?testimonial=plexus-goal --- - [How to Resolve Java.lang Exceptions](https://rollbar.com/blog/how-to-resolve-java-lang-exceptions/): Understand and resolve common Java.lang exceptions with this comprehensive guide, including NullPointerException, IllegalArgumentException, and more. - [How to Handle java.lang.IndexOutOfBoundsException](https://rollbar.com/blog/how-to-handle-java-lang-index-out-of-bounds-exception/): The IndexOutOfBoundsException is thrown when an index used in arrays, lists, or strings is not valid. Fixing it depends on the situation that led to it. ### Plexus (Strategy) - Published: 2021-09-17 - Modified: 2021-09-21 - URL: https://rollbar.com/?testimonial=plexus-strategy --- ### Docfield's Story with Rollbar > We use Rollbar for all our error reporting. It's used by our engineering team to notify us of issues that arise and to help us debug them. It's really helpful in cutting through the noise and letting us know only the errors that we need to care about. - Published: 2025-04-01 - Modified: 2025-04-01 - URL: https://rollbar.com/blog/docfield-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Docfield creates, signs, and manages digital contracts in a single, collaborative platform.   1. Can you introduce yourself, and tell us about your team or company? Docfield is a LegalTech start-up developing acontract lifecycle managementsolution for customers across several industries. We offer some of the most comprehensive contract creation tools in the market, and as the founder’s associate it is my goal to help as many customers as possible experience the benefits. 2. How are you using Rollbar? As a scale-up company it can be difficult to compete with large incumbents. A key differentiator for us is that we can work very closely with each customer and deliver a tailored customer experience. Leveraging Rollbar in this process is a no-brainer.  Rollbar integrates seamlessly with Rails, so our backend team relies on Rollbar to automatically detect and report issues across all our environments. This eliminates the need for users to submit bug tickets manually. We've integrated Rollbar with Slack for real-time error notifications, GitHub for linking errors to specific commits, and Notion for centralised documentation and tracking. This setup enables our product team to prioritize issues effectively based on the insights provided by Rollbar. 3. What made you choose Rollbar? We evaluated several error monitoring tools, including Sentry, Raygun, and Datadog. Rollbar stood out with head and shoulders above the rest due to its user-friendly interface, advanced diagnostic capabilities, and overall cost-effectiveness.  Unlike some alternatives that bundle additional features at a higher price point, Rollbar focuses on delivering error monitoring without... --- - [Sergey's story with Rollbar](https://rollbar.com/blog/sergeys-story-with-rollbar/): From the very beginning, Rollbar has been integral to our operations, utilized even prior to our official launch. Our commitment to delivering exceptional service to our clients relies on the efficacy of our alerting and monitoring tools, with Rollbar being an important component. - [Using JavaScript source maps to debug errors](https://rollbar.com/blog/using-javascript-source-maps-to-debug-errors/): Some of the most common questions we get here at Rollbar deal with source maps: What are source maps and... ### Plexus (Results) - Published: 2021-09-17 - Modified: 2021-09-21 - URL: https://rollbar.com/?testimonial=plexus-results --- - [How to Fix Unterminated String Literals](https://rollbar.com/blog/how-to-fix-unterminated-string-literals/): In other words, you probably forgot a closing quotation mark somewhere. This causes an error because the compiler doesn't know where your string ends. ### W. Habib - Everplans (light) As an agile - Published: 2021-07-28 - Modified: 2021-07-28 - URL: https://rollbar.com/?testimonial=w-habib-everplans-light-as-an-agile --- - [How GorillaStack used Rollbar to level up logging with the Serverless framework](https://rollbar.com/blog/how-gorillastack-used-rollbar-to-level-up-logging-with-the-serverless-framework/): Our friends at GorillaStack wanted to share how they set up Rollbar with the Serverless framework, and made a handy... - [Robin's story with Rollbar](https://rollbar.com/blog/robins-story-with-rollbar/): From the very beginning, Rollbar has been integral to our operations, utilized even prior to our official launch. Our commitment to delivering exceptional service to our clients relies on the efficacy of our alerting and monitoring tools, with Rollbar being an important component. - [Benoit's story with Rollbar](https://rollbar.com/blog/benoits-story-with-rollbar/): From the very beginning, Rollbar has been integral to our operations, utilized even prior to our official launch. Our commitment to delivering exceptional service to our clients relies on the efficacy of our alerting and monitoring tools, with Rollbar being an important component. - [Connect Rollbar to your source code and issues in GitLab](https://rollbar.com/blog/connect-rollbar-to-your-source-code-and-issues-in-gitlab/): Good news for GitLab users! You can now deep link error stack traces in Rollbar directly to the code in... ### Optimizing Item Search: How Rollbar Engineered Faster, More Capable Search > Searching through error data efficiently is critical for developers using monitoring tools. At Rollbar, we recently completed a significant overhaul of our Item Search backend. The previous system faced performance limitations and constraints on search capabilities. This post details the technical challenges, the architectural changes we implemented, and the resulting performance gains. - Published: 2025-03-31 - Modified: 2025-03-31 - URL: https://rollbar.com/blog/how-rollbar-engineered-faster-search/ - Categories: Engineering, product, topics - Tags: behind-the-scenes, engineering, how to Searching through error data efficiently is critical for developers using monitoring tools. At Rollbar, we recently completed a significant overhaul of our Item Search backend. The previous system faced performance limitations and constraints on search capabilities. This post details the technical challenges, the architectural changes we implemented, and the resulting performance gains. The Starting Point: Limitations of the Existing Architecture Our previous item search relied heavily on our primary MySQL database for most filtering and sorting operations, with Elasticsearch used for fulltext search on item titles. This architecture presented several challenges: Performance Bottlenecks: Complex MySQL queries combining item and occurrence filters often struggled. Occurrence data, being voluminous, is difficult to index effectively in a traditional RDBMS for arbitrary filtering. Many searches, especially those involving occurrence attributes or non-default time ranges, exceeded the 60-second timeout threshold in our database. Impact of Core Features (like Merging): Rollbar allows merging similar items together. Rollbar's merge operation is designed to be O(1), independent of occurrence count. Supporting this fast merge while correctly associating occurrences with their current parent item required complex logic within MySQL, involving self-joins on the item table. This made the queries difficult for MySQL to optimize, especially when combined with other filters. Data Propagation Delays: Changes in item relationships (like merges) were propagated from MySQL to our analytics backend (used for some auxiliary data lookups) via a CDC pipeline (Debezium) feeding a Clickhouse dictionary. This dictionary refreshed on a schedule, about every 20 minutes. This meant merges performed by users wouldn't... --- ### A. Childs - Clubhouse (dark) Rollbar lets us - Published: 2021-07-28 - Modified: 2021-07-28 - URL: https://rollbar.com/?testimonial=a-childs-clubhouse-light-rollbar-lets-us --- - [Pay directly from your bank account](https://rollbar.com/blog/ach-payment-support/): Pay for your Rollbar subscription directly from your bank account, thanks to ACH payments! This is for customers in the United States looking for a simple, more direct way to handle subscription payments. - [How to Fix a Circular Import in Python](https://rollbar.com/blog/how-to-fix-circular-import-in-python/): An ImportError (most likely due to a circular import) happens when two or more modules depend on each other to function, creating a loop in the import statements. - [Rollbar integration for the Ionic framework](https://rollbar.com/blog/rollbar-integration-for-the-ionic-framework/): Our friends at Cuttlesoft wanted to share how they use Rollbar to detect errors in Ionic built applications. Enjoy! At... ### Fintech (dark) The more you - Published: 2021-07-28 - Modified: 2021-07-28 - URL: https://rollbar.com/?testimonial=fintech-dark-the-more-you --- - [Ibrahim's story with Rollbar](https://rollbar.com/blog/ibrahim-story-with-rollbar/): From the very beginning, Rollbar has been integral to our operations, utilized even prior to our official launch. Our commitment to delivering exceptional service to our clients relies on the efficacy of our alerting and monitoring tools, with Rollbar being an important component. - [Better workflows for managing errors](https://rollbar.com/blog/better-workflows-for-managing-errors/): Happy Holidays Rollbar users! We're gifting you a handful of updates to a key feature in Rollbar, the Live Error... ### J. Bazemore - Greenhouse (light) When you move - Published: 2021-07-28 - Modified: 2021-07-28 - URL: https://rollbar.com/?testimonial=j-bazemore --- - [How to Fix java.lang Illegal Argument Exception Unsupported Class File Major Version 61](https://rollbar.com/blog/unsupported-class-file-major-version-61-error-in-java/): The error is Java's way of saying, "I can't run this class because it was built with a version of Java that's newer than me." It's time to upgrade Java. ### How to Fix Python TypeError: 'int' object is not subscriptable > Learn why Python prevents accessing parts of an integer using []. This guide explains the error and shows how to work with subscriptable types correctly. - Published: 2025-03-30 - Modified: 2025-03-30 - URL: https://rollbar.com/blog/how-to-fix-int-object-is-not-subscriptable-python/ - Categories: Code Tutorials, Python - Tags: Python If you're working with Python, you've likely encountered the TypeError: 'int' object is not subscriptable. This is a common error, especially for beginners or when dealing with dynamic data. It fundamentally signals a misunderstanding between what your code expects a variable to be and what it actually is. What Does "'int' object is not subscriptable" Mean? Let's break down the terms: int: This refers to the integer data type in Python, which represents whole numbers (e. g. , 5, -10, 0). Subscriptable: An object is "subscriptable" if you can access its internal items using square brackets . Think of containers or sequences like lists (my_list), tuples (my_tuple), strings (my_string), and dictionaries (my_dict). These objects hold multiple elements or key-value pairs that can be "subscribed" or accessed via an index or key. Not Subscriptable: The error message tells you that integers (int) do not support this access method. Why isn't an integer subscriptable? An integer represents a single, indivisible numerical value. It doesn't contain other items. Trying to access the "first element" of the number 5 (like 5) doesn't make sense conceptually in Python, hence the TypeError. You're treating a single value as if it were a sequence. Common Scenarios Leading to the Error This error typically arises when you attempt indexing or slicing on a variable that you thought was a list, tuple, string, or dictionary, but which actually holds an integer at that moment. Here are a couple of common ways this happens: Accidental Variable Reassignment: You might have... --- - [Ruby Exception Handling - Primer for Dealing with Errors in Ruby](https://rollbar.com/blog/ruby-exception-handling-primer-for-dealing-with-errors-in-ruby/): Ruby is a popular open source programming language that is highly flexible, and used for everything from basic "hello world"... ### R. Zuber - CircleCI (light) If you don't - Published: 2021-07-28 - Modified: 2021-07-28 - URL: https://rollbar.com/?testimonial=r-zuber-circleci-light-if-you-dont --- ### D. Rohov - CVENT (light) Rollbar has been - Published: 2021-07-28 - Modified: 2021-07-28 - URL: https://rollbar.com/?testimonial=d-rohov-cvent-light-rollbar-has-been --- - [Join Rollbar at AWS re:Invent](https://rollbar.com/blog/join-rollbar-at-aws-reinvent/): Join us this year at Amazon Web Services annual conference, re:Invent! Rollbar will be participating along side of Atlassian and... - [Removing Support for TLS 1.0 and 1.1 Protocols](https://rollbar.com/blog/removing-tls-1-0-and-1-1/): Removing Support for TLS 1. 0 and 1. 1 Protocols On March 31, 2024, Rollbar will remove support for TLS... ### D Rohov - CVENT (light) You could have - Published: 2021-07-28 - Modified: 2021-07-28 - URL: https://rollbar.com/?testimonial=d-rohov-cvent-light-you-could-have --- - [Deep link stack traces to Bitbucket and track Pipeline deploys](https://rollbar.com/blog/deep-link-stack-traces-to-bitbucket-and-track-pipeline-deploys/): Good news for Bitbucket users! You can now deep link error stack traces in Rollbar directly to the code in... - [Angular vs. React: Which is Better, and When?](https://rollbar.com/blog/angular-vs-react/): Angular is a full-featured framework, while React is a library focused on UI components with the freedom to choose the rest of your tech stack freely. ### The Art of Throwing Exceptions in C# (or How to Fail Gracefully) > A senior developer's sarcastic guide to C# exceptions. Learn to create meaningful error messages, preserve stack traces, and implement custom exception types. - Published: 2025-03-27 - Modified: 2025-03-27 - URL: https://rollbar.com/blog/throw-exceptions-c-sharp/ - Categories: C#, Code Tutorials - Tags: csharp Exceptions in C# are like fire alarms – they're loud, disruptive, and absolutely essential. And much like fire alarms, most beginners either ignore them or disconnect the batteries. Let me explain what we're dealing with here. In the C# world, exceptions are specialized objects that capture all the details when something goes wrong in your code. They're not just error messages – they're fully-fledged objects that inherit from the System. Exception class. They give you a structured way to identify, communicate, and handle unexpected conditions, allowing your program to either recover gracefully or at least fail with dignity instead of crashing in a blaze of cryptic error messages. Look, I get it. You just want your code to work, and exceptions seem like that annoying colleague who's always pointing out problems in your masterpiece. But trust me on this – learning to properly throw and handle exceptions will make you a better developer, save your future self countless headaches, and maybe even impress that senior engineer who never seems to like anyone's code. In this post, you'll learn the basics of exceptions in C#, how to throw them properly, when to create your own, and the best practices that separate the professionals from the "it works on my machine" crowd. The Basics of Exceptions Let's clear something up right away: exceptions aren't just "errors. " They're sophisticated objects designed to provide detailed information about what went wrong, where it went wrong, and sometimes even why it went wrong (though that... --- ### D. Rohov - CVENT (light) The out of the - Published: 2021-07-28 - Modified: 2021-07-28 - URL: https://rollbar.com/?testimonial=d-rohov-cvent-light-the-out-of-the --- - [Correlate errors to feature rollout tests with Rollbar and Split](https://rollbar.com/blog/correlate-errors-to-feature-rollout-tests-with-rollbar-and-split/): Our friends at Split wanted to let you know that you can now integrate Rollbar with Split. And take control... ### H. Villafuerte – Duolingo – light – I really can't imagine... - Published: 2021-07-28 - Modified: 2021-07-28 - URL: https://rollbar.com/?testimonial=h-villafuerte-duolingo-light-i-really-cant-imagine --- - [New Source Map Error Workflow](https://rollbar.com/blog/new-source-map-error-workflow/): We're excited to unveil the latest enhancements to Rollbar’s Source Map handling. This new feature, directly influenced by user feedback,... ### How to Fix Python’s “List Index Out of Range” Error in For Loops > This error means Python can't find the list position you're asking for. Fix it with enumerate(), proper length checks, or by using -1 to safely get the last item. - Published: 2025-03-25 - Modified: 2025-03-25 - URL: https://rollbar.com/blog/how-to-fix-python-list-index-out-of-range-error-in-for-loops/ - Categories: Code Tutorials, Python - Tags: Python The List Index Out of Range error often occurs when working with lists and for loops. You see, in Python, when you attempt to access an element using an index that lies outside the valid index range of the list, you're essentially telling the program to fetch something that isn't there, resulting in this common error. For example, if you have a list with 3 elements: my_list = The valid indices for this list are 0, 1, and 2 (since Python uses zero-based indexing). If you try to access my_list or any index outside this range, Python will raise this error. It's the interpreter's way of signaling that there's a misalignment in your expectations of the list's size and the actual indices present. Let’s take a closer look at common ways a for loop can cause List Index Out of Range and how to either avoid it completely or gracefully handle this error when it crops up. What causes the “List Index Out of Range” error? As Python uses zero-based indexing, when you try to access an element at an index less than 0 or greater than or equal to the list’s length, Python tells you via this error that the specified index is out of the permissible bounds of the list's length. Here are some common scenarios when this error occurs: Incorrect loop indexing If an index used in a loop across a range of indices is greater than the list's length, the error IndexError: list Index Out of... --- - [A better error monitoring workflow Rollbar + Atlassian](https://rollbar.com/blog/a-better-error-monitoring-workflow-rollbar-atlassian/): Dealing with errors can be time consuming and often an interruption in your everyday development workflow. It's important that we... ### Tyler Wells - Twilio (light) if a tool - Published: 2021-07-28 - Modified: 2021-07-28 - URL: https://rollbar.com/?testimonial=tyler-wells-twilio-light-if-a-tool --- - [Auto-suggest item owner based on Git Blame data](https://rollbar.com/blog/auto-suggest-item-owner-based-on-git-blame-data/): Overview For projects integrated with GitHub, Rollbar now has the ability to show the user identified by Git Blame in... - [Rollbar add-on now available for JIRA](https://rollbar.com/blog/rollbar-add-on-now-available-for-jira/): We’ve recently released a new JIRA Add-On to help extend your application error monitoring workflow. JIRA is one of the... - [How to Fix “Function Object is Not Subscriptable” in Python](https://rollbar.com/blog/how-to-fix-function-object-is-not-subscriptable-python/): Simply put, you're trying to treat a function like it's a list, but you can't do that because they are different things. Try this other way to get what you want. - [How CircleCI uses Rollbar to level up their continuous delivery](https://rollbar.com/blog/how-circleci-uses-rollbar-to-level-up-their-continuous-delivery/): I'm excited to share a fun and insightful interview our friends at The Changelog recently did with Paul Biggar, Founder... - [Making Project, Item and Occurrence IDs accessible within Service Links](https://rollbar.com/blog/making-project-item-and-occurrence-ids-accessible-within-service-links/): Create detailed workflows and integrations with third-party systems using IDs Overview In the latest release of Rollbar, we have updated... ### How to Throw Exceptions in C++ Constructors Correctly > Constructors are weird when it comes to error handling. Why? Because unlike regular functions, they don't have a return value. - Published: 2025-03-17 - Modified: 2025-03-17 - URL: https://rollbar.com/blog/throw-exceptions-in-cpp-constructors/ - Categories: C++, Code Tutorials - Tags: c++ In C++, when you create a new object (like a database connection or a game character), a special function called a constructor runs automatically to set up that object. Think of constructors as the "birth" process for objects—they allocate resources, set initial values, and make sure the object starts life in a valid state. But what happens when something goes wrong during this setup? Maybe a file can't be opened, a network connection fails, or invalid data is provided. Since constructors can't return error codes like regular functions, they need another way to signal problems—this is where exceptions come in. Constructor exceptions are like emergency abort buttons that stop an object from being created when something critical fails. When a constructor throws an exception, it tells the program, "I couldn't properly initialize this object, so don't use it at all. " The partially built object gets automatically destroyed, preventing what we call "zombie objects"—objects that appear normal but are broken inside and can corrupt your program. This guide will show you, step by step, how to use exceptions in constructors effectively. You'll see examples that demonstrate why this technique is so important and by the end, you'll understand how to ensure your objects are either created properly or not created at all—a fundamental skill that elevates your C++ from basic to production-ready. Why Throw Exceptions in Constructors? The Constructor's Dilemma Let's say you're building a DatabaseConnection class. The constructor needs to establish a connection, and a million things could go... --- - [Improved ruby error reporting with our latest gem updates](https://rollbar.com/blog/improved-ruby-error-reporting-with-our-latest-gem-updates/): Recently, we released version 2. 13. 0 of the rollbar-gem. This update is full of new features and some minor... - [Usage Visualizations](https://rollbar.com/blog/usage-visualizations/): We are excited to unveil the latest enhancement to Rollbar's platform - the integration of graphical visualizations in the usage page. Building on our new usage page, this feature brings a dynamic and intuitive way to monitor and manage your occurrences. - [5 ways to reduce noise when logging your JavaScript exceptions](https://rollbar.com/blog/5-ways-to-reduce-noise-when-logging-your-javascript-exceptions/): Developing and maintaining user facing software is a challenge and a very distracting one at that. 🙂 Often times it... - [How to Fix IndexError: List Index Out of Range in Python](https://rollbar.com/blog/python-indexerror/): The IndexError in Python occurs when an item from a list is attempted to be accessed that is outside the index range of the list. ### Efficient Error Triage: Reducing Debugging Time > Efficiently triaging issues can drastically reduce downtime, improve user experience, and keep your development team focused on innovation. Rollbar offers powerful features designed to help teams streamline error triage and resolve issues quickly. Here's how you can master the triage process and leverage Rollbar to reduce time spent debugging. - Published: 2025-03-12 - Modified: 2025-03-12 - URL: https://rollbar.com/blog/error-triage/ - Categories: topics - Tags: debugging, error-handling, exception monitoring, triage When software errors strike, developers must act fast. Efficiently triaging issues can drastically reduce downtime, improve user experience, and keep your development team focused on innovation. Rollbar offers powerful features designed to help teams streamline error triage and resolve issues quickly. Here's how you can master the triage process and leverage Rollbar to reduce time spent debugging. Step 1: Identify and Prioritize Critical Errors Not all errors are equal. To efficiently manage errors, developers need to focus on those with the highest impact first. Rollbar Features for Prioritization: Real-time Alerts: Rollbar sends instant notifications via Slack, Microsoft Teams, PagerDuty, and other tools to ensure critical errors are surfaced immediately. Error Grouping: Rollbar intelligently groups errors based on root causes, reducing noise and helping you identify the most impactful issues first. Advanced Search: Rollbar allows you to search complex payloads across all services and projects. Step 2: Gather Contextual Information Once you've identified a key issue, having the right data to understand its context is crucial for efficient triage. Rollbar Features for Context: Detailed Error Reports: Each error report includes stack traces, request parameters, affected users and deployment details. Telemetry: Rollbar records key browser and app events leading up to an error, offering developers valuable insights into what happened just before failure. Step 3: Assign Ownership and Take Action Ensuring accountability is key to resolving errors efficiently. Assigning ownership reduces confusion and ensures issues are resolved promptly. Rollbar Features for Ownership: Team and User Assignment: Rollbar can assign errors to the... --- - [SAML-based Single Sign-On (SSO) now available](https://rollbar.com/blog/saml-based-single-sign-on-sso-now-available/): If your team uses Google Apps for Work or Okta, you can now access your Rollbar account using SAML-based single... - [JavaScript RangeError: Maximum Call Stack Size Exceeded](https://rollbar.com/blog/javascript-rangeerror-maximum-call-stack-size-exceeded/): JavaScript RangeError: Maximum Call Stack Exceeded is thrown when there are too many function calls, or if a function is missing a base case. ### H. Villafuerte - Duolingo - light - Rollbar helps make... - Published: 2021-07-28 - Modified: 2021-07-28 - URL: https://rollbar.com/?testimonial=h-villafuerte-duolingo-light-rollbar-helps-make --- - [Two-Factor Authentication now available for all users](https://rollbar.com/blog/two-factor-authentication-now-available-for-all-users/): We’re excited to introduce Two-Factor Authentication (2FA) in Rollbar as an optional extra layer of security on every user’s account.... - [Adam's story with Rollbar](https://rollbar.com/blog/adams-story-with-rollbar/): Rollbar has been great at letting our development team quickly identify issues, communicate them, and monitor their resolution. The very readable tracebacks and in-scope variable values across various environments are extremely useful across our team to solve issues quickly and transparently. - [Using Rollbar to unravel existing Laravel applications](https://rollbar.com/blog/using-rollbar-to-unravel-existing-laravel-applications/): {: . highlightbox} Read our new blog Announcing Laravel error monitoring with Rollbar! About 6 months ago I inherited a... - [How to Fix “Client network socket disconnected…” in Node.js](https://rollbar.com/blog/how-to-fix-client-network-socket-disconnected-nodejs/): Learn 6 things you can do to get the connection working. As a last resort, you can also set rejectUnauthorized to false, which ignores SSL validation errors. ### R. Zuber (circle - dark) - Published: 2021-06-02 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=r-zuber-circle-dark --- ### Exciting Security Enhancements: Stronger, Smarter Access Tokens - Published: 2025-03-04 - Modified: 2025-03-04 - URL: https://rollbar.com/blog/smarter-access-tokens/ - Categories: product - Tags: security, tokens Security has been our top priority over the last year, and we’re rolling out major improvements to account and project access tokens to bring Rollbar up to today’s security standards. Newly created tokens will be stored in an encrypted format, inaccessible via the UI or API after being created, and you will be able to manually encrypt your existing tokens. This change to token storage will give you more control over who can submit, access or update data in your system. How are we improving token security? Stronger Protection – Newly created tokens will now be encrypted and will no longer be accessible via the UI or API after creation. When you generate a token, be sure to copy and store it securely - once you close the create token window, the token will be securely encrypted with no way to view it again. Flexible Security Options – Choose between 512-bit tokens for maximum security or 128-bit tokens if you need to maintain compatibility with existing token lengths. Updated Scope Rules – To enhance security, for newly created tokens certain token scopes must now be separate - post_server_item and post_client_item can no longer be combined with other scopes. Your current tokens can remain in their current state, but we recommend that you create new tokens with separate scopes. Encrypt Existing Tokens - You can immediately encrypt your tokens without having to make any changes to the tokens themselves or your code - the tokens will be updated to the new... --- - [Streamline monitoring with Rollbar & Datadog](https://rollbar.com/blog/streamline-monitoring-with-rollbar-datadog/): Good news! We’ve recently released a new integration with Datadog to help extend your error monitoring options. Datadog is a... - [How to Fix "Could not find or load main class" in Java](https://rollbar.com/blog/java-could-not-find-or-load-main-class/): The Java “Could not find or load main class” error is thrown when the JVM fails to find or load the main class while executing a program. ### T. Wells (circle - dark) - Published: 2021-06-02 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=t-wells-circle-dark --- - [Saiqul's story with Rollbar](https://rollbar.com/blog/saiquls-story-with-rollbar/): Since the early days of Hungry Hub, when we had just dozens of active monthly users, Rollbar has been a crucial tool in our development arsenal. As our user base expanded to over a million, Rollbar's real-time error tracking and comprehensive insights have been instrumental in ensuring the stability and reliability of our applications. - [6 ways to improve error grouping in Rollbar](https://rollbar.com/blog/6-ways-to-improve-error-grouping-in-rollbar/): You're two weeks into using Rollbar. You've watched in amazement as issue after issue comes in without a single customer... ### S. Hacker (circle - dark) - Published: 2021-06-02 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=s-hacker-circle --- - [Kalle's story with Rollbar](https://rollbar.com/blog/kalles-story-with-rollbar/): My loyalty to Rollbar is rooted in its exceptional capabilities in real-time error monitoring and debugging, which are vital for our operations at Oneflow. Its ability to provide instant notifications, detailed error reports, and track bugs across our various projects is crucial for maintaining our high service quality. Rollbar fits perfectly with our aim to offer reliable and efficient service. Its user-friendly interface and comprehensive tracking capabilities make it an indispensable tool in our development arsenal. - [Query Rollbar data directly from our API](https://rollbar.com/blog/query-rollbar-data-directly-from-our-api/): Good news for RQL users. Until recently RQL usage was limited to the Rollbar interface. That's no longer a problem.... ### Throwing Exceptions in C++ > Exceptions provide a formal and well-defined way for detecting errors and to pass the information up the call stack. - Published: 2025-02-28 - Modified: 2025-03-01 - URL: https://rollbar.com/blog/error-exceptions-in-c/ - Categories: C++, Code Tutorials - Tags: c++ Imagine spending months developing a C++ application, only to have users report that it crashes whenever they enter unexpected input or when network connections fail. This common scenario happens when programs lack proper error handling. The good news is that C++ provides a built-in mechanism called exceptions that helps your code anticipate and respond to problems rather than simply crashing. In this comprehensive guide, you'll learn how to use exceptions to create resilient applications that can detect errors, communicate what went wrong, and recover gracefully - skills that separate amateur code from professional-grade applications. Why Use Exceptions in C++? Exceptions provide a way to react to exceptional circumstances in programs by transferring control to special functions called handlers. Throwing exceptions are preferred in modern C++ over traditional error handling for the following reasons: Automatic resource cleanup — C++ destroys all objects in scope after an exception occurs, preventing resource leaks Separation of concerns — Exceptions separate error-handling logic from the main algorithm, improving code readability Flexible error handling — Errors can be handled at the appropriate level of abstraction, not necessarily where they occur Type-based categorization — C++ error types can be organized in hierarchies, making it easier to handle related errors consistently Cleaner code — They eliminate the need to check return values after every function call These advantages make exceptions particularly valuable in large-scale projects where code clarity and maintainability are essential. C++ try catch and throw Exception handling in C++ is done using three keywords: try, catch... --- ### Duolingo - Hacker (light) - Published: 2021-05-26 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=duolingo-hacker-light --- - [Rollbar Alternatives: Compare Before You Commit](https://rollbar.com/blog/rollbar-alternatives/): Thinking of rolling past Rollbar? Dive into our comparison of 6 error monitoring tools and see why so many developers choose Rollbar. - [Rollbar add-on now available for Bitbucket](https://rollbar.com/blog/rollbar-add-on-now-available-for-bitbucket/): On the heels of Atlassian's announcement of Atlassian Connect for Bitbucket yesterday, we're excited to introduce our very own Rollbar... - [Team Assignment](https://rollbar.com/blog/team-assignment/): We’re excited to announce a new feature for Advanced and Enterprise customers - the ability to set a team as the owner of an item. ### D. Rohov - CVENT (dark) - Published: 2021-05-26 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=d-rohov-cvent-dark --- - [Easier way to get your team on Rollbar](https://rollbar.com/blog/easier-way-to-get-your-team-on-rollbar/): Joining and getting your team on Rollbar is now easier. Rollbar is better together and our latest account setting makes... - [Marc's story with Rollbar](https://rollbar.com/blog/marcs-story-with-rollbar/): What has kept us with Rollbar is that it’s always there when we really need it, and stays out of the way quietly ticking along when we don’t. It’s not needy, or trying to increase ‘engagement’ in any way, we can just jump in, do what we need to do as quickly as we can, and then we’re out and get back to business as usual. ### Java Exceptions Hierarchy Explained > The tree diagram below shows the standard exception and error classes defined in Java, organized in the Java exceptions hierarchy. - Published: 2025-02-28 - Modified: 2025-03-01 - URL: https://rollbar.com/blog/java-exceptions-hierarchy-explained/ - Categories: topics - Tags: java In Java “an event that occurs during the execution of a program that disrupts the normal flow of instructions” is called an exception. This is generally an unexpected or unwanted event which can occur either at compile-time or run-time in application code. Java exceptions can be of several types and all exception types are organized in a fundamental hierarchy. Understanding this hierarchy is crucial for implementing robust error handling strategies in production. Java Exceptions Hierarchy The class at the top of the exception class hierarchy is the Throwable class, which is a direct subclass of the Object class. Throwable has two direct subclasses - Exception and Error. The diagram below shows the standard exception and error classes defined in Java, organized in the Java exceptions hierarchy: Figure 1: Exceptions hierarchy in Java The Exception class is used for exception conditions that the application may need to handle. Examples of exceptions include IllegalArgumentException, ClassNotFoundException and NullPointerException. The Error class is used to indicate a more serious problem in the architecture and should not be handled in the application code. Examples of errors include InternalError, OutOfMemoryError and AssertionError. Exceptions are further subdivided into checked (compile-time) and unchecked (run-time) exceptions. All subclasses of RuntimeException are unchecked exceptions, whereas all subclasses of Exception besides RuntimeException are checked exceptions. Java Errors vs Exceptions According to the official documentation, an error “indicates serious problems that a reasonable application should not try to catch. ” This refers to problems that the application can not recover from -... --- - [Edit and rename error item titles](https://rollbar.com/blog/edit-and-rename-error-item-titles/): You can now rename/edit your error titles. Fix ugly long titles. Hover over, click, edit, and save. Enjoy! ### R. Zuber - CircleCI (dark) - Published: 2021-05-26 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=r-zuber-circleci-dark --- ### Sunset of Bitbucket Web Frame > Sunset of BitBucket Web Frame - Published: 2025-02-25 - Modified: 2025-02-25 - URL: https://rollbar.com/blog/sunset-bitbucket-web-frame/ - Categories: product, topics - Tags: atlassian, bitbucket Sunset of BitBucket Web Frame We wanted to let you know that we’ll be retiring the Atlassian Rollbar Bitbucket Web Frame application on March 15, 2025. After that date, the app will be archived, and it will no longer be available for download from the Atlassian Marketplace. We want to reassure you that this will not impact our internal code-context integration with Bitbucket. The sunset only applies to the web frame application in the Atlassian marketplace. The Rollbar integration with Bitbucket for code context, code versions, and issues remains unaffected, and you can continue to rely on it for seamless error tracking and debugging. If you have any questions or concerns, feel free to contact our support team. We’re here to help, and we appreciate your continued support. Thank you for being part of the Rollbar community Error Monitoring at Scale Managing errors and exceptions in your code is challenging. It can make deploying production code an unnerving experience. Being able to track, analyze, and manage errors in real-time can help you to proceed with more confidence. Rollbar automates error monitoring and triaging, making fixing errors easier than ever. Sign Up Today! --- - [New Integration: Bird Eats Bug](https://rollbar.com/blog/bird-eats-bug-integration/): We are introducing a new Snooze option for items. When Snoozing an item, the user will define how long an item will stop sending notifications for - once that time period expires then the item will return to normal and begin sending notifications again. - [Connect Rollbar to Bitbucket Issue Tracker](https://rollbar.com/blog/connect-rollbar-to-bitbucket-issue-tracker/): New integration now available - Bitbucket Issue Tracker Supercharge your issue and error tracking workflow when you connect your Rollbar... - [Next.js or Vite.js: Which Framework is Better, and When?](https://rollbar.com/blog/nextjs-vs-vitejs/): Next.js excels in server-side rendering for SEO and fast load times, while Vite.js offers rapid development and reduced server load. ### T. Wells - Twilio (dark) - Published: 2021-05-26 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=t-wells-twilio-dark --- - [Daily, Hourly, New Errors and Trend graphs are now clickable](https://rollbar.com/blog/daily-hourly-new-errors-and-trend-graphs-are-now-clickable/): Yes, that's correct. Daily, Hourly, New Errors, and Trend graphs are now clickable. You can find and fix errors even... - [What are Sealed Classes in Java?](https://rollbar.com/blog/what-are-sealed-classes-in-java/): A sealed class is a class that explicitly specifies which other classes are allowed to extend it. Learn more about them here. ### M. Blaze - Duolingo (dark) - Published: 2021-05-26 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=m-blaze-duolingo-dark --- - [Inga's story with Rollbar](https://rollbar.com/blog/ingas-story-with-rollbar/): Rollbar is extremely easy to integrate, but the real power is in the extended functionality. Rollbar telemetry can be a real time-saver, giving the context to user actions that preceded the actual issue. And for the actual deep-dive in errors, RQL (the query language) is invaluable. I'm also a big fan of the Slack notifications and the flexibility they offer. - [Using Logstash and Rollbar Together](https://rollbar.com/blog/using-logstash-and-rollbar-together/): The infrastructure behind most modern web applications includes an assortment of tools for collecting server and application metrics, logging events,... ### How to Fix the "Unexpected End of zlib Input Stream" Error > Improve your decompression process. Learn how to handle truncated data, corrupted streams, and flawed logic with actionable code examples. - Published: 2025-02-24 - Modified: 2025-02-24 - URL: https://rollbar.com/blog/unexpected-end-of-zlib-input-stream/ - Categories: Code Tutorials, Python - Tags: Python The error message "unexpected end of zlib input stream" means that the zlib library, while trying to decompress data, reached the end of the input stream sooner than expected. Basically, zlib anticipated more data (or proper termination) to decompress the stream, but it didn't find it. This could be due to a few reasons, such as the data being incomplete, corrupted, or even because of mistakes in how the data stream was handled in the code. I’ll break down these three most common causes and provide a code example for each one to illustrate both the problem and the remedy. 1. Truncated or Incomplete Data The Cause A truncated or incomplete data stream is the most common culprit. It might occur during file transfers, network transmission, or due to a file getting corrupted during saving. Solution Ensure that the complete compressed data is available before attempting decompression. Adding validation steps (like checking the file size or using checksums) can help detect incomplete data early. Also, implementing proper error handling around your decompression code can prevent unexpected crashes and allow you to gracefully notify the user or retry the operation. Example Problem import zlib # Compress original data original_data = b'This is some data that will be compressed. ' compressed_data = zlib. compress(original_data) # Simulate a truncated stream by only taking part of the compressed data truncated_data = compressed_data try: # Attempt to decompress truncated data decompressed_data = zlib. decompress(truncated_data) except zlib. error as e: print("Error during decompression (likely truncated data):",... --- - [Mobile iOS Error Simulator](https://rollbar.com/blog/mobile-error-simulator/): Ready to explore Rollbar without the coding hassle? The Rollbar Error Simulator iOS app is the ultimate solution for carefree error testing, designed for users without coding experience. ### C. Amadieh - Cvent (dark) - Published: 2021-05-26 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=c-amadieh-cvent-dark --- - [How to Fix text.ParseException in Java](https://rollbar.com/blog/how-to-fix-java-text-parseexception/): The ParseException is a checked exception in Java that signals an unexpected error while parsing an input. Learn how to fix it. - [Increasing max-open files for beanstalkd](https://rollbar.com/blog/increasing-max-open-files-for-beanstalkd/): Quick tip: If you are running out of file descriptors in your Beanstalkd process, use /etc/default/beanstalkd to set the ulimit... ### M. Blaze - Duolingo (light) - Published: 2021-05-13 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=m-blaze-duolingo --- - [Assign errors to your team](https://rollbar.com/blog/assign-errors-to-your-team/): Ever wanted to assign error items to other team members in Rollbar? Of course you have. Now you can. It... - [Query Smarter, Not Harder](https://rollbar.com/blog/query-smarter-not-harder/): Meet Rollbar’s New AI Assistant for RQL We're excited to share an update to our Analyze package—introducing the RQL AI... ### Expanded Search: Nearly All Standard Fields Are Now Searchable > We’re excited to share some great news about our Related Tab feature! We’ve listened to your feedback and made big improvements to help you manage and investigate your items more easily. The Related Tab is a helpful tool that shows you other items related to the one you’re looking at. This makes it easier to see if the same issue is happening in different parts of your code base or if there are similar items that might be connected. Knowing this can help you understand if a problem is widespread or if there are other occurrences that could help you debug it quicker. - Published: 2025-02-04 - Modified: 2025-02-06 - URL: https://rollbar.com/blog/expanded-search/ - Categories: product - Tags: Usage Notifications Following our recent updates on faster item search and searching within custom data fields, we’re excited to announce another major improvement: nearly all standard data fields within Rollbar are now indexed and searchable! What's new? 50+ additional fields are now available for search, expanding the ways you can filter and analyze your data. Previously unsearchable fields, like host, are now fully indexed, resolving past limitations. Faster and more accurate search performance, building on our recent enhancements. Custom fields remain fully searchable, allowing for even greater flexibility. With these updates, you can search using a wider range of fields, get more precise results, and experience faster response times. Newly Searchable Fields & Key Highlights The full list of available search fields can be found in our Searchable Fields Documentation — newly indexed fields are marked there with an asterisk (*). A few key additions include: UUID – Search for a specific item by its unique identifier. message_body & request_body – Find errors based on detailed message content. Additionally, when you apply a search, the statistics on the Item List page (such as count, unique IPs, and trends over time) now reflect only the occurrences that match your search criteria. Previously, these statistics counted all occurrences within matching items, making results less precise. Unlocking New Use Cases With expanded search capabilities, improved speed, and enhanced accuracy, several highly requested use cases are now easier to achieve: Find the top errors affecting a specific URL or route name Filter errors based on custom... --- ### C. Amadieh - Cvent (Light) Anytime you fix - Published: 2021-05-13 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=c-amadieh --- - [Get notifications every time an error occurs](https://rollbar.com/blog/get-notifications-every-time-an-error-occurs/): You can now setup notifications every time an error occurs. Previously specific error Notifications were only available for New Items... - [How to Fix java.io.IOException](https://rollbar.com/blog/how-to-fix-java-ioexception/): The IOException happens while performing read, write or search operations in files or directories. Handle it using try-catch or by using the throws clause. ### T. Wells - Twilio (light) - Published: 2021-05-13 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=t-wells-twilio --- - [Debugging Node.js Apps in Production with PyCharm](https://rollbar.com/blog/debugging-node-js-apps-in-production-with-pycharm/): Node. js has a built-in debugger that you can start in running processes. To do this, send a SIGUSR1 signal... - [Introducing Item Snooze](https://rollbar.com/blog/item-snooze/): We are introducing a new Snooze option for items. When Snoozing an item, the user will define how long an item will stop sending notifications for - once that time period expires then the item will return to normal and begin sending notifications again. ### R. Zuber - CircleCI (light) - Published: 2021-05-13 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=r-zuber-circleci --- ### Enhanced Search: Key/Value Searching Now Available for Custom Fields > We’re excited to share some great news about our Related Tab feature! We’ve listened to your feedback and made big improvements to help you manage and investigate your items more easily. The Related Tab is a helpful tool that shows you other items related to the one you’re looking at. This makes it easier to see if the same issue is happening in different parts of your code base or if there are similar items that might be connected. Knowing this can help you understand if a problem is widespread or if there are other occurrences that could help you debug it quicker. - Published: 2025-02-04 - Modified: 2025-02-06 - URL: https://rollbar.com/blog/custom-field-search/ - Categories: product - Tags: Usage Notifications Following our recent update on faster item search, we’re excited to introduce another powerful improvement to our search functionality: key/value searches for specific fields! What's new? You can now perform key/value searches in the format: field:value This enhancement is available for the following fields: custom (custom data fields added to occurrences) request_get, request_header, request_param, request_post (request-related fields) traceframe_local (trace frame local variables) Why This Matters A major benefit of this update is the ability to search within personalized custom data fields—something that was not previously possible within search. For example, if you have a custom field custom. response containing the string "Permission denied", you can now search for it using: custom:%Permission_denied% Key/Value Search Tips & Examples Case-Insensitive Prefix Search: By default, searches are case-insensitive. Use exact match by placing the value in quotes: custom:"value" Wildcard Support: Use % to match any number of characters, use _ to match a single character: custom:%value% Escaping Wildcard Characters: To search for an actual % character, escape it with \: custom:%\%% Searching Within Nested Fields: If custom data contains subfields, only include the top-level field. For example: to search within a field custom. rollbar-log. server, use: custom:%search_term% More Powerful & Granular Searches With these updates, you can narrow down your item list more precisely than ever, including searches within custom data fields that extend your occurrence data. What’s Next? In our next blog post, we’ll be sharing exciting news about additional standard Rollbar fields that are now supported in search. Stay tuned! Learn more... --- - [RQL String Functions](https://rollbar.com/blog/rql-string-functions/): RQL now includes a basic library of string functions. You can use these to slice and group your data in... - [October Release Roundup](https://rollbar.com/blog/october-release-roundup/): Happy Halloween, everyone! Here's a roundup of what's new in Rollbar this month. - [New "Reports" API calls](https://rollbar.com/blog/new-reports-api-calls/): We've released two new API calls, exposing some of the data on the Dashboard via our JSON API. Use the... ### D. Rohov - CVENT (light) - Published: 2021-05-12 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=d-rohov-cvent --- ### Fast, Accurate and Powerful Item Search > We’re excited to share some great news about our Related Tab feature! We’ve listened to your feedback and made big improvements to help you manage and investigate your items more easily. The Related Tab is a helpful tool that shows you other items related to the one you’re looking at. This makes it easier to see if the same issue is happening in different parts of your code base or if there are similar items that might be connected. Knowing this can help you understand if a problem is widespread or if there are other occurrences that could help you debug it quicker. - Published: 2025-02-03 - Modified: 2025-02-06 - URL: https://rollbar.com/blog/upgraded-search/ - Categories: product - Tags: Usage Notifications We’ve overhauled the search backend that powers the Item List UI and Item Search API. Item Search is now far more powerful, working with custom fields and nearly all the data you send Rollbar. Searches return quickly and return the results you'd expect. What's new? With the new backend, Item Search has: Better Performance Faster performance on most searches, especially when a date range is selected. Better Accuracy Item statistics (e. g. count, unique IPs, chart over time) in search results reflect occurrence-level filters. (Previously, occurrence-level filters like context, person or host would filter items but not affect statistics; now, it works as expected. ) Many bugs solved, including host search not working and unexpected behavior on context search. More Search Features Nearly all fields are now indexed and searchable, including key-value pairs within custom data, request params, and trace locals. Total result count is now available for large projects, for all searches covering --- - [Occurrence counts by minute](https://rollbar.com/blog/occurrence-counts-by-minute/): We've released an improvement to our Item Detail pages, adding a graph showing the aggregate occurrence counts per minute. It's... ### Duolingo - Hacker (dark) - Published: 2021-04-05 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=duolingo-hacker --- ## Employees - [node_rollbar 0.3.11](https://rollbar.com/blog/node_rollbar-0-3-11/): We've released a new version of our Node. js library, version 0. 3. 11. It's available on npm and GitHub.... - [More stack trace filename search filters](https://rollbar.com/blog/more-stack-trace-filename-search-filters/): We've released several new search filters to make it easier to find errors by the filenames in their stack trace.... ### How to Resolve an object reference is required for the non-static field > This error occurs when a static method tries to use a non-static member without having an instance to work with. I'll show you three simple fixes. - Published: 2025-01-26 - Modified: 2025-01-27 - URL: https://rollbar.com/blog/how-to-resolve-an-object-reference-is-required-for-the-non-static-field/ - Categories: .NET, C#, Code Tutorials - Tags: .NET, c++, error-handling, error-monitoring The "Object reference is required for the non-static field" error happens in C# when you try to access a non-static member from a static method. Every class in C# can have two types of members: static and non-static. Static members are shared by the whole class, like a public bulletin board anyone can read. Non-static members are different - they belong to specific instances of the class, like personal notes that only exist in your copy of a notebook. This error occurs when a static method tries to use a non-static member without having an instance to work with. Let's look at some code where this happens - we'll see how trying to update a form label from a static method causes this error, and show you three simple fixes. Consider the following C# example namespace WindowsApplication1 { public partial class Form1 : Form { public Form1 { InitializeComponent; } private void button1_Click(object sender, EventArgs e) { //int val = { 0, 0}; int val; if (textBox1. Text == "") { MessageBox. Show("Input any no"); } else { val = Convert. ToInt32(textBox1. Text); Thread ot1 = new Thread(new ParameterizedThreadStart(SumData)); ot1. Start(val); } } private static void ReadData(object state) { System. Windows. Forms. Application. Run; } void setTextboxText(int result) { if (this. InvokeRequired) { this. Invoke(new IntDelegate(SetTextboxTextSafe), new object { result }); } else { SetTextboxTextSafe(result); } } void SetTextboxTextSafe(int result) { label1. Text = result. ToString; } private static void SumData(object state) { int result; //int icount = (int)state; int... --- - [Missing daily summary emails](https://rollbar.com/blog/missing-daily-summary-emails/): We just rolled out a fix for missing daily summary emails. The bug was introduced last week when we refactored... - [rollbar-gem v0.13.2](https://rollbar.com/blog/rollbar-gem-v0-13-2/): We've released a patch version (0. 13. 2) of our Ruby gem, fixing two issues. The use_sucker_punch config option could... - [Prettier Node.js stack traces](https://rollbar.com/blog/prettier-node-js-stack-traces/): Small tweak of the day: we now render Node. js stack traces to look more like they do via console.... - [Debugging by IP Address](https://rollbar.com/blog/debugging-by-ip-address/): We've released a first round of features around IP Addresses. Similar to how you can see the history by Person,... - [Better support for Browserify and Webpack](https://rollbar.com/blog/better-support-for-browserify-and-webpack/): Recently (actually last week), we released a new version of rollbar. js that has a few fixes to play nicely... ### 5 Best Error Monitoring Tools to Use in 2025 > Rollbar leads with full-stack support, followed by Sentry, Datadog, Bugsnag, and LogRocket. Includes pricing, pros/cons, and essential features. - Published: 2025-01-26 - Modified: 2025-01-27 - URL: https://rollbar.com/blog/best-error-monitoring-tools/ - Categories: topics - Tags: error-monitoring The best tool to track, analyze, and manage errors at scale? Rollbar tops our list. What every developer should know about error monitoring Ever had your app crash and struggle to figure out why? That's where error monitoring comes in. When something breaks, these tools give you the full picture - exact state of the app, complete stack trace, and even the code change (git commit) that caused the issue. Think of it as your production environment's black box recorder. The best engineering teams in the world utilize these tools to stay ahead of issues before their customers ever report them. You'd be hard pressed to find a leading startup or member of the Fortune 500 that isn't using error monitoring. Critical features to look for When evaluating error monitoring solutions, certain capabilities are essential - they're the features you simply can't compromise on. Here's what to look for: Smart alerts that cut through noise and highlight critical issues, showing exact impact and severity. No more guessing which errors matter most. Release health tracking that instantly reveals if a new deployment spiked error rates or revived old bugs. Deploy with confidence, knowing you'll catch regressions fast. Quick recovery tools including one-click rollbacks and feature flag controls. Spot a problem? Roll back the code or disable specific features in seconds. Root cause analysis that connects errors to specific code changes, making debugging feel like time travel instead of guesswork. User impact tracking that shows you whose experience is affected, helping prioritize... --- - [Codeship + Rollbar](https://rollbar.com/blog/codeship-rollbar/): Our friends over at Codeship wrote a piece about how they use Rollbar to track deployments and fix exceptions. More... - [rollbar.js snippet update](https://rollbar.com/blog/rollbar-js-snippet-update/): We've released a new version of rollbar. js (1. 0. 0-rc9), which fixes a bug in some environments. If you've... - [More Powerful Custom Grouping](https://rollbar.com/blog/more-powerful-custom-grouping/): Our Custom Grouping feature just got a lot more powerful. It's now possible to: group TimeoutErrors by the controller+action it... ### 5 Best Session Replay Tools in 2025 > Users lie, logs lie, everything lies. But session replay tools show you exactly what happened. The newest tools use AI to keep watch so you don't have to. - Published: 2025-01-21 - Modified: 2025-02-21 - URL: https://rollbar.com/blog/session-replay-tools/ - Categories: topics - Tags: topics Remember when debugging user issues meant asking them "can you tell me exactly what you were doing? " and getting responses like "I clicked the thing and it went whoosh"? Those dark days are behind us thanks to session replay tools, which are like having a super-powered security camera for your app - minus the grainy footage and that one guard who's always falling asleep. Let's look at some of the top players in this space and see how they're helping developers turn "works on my machine" into "works on every machine. " Fullstory Source: Fullstory FullStory's session replay tool does more than just play back user sessions - it uses AI to generate quick summaries of what happened, which is super handy when you're trying to debug issues without watching hours of footage. What really caught my eye though is their privacy approach - you can customize exactly what gets recorded and what gets masked out, which is crucial if you're dealing with sensitive data. The tool automatically captures everything without requiring you to add special tags to your code (they call it "tagless autocapture"), and you can see all sorts of user behavior, even when people are jumping between multiple tabs. FullStory also built in some neat features for tracking conversion funnels and generating heatmaps, so you can spot where users are getting stuck or dropping off. Basically, it's trying to be your all-in-one tool for understanding what's actually happening when users interact with your site or app.... --- - [Local variable values in stack traces](https://rollbar.com/blog/local-variable-values-in-stack-traces/): "This stack trace would be so much easier to debug if I knew what the value of that variable was"... - [Security patch for the recent CCS Injection Vulnerability](https://rollbar.com/blog/security-patch-for-the-recent-ccs-injection-vulnerability/): For the security conscious folks out there - We just finished patching our load balancers with the latest security updates.... ### Unlock Enhanced Item Management with Our Revamped Related Tab > We’re excited to share some great news about our Related Tab feature! We’ve listened to your feedback and made big improvements to help you manage and investigate your items more easily. The Related Tab is a helpful tool that shows you other items related to the one you’re looking at. This makes it easier to see if the same issue is happening in different parts of your code base or if there are similar items that might be connected. Knowing this can help you understand if a problem is widespread or if there are other occurrences that could help you debug it quicker. - Published: 2025-01-07 - Modified: 2025-01-07 - URL: https://rollbar.com/blog/enhanced-related-items/ - Categories: product - Tags: Usage Notifications We’re excited to share some great news about our Related Tab feature! We’ve listened to your feedback and made big improvements to help you manage and investigate your items more easily. The Related Tab is a helpful tool that shows you other items related to the one you’re looking at. This makes it easier to see if the same issue is happening in different parts of your code base or if there are similar items that might be connected. Knowing this can help you understand if a problem is widespread or if there are other occurrences that could help you debug it quicker. With our latest update, merging items is now simpler than ever. You can combine related items right from the Similar Items table. This means you don’t have to go through the hassle of searching for and merging items on a separate page. By grouping similar items together, your list stays organized and clear, making it easier to spot real issues in your system. We’ve also added new tables that show items introduced or reactivated in the same code versions as your current item. This helps you find other items that might have the same root cause because they appeared with related code updates. These new tables make it easier to see patterns and fix problems more effectively. But that’s not all! When you upgrade to our Essentials plan you get access to the improved Related Tab and additional tools like Summarization and Item Snooze. This means you... --- - [Deploy emails show which commits were deployed](https://rollbar.com/blog/deploy-emails-show-which-commits-were-deployed/): We recently added a feature I've wanted for a long time: our Deploy email notifications now show which commits were... ### What is OpenTelemetry > An Observability framework and toolkit designed to create and manage telemetry data such as traces, metrics, and logs. - Published: 2024-12-17 - Modified: 2024-12-19 - URL: https://rollbar.com/blog/what-is-opentelemetry/ - Categories: topics What is OpenTelemetry? Let’s explore what OpenTelemetry is and isn’t. Here is what OpenTelemetry says about the project... OpenTelemetry is: An Observability framework and toolkit designed to create and manage telemetry data such as traces, metrics, and logs. Vendor- and tool-agnostic, meaning that it can be used with a broad variety of Observability backends, including open source tools like Jaeger and Prometheus, as well as commercial offerings. Not an observability backend like Jaeger, Prometheus, or other commercial vendors. Focused on the generation, collection, management, and export of telemetry. A major goal of OpenTelemetry is that you can easily instrument your applications or systems, no matter their language, infrastructure, or runtime environment. The storage and visualization of telemetry is intentionally left to other tools. OpenTelemetry has a very broad focus that includes traces, metrics and logs which is a double edge sword for many developers. To understand why OpenTelemetry collects the amount of data it does, it’s worth understanding what Observability is as seen by OpenTelemetry. What is observability? Observability is the ability to understand the internal state of a system by examining its outputs. In the context of software, this means being able to understand the internal state of a system by examining its telemetry data, which includes traces, metrics, and logs. To make a system observable, it must be instrumented. That is, the code must emit traces, metrics, or logs. The instrumented data must then be sent to an observability backend. Why OpenTelemetry? OpenTelemetry satisfies the need for observability... --- - [Daily summary email bugfix](https://rollbar.com/blog/daily-summary-email-bugfix/): Last week we fixed a bug in our daily summary emails that a customer reported on May 1st. The bug... ### Most Popular Java Web Frameworks in 2025 - Published: 2024-12-16 - Modified: 2024-12-19 - URL: https://rollbar.com/blog/most-popular-java-web-frameworks/ - Categories: topics - Tags: frameworks Look, if you're starting a new Java web project in 2025, you should probably just use Spring Boot. With the highest adoption rate in the Stack Overflow Developer Survey of any Java web framework and overwhelming enterprise usage, it's the default choice for modern Java web development. It has the largest ecosystem, best documentation, most active community, and strongest cloud-native support. That said, there are specific scenarios where you might consider other Java frameworks. JSF still makes sense if you're deeply invested in the Jakarta EE ecosystem. GWT can be valuable if your team wants to write frontend code in Java instead of JavaScript. Vaadin shines for internal business applications where rapid UI development trumps customization. Play Framework deserves serious consideration if you're building reactive systems, as its architecture is specifically designed for high-concurrency and real-time applications. While these frameworks may have smaller communities than Spring Boot, they excel in their specific use cases. Below, we'll examine what makes each of these frameworks uniquely valuable, starting with the dominant Spring ecosystem. Spring Project Site: https://spring. io/ Primary Sponsor: Pivotal Software Spring is more than just a web framework. It is a complete programming model that is built on and with Java, starting with Spring Boot, which is a way to get a spring application up and running with minimal configuration and no application server required. At the other end of the spectrum is Spring Cloud, which is a combination of components that allows developers to build resilient and reliable cloud-native... --- - [rollbar-php v0.9.2 released](https://rollbar.com/blog/rollbar-php-v0-9-2-released/): We've released another small update to rollbar-php, version 0. 9. 2. Get it on Packagist or GitHub. This release contains... - [rollbar-php v0.9.1 released](https://rollbar.com/blog/rollbar-php-v0-9-1-released/): We've released another small update to rollbar-php, version 0. 9. 1. Get it on Packagist or GitHub. This release contains... ### How to Fix Android's Resources.NotFoundException > This error is like trying to order your favorite dish at a restaurant, only to have the waiter tell you it's not on the menu anymore. - Published: 2024-12-10 - Modified: 2025-02-19 - URL: https://rollbar.com/blog/android-content-res-resources-notfoundexception/ - Categories: Android, Code Tutorials - Tags: Android The Resources. NotFoundException is Android's way of saying "Hey, you told me to grab something, but it's not where you said it would be! " This error typically shows up when you're trying to access strings, layouts, drawables, or other resources that Android can't locate in your app's resource files. Maybe they were renamed, deleted, or never existed in the first place. Or perhaps they're hiding in the wrong folder. But before you start questioning your career choices or contemplating a switch to iOS development (let's not get crazy here), let's break down what's actually causing this error and how to fix it. Trust me, it's simpler than you might think. Common Causes and Solutions Let's cut to the chase and look at the four most common reasons you're seeing this error, along with how to fix each one. No fluff, just solutions. 1. The Case of the Missing String You're trying to use getString(R. string. welcome_message), but welcome_message is nowhere to be found in your strings. xml. Welcome! // Typo in name Welcome! // Correct name Solution: Double-check your strings. xml. Look for typos and make sure you actually defined the string you're trying to use. 2. findViewById Gone Wrong This classic mistake happens when you try to find a view that doesn't exist in your layout. It's usually caused by a mismatch between your layout XML and your Java/Kotlin code. // The problematic code val textView = findViewById(R. id. text_view_missing) // Oops! // The fix: Make sure the... --- ### Anler Hernandez Peral - Published: 2023-02-16 - Modified: 2023-02-16 - URL: https://rollbar.com/?employee=anler-hernandez-peral --- ### Cyrus Radfar - Published: 2022-06-30 - Modified: 2022-06-30 - URL: https://rollbar.com/?employee=cyrus-radfar --- - [rollbar-gem v0.12.20 released](https://rollbar.com/blog/rollbar-gem-v0-12-20-released/): We've released a new patch version of rollbar-gem, version 0. 12. 20. Get it on Rubygems or GitHub. This release... ### Next.js or Remix: Which Framework is Better, and When? > Both frameworks cater to modern web development needs, but they differ in their approach to routing, data fetching, and performance optimization. - Published: 2024-12-07 - Modified: 2025-01-09 - URL: https://rollbar.com/blog/nextjs-vs-remix/ - Categories: topics - Tags: JavaScript, next The choice between Next. js and Remix is not just about picking a framework; it's about embracing a way of thinking that will define the trajectory of your application and your growth as a developer. Both frameworks cater to modern web development needs, but they differ in their approach to routing, data fetching, and performance optimization. By understanding the philosophical underpinnings and practical implications of each framework, you can make an informed decision about which path aligns best with our project's goals and your own development philosophy. 1. Routing and Navigation Next. js uses a file-based routing system where each file in the “pages” directory becomes a route. For example, if you have a file called index. js in the pages directory, it will be mapped to the / route. So to create a new route in Next. js, simply create a new file in the pages directory. For example, if you want to create a new route called /about, you simply create a new file called about. js in the pages directory: import React from 'react'; function AboutPage { returnAbout Us; } export default AboutPage; Remix, on the other hand, uses a route-centric approach, meaning routes are explicitly mentioned in the configuration file, generally remix. config. js. This configuration file maps the URLs to route modules. Let’s say you have a Remix project with the following route modules: src/ ├── routes/ │ ├── index. tsx // Represents the root route ("/") │ ├── about. tsx // Represents the "/about"... --- - [rollbar-php v0.9.0 released](https://rollbar.com/blog/rollbar-php-v0-9-0-released/): We've released a new version of rollbar-php, version 0. 9. 0. It's available now on Packagist, or find the source... ### Nick Hodges - Published: 2022-03-10 - Modified: 2022-06-30 - URL: https://rollbar.com/?employee=nick-hodges --- - [rollbar.js v1.0.0-rc8 released](https://rollbar.com/blog/rollbar-js-v1-0-0-rc8-released/): Today, we released rollbar. js version 1. 0. 0-rc8. This release includes a fix for a bug where the global... ### - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=1139 --- ### Email Warmup's Story with Rollbar > We use Rollbar to monitor our backend systems, particularly for email deliverability algorithms and campaign management tools. It integrates seamlessly with our Slack channels to alert our team about issues in real-time. Without Rollbar, small glitches could escalate into bigger problems, impacting our clients’ email performance. - Published: 2024-12-06 - Modified: 2024-12-06 - URL: https://rollbar.com/blog/emailwarmup-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Email Warmup is a company focused on improving email deliverability, helping outbound emails drive sales rather than end up as spam 1. Can you introduce yourself, and tell us about your team or company? We’re Email Warmup, a business dedicated to boosting email deliverability so outbound emails increase sales, not spam. 2. How do you plan to use Rollbar? We use Rollbar to monitor our backend systems, particularly for email deliverability algorithms and campaign management tools. It integrates seamlessly with our Slack channels to alert our team about issues in real-time. Without Rollbar, small glitches could escalate into bigger problems, impacting our clients’ email performance. 3. What made you choose Rollbar? Rollbar stood out due to its intuitive dashboards, easy setup, and actionable insights. Compared to other tools, Rollbar excels at prioritizing critical issues using the Pareto principle, allowing us to focus on what matters most and deliver uninterrupted service to our clients. Visit Founder of Email Warmup's LinkedIn Page --- - [Heartbleed Bug Response](https://rollbar.com/blog/heartbleed-bug-response/): Updated 4/9 7:30pm What is Heartbleed? CVE-2014-0346, known as “Heartbleed”, is a bug in OpenSSL v1. 0. 1 through 1.... ### Juanjo Marrón - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=juanjo-marron --- - [Connecting Rollbar with PagerDuty](https://rollbar.com/blog/connecting-rollbar-with-pagerduty/): Using Rollbar with PagerDuty is now a lot more seamless. PagerDuty provides SaaS IT on-call schedule management, alerting, and incident... - [Resolving Rollbar Items in Versions](https://rollbar.com/blog/resolving-rollbar-items-in-versions/): We just rolled out a new feature to help track which versions/revisions errors are resolved in. When resolving items within... ### Sentry, But Better? 6 Sentry Alternatives to Keep Your Code Error-Free > If you're looking to optimize your app’s performance and squash bugs more efficiently, we look at some top-tier alternatives to Sentry you should consider. - Published: 2024-12-04 - Modified: 2024-12-04 - URL: https://rollbar.com/blog/sentry-alternatives-for-error-tracking/ - Categories: topics - Tags: topics We all know Sentry, right? It's a big name in error monitoring. But what if I told you there are some impressive alternatives out there that might just suit your needs even better? We’ve got Rollbar, Raygun, Bugpilot, and a few more on the table. Each one brings something unique. Let's compare them against Sentry by diving into their features, ease of use, integrations, and of course, their price. If you're looking to optimize your app’s performance and squash bugs more efficiently, this is the guide for you. Rollbar With 4. 5 out of 5 stars on both Capterra and G2, Rollbar is acclaimed as one of the top error monitoring tools. Rollbar provides real-time error monitoring and reporting with features like error grouping, deduping, and detailed error analytics. It supports a wide range of platforms and allows for stack traces and proactive triaging of errors. Rollbar also integrates well with project management tools like Slack, Jira, and GitHub. All this makes Rollbar a solid, user-friendly choice for keeping your app running smoothly. If you're looking for an easy to use error monitoring tool with advanced diagnostic capabilities, give Rollbar a try. Plans start at $0/mo and unlike Sentry’s free plan, Rollbar’s offers unlimited users. Raygun Raygun focuses on providing detailed diagnostic data with a developer-friendly interface. It offers real-user monitoring, dashboards, transaction tracing, and usage-based pricing. Raygun also goes beyond tracking bugs. They offer an integrated platform that combines error monitoring, real user monitoring, and application performance monitoring (APM).... --- - [Ad-hoc error reporting with Rollbar CLI](https://rollbar.com/blog/ad-hoc-error-reporting-with-rollbar-cli/): We just coded up a quick tool to send Rollbar messages from the command line. It’s useful for quick, one-off... ### Maggie Liu - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=maggie-liu --- - [jQuery Error Instrumentation](https://rollbar.com/blog/jquery-error-instrumentation/): Today we are releasing a new feature for our JavaScript notifier that should make tracking down errors much easier if... ### Drew Meyers - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=drew-meyers --- ### Smarter Operations: How Rollbar + GrowthBook Minimize Downtime and Boost Reliability > Software development and operations teams are the guardians of system stability, ensuring uptime, reliability, and performance across complex software ecosystems. The stakes are high—every second of downtime impacts your brand’s reputation and bottom line. That’s why integrating Rollbar’s error monitoring with GrowthBook’s feature flagging is a game-changer for ops teams. - Published: 2024-12-02 - Modified: 2024-12-02 - URL: https://rollbar.com/blog/how-rollbar-growthbook-minmize-downtime-boost-reliability/ - Categories: Engineering, product - Tags: Usage Notifications Software development and operations teams are the guardians of system stability, ensuring uptime, reliability, and performance across complex software ecosystems. The stakes are high—every second of downtime impacts your brand’s reputation and bottom line. That’s why integrating Rollbar’s error monitoring with GrowthBook’s feature flagging is a game-changer for ops teams. This combination equips you to proactively identify and mitigate issues tied to new features before they impact your users. Here’s how Rollbar and GrowthBook transform your workflows and safeguard your operations. Real-Time Alerts for Feature-Specific Issues With Rollbar, your team already has detailed, real-time insights into application errors. But what happens when a spike in errors is tied to a specific feature rollout? GrowthBook’s feature flags take the guesswork out of identifying the culprit. You can toggle features on or off instantly while Rollbar continues to monitor the broader system. Example: A new payment gateway rollout causes intermittent errors for users in specific geographies. Rollbar flags the issue, and with GrowthBook, your team disables the feature in those regions in seconds, ensuring minimal user disruption. Instant Rollbacks Without Releasing New Code When critical errors arise, traditional workflows often require a full rollback or emergency patch deployment. GrowthBook eliminates this bottleneck by allowing you to disable problematic features on the fly—no redeployments needed. Rollbar ensures your team is alerted the moment something goes wrong. Key Benefit: Spend less time firefighting and more time ensuring system stability. Focused Root Cause Analysis Large-scale applications can make debugging a needle-in-a-haystack challenge. By linking Rollbar’s... --- - [JavaScript and Source Maps in a Django App](https://rollbar.com/blog/javascript-and-source-maps-in-a-django-app/): It’s pretty well known that every web app needs frontend JavaScript these days to provide the best possible user experience.... - [Debug Production Errors in Minified JavaScript with Source Maps and Rollbar](https://rollbar.com/blog/debug-production-errors-in-minified-javascript-with-source-maps-and-rollbar/): Rollbar just got a much-requested feature: Source Maps support for Javascript. If you minify your Javascript code in production, this... ### Diego Veralli Bortheiry - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=diego-veralli-bortheiry --- ### The Python stderr Guide I Wish I Had As A Beginner > Learn how to separate error messages from regular output in Python using stderr. Clear examples, command-line tricks, and formatting tips. - Published: 2024-11-18 - Modified: 2024-11-18 - URL: https://rollbar.com/blog/raise-stderr-python/ - Categories: Code Tutorials, Python - Tags: Python Is your program throwing a fit but those error messages are lost somewhere in the avalanche of print statements? Let's fix that! Enter stderr - Python's built-in solution for separating your normal program output from your "everything is on fire" messages. Think of your Python program as having two voices: stdout (its inside voice) and stderr (its "EVERYONE PANIC" voice). stdout is for normal stuff like "Hey, I processed that file" or "Here's your data. " stderr is for when things go wrong and your code needs to scream for help. It's like having a separate lane for emergencies. Quick example of stderr Here’s a super simple way to use stderr: import sys # Your regular, calm output print("Everything is fine, just processing some data... ") # Your code's panic mode print("HELP! SOMETHING'S ON FIRE! ", file=sys. stderr) You could also write it this way with sys. stderr. write, which is slightly more efficient but the performance difference is too small to matter for most people: sys. stderr. write("🔥 ERROR: The thing that shouldn't break just broke 🔥\n") Real life stderr examples (because theory is boring) The case of the evil CSV Ever tried to process a CSV file only to find out it's missing, corrupted, or formatted by someone who thinks commas are optional? Here's how to handle those file mishaps gracefully with stderr: import sys import csv def process_important_file(filename): try: with open(filename) as f: data = csv. DictReader(f) # Actually do stuff with the data print("Processing your amazing... --- - [Async node.js API server testing](https://rollbar.com/blog/async-node-js-api-server-testing/): This post is about how we built our test suite for our API server at Rollbar and some of the... ### Owen Linderholm - Published: 2021-05-05 - Modified: 2022-06-30 - URL: https://rollbar.com/?employee=owen-linderholm --- - [May Release Roundup](https://rollbar.com/blog/may-release-roundup/): Here’s a roundup of what’s new at Rollbar in the month of May. Big Features We revamped our notifications system,... ### Rafael Moore Cid - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=rafael-moore-cid --- - [Rules Engine for Notifications, Plus Integrations with Campfire, Hipchat, JIRA and Trello](https://rollbar.com/blog/rules-engine-for-notifications-plus-integrations-with-campfire-hipchat-jira-and-trello/): Today we’re revamping the model for defining what you want to be notified about from Rollbar. Rollbar now integrates with... ### Chayn's Story with Rollbar > At PLUM, we focus on crafting custom software solutions tailored to specific needs. Our projects range from helping startups launch their initial products to assisting established enterprises in scaling and enhancing their software infrastructure. - Published: 2024-11-04 - Modified: 2024-11-04 - URL: https://rollbar.com/blog/chayn-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Chayn is a global nonprofit that creates open, online resources and services for survivors of abuse that are trauma-informed, intersectional, multilingual and feminist. 1. Can you introduce yourself, and tell us about your team or company? My name is Ellie and I am the Senior Software Engineer for Chayn. Chayn is a global nonprofit, run by survivors and allies from around the world, creating resources to support the healing of survivors of gender-based violence. 2. How do you plan to use Rollbar? At Chayn, we rely on Rollbar for monitoring some of our key platforms, including Bloom, our online support space that offers video courses and various resources for survivors of gender-based violence. Rollbar helps us stay responsive to the needs of our users by immediately alerting us to any technical issues they may encounter. By using Rollbar, our team can quickly address and resolve issues, ensuring our users have uninterrupted access to vital resources. Without Rollbar, identifying and fixing these issues would be more challenging and would delay our ability to support survivors effectively 3. What made you choose Rollbar? As a nonprofit, we need reliable, high-quality tools that offer strong value for the investment. Rollbar stood out for its excellent balance of functionality and affordability. Its seamless integration with our existing alerting systems made it easy to adopt, helping us stay agile and responsive to any issues that may impact our users Visit Chayn's LinkedIn Page --- - [Taking UNIQUE indexes to the next level](https://rollbar.com/blog/taking-unique-indexes-to-the-next-level/): You’ve probably seen unique constraints somewhere – either in Rails’ validates :uniqueness, Django’s Field. unique, or a raw SQL table... ### David Hackett - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=david-hackett --- - [Improved grouping for Javascript errors](https://rollbar.com/blog/improved-grouping-for-javascript-errors/): We’ve released an updated to how Javascript errors are grouped in Rollbar. The new update does a better job of... ### How to Fix the OutOfMemoryError in Java > A java.lang.OutOfMemoryError is a runtime error in Java which occurs when the JVM is unable to allocate an object due to insufficient space in the Java heap. - Published: 2024-10-20 - Modified: 2024-10-21 - URL: https://rollbar.com/blog/how-to-handle-outofmemoryerror-exceptions-in-java/ - Categories: Code Tutorials, Java - Tags: java Picture this: It's Black Friday, and you're circling a packed mall parking lot. Every space is taken, and cars are lined up waiting for spots. You keep circling, but there’s just no place to park and you run out of gas. When you see a java. lang. OutOfMemoryError it’s just like what you experienced in that overcrowded parking lot. The Java Virtual Machine (JVM) has run out of space to "park" new objects in memory. Now here's the thing about Java: it loves objects. It can't get enough of them. Objects here, objects there, objects everywhere. But all these objects need a place to park, and that place is called the heap. When there’s not enough native memory to support the loading of a Java class or the Java Garbage Collector (GC) cannot free up the space in the heap required for a new object, it throws its hands up and yells "OutOfMemoryError! " which is programmer-speak for "We're doomed! " No matter how efficiently your code is written, if there's no room left, you're stuck. Let’s take a stroll through the heap and figure out how to give your JVM that sweet, sweet memory it craves. What Causes java. lang. OutOfMemoryError The JVM's memory management scheme sets aside a portion of the heap memory to store newly allocated objects. Any referenced objects remain active in the heap throughout their lifespan (until their reference is closed) and occupy memory. When objects are no longer referenced, they become eligible for the... --- ### Christian Fitzgerald - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=christian-fitzgerald --- - [Launch and initial funding](https://rollbar.com/blog/launch-and-initial-funding/): Today we’re excited to announce the public launch of Rollbar. Rollbar tracks and analyzes errors in production applications, helping dev... ### Jennifer Vannoy - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=jennifer-vannoy --- - [Upgrading to the new Rollbar notifier libraries](https://rollbar.com/blog/upgrading-to-the-new-rollbar-notifier-libraries/): We’ve updated all of our notifier library repositories to match the name change to Rollbar today. The old Ratchet. io... ### How to Fix TypeError: NoneType Object Is Not Iterable in Python > The Python TypeError: NoneType Object Is Not Iterable is an exception that occurs when trying to iterate over a None value. Learn how to fix it. - Published: 2024-10-20 - Modified: 2024-10-21 - URL: https://rollbar.com/blog/python-typeerror-nonetype-object-is-not-iterable/ - Categories: Code Tutorials, Python - Tags: Python Imagine your friends are over to play poker and you reach for the box of playing cards, but something feels off - it's surprisingly light. You open it and see the box is completely empty. In this moment of surprise, you're experiencing something akin to a TypeError: NoneType Object Is Not Iterable in Python. Just as you can't play cards with an empty box, Python can't iterate over a None value. You're trying to perform an action (playing cards/iterating) on something that simply isn't there, even though you expected it to be. The tricky part is, just like you didn't realize the card box was empty until you checked inside, you might not know a Python object is None until you try to use it. This is why this error can catch developers off guard, appearing in seemingly working code. In this blog post, we'll explore why this error occurs, how to identify it in your code, and provide multiple strategies to fix and prevent it. What Causes TypeError: NoneType Object Is Not Iterable For an object to be iterable in Python, it must contain a value. Therefore, trying to iterate over a None value raises the Python TypeError: NoneType Object Is Not Iterable exception. Some of the most common sources of None values are: Calling a function that does not return anything. Calling a function that sets the value of the data to None. Setting a variable to None explicitly. Accessing a non-existent key in a dictionary. How to... --- - [Real-time Search for Exceptions and Errors](https://rollbar.com/blog/real-time-search-for-exceptions-and-errors/): We’re happy today to announce the release of real-time search. You can now search your exceptions, errors, and log messages... ### Justin Hochsprung - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=justin-hochsprung --- - [Using a Request Factory in Pyramid to write a little less code](https://rollbar.com/blog/using-a-request-factory-in-pyramid-to-write-a-little-less-code/): At Rollbar. com, we’ve been using Pyramid as our web framework and have been pretty happy with it. It’s lightweight... ### Krisztián Griz - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=krisztian-griz --- - [Writing a simple deploy script with Fabric and @roles](https://rollbar.com/blog/writing-a-simple-deploy-script-with-fabric-and-roles/): I first heard about Fabric a couple years ago while at Lolapps and liked the idea of: writing deployment and... ## Guides ### How to Fix SyntaxError: Unexpected Token in JavaScript > This error typically results from missing or misplaced symbols, such as parentheses, commas, or brackets, or from improper JSON formatting. Let's fix it. - Published: 2024-10-09 - Modified: 2024-10-09 - URL: https://rollbar.com/blog/how-to-fix-syntaxerror-unexpected-token-in-javascript/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript It’s a vague, unhelpful message that feels more like a riddle than an error. You know something doesn’t belong, but you're left guessing what that "token" is and why it's unexpected. Let's demystify what’s really going on behind the scenes and get your code running smoothly again. The "SyntaxError: Unexpected token" in JavaScript occurs when the code contains a character or symbol that the JavaScript engine does not expect, often due to a typo or syntax mistake. Luckily, if you read the full error log there are usually some helpful details about where the error occurred, including the line number and sometimes even the specific character position. For example: Uncaught SyntaxError: Unexpected token ',' at script. js:12:15 The part Unexpected token ',' tells you which token was unexpected—in this case, a comma. The part script. js:12:15 points you to the exact location of the error — line 12, character 15 in the file named script. js. To fix it, you’ll need to carefully review the line and nearby lines where the error is reported, checking for missing characters or incorrect syntax. For example, say you tried to define a function that takes two numbers and returns their multiplication: const multiply = x, y => x * y; You would get SyntaxError: Unexpected token ',' with that because multiple parameters in an arrow function should be enclosed in parentheses. The fix would be to edit the code to this: const multiply = (x, y) => x * y; As you can... --- ### Nitin Bhasin - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=nitin-bhasin --- ### Maria Stanley - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=maria-stanley --- ### Daniel McCoy - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=daniel-mccoy --- ### Rollbar Editorial Team - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=rollbar-editorial-team --- ### Shilpa's Story with Rollbar > Rollbar has been an excellent tool for error reporting on both the server and client sides. It has greatly helped us in pinpointing and identifying the root causes of issues. By using Rollbar, we’ve been able to make our product more robust over time. - Published: 2024-09-27 - Modified: 2024-09-27 - URL: https://rollbar.com/blog/shilpas-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Shilpa Dalmia Co-Founder & Chief Technology Officer     Shilpa has now been using Rollbar for 104 months! 1. My Role ActivityHero is a marketplace where families can find and book after-school classes and holiday camps, including summer, winter, fall, and spring break camps. For school districts and activity providers, ActivityHero serves as an after-school SIS management platform, helping them manage enrollments, track attendance, generate reports, communicate with parents, and much more. I am the co-founder and CTO of ActivityHero and I manage the ActivityHero product and engineering team. 2. My Passion in the Role Our mission at ActivityHero has always been to make after-school activities accessible to all children. It has been an incredible journey to see our platform become a hub for schools, activity providers, and families seeking enriching programs for kids. We have helped countless children participate in a wide variety of activities that inspire them to succeed and thrive in their personal and career pursuits. 3. The Rollbar Experience Rollbar has been an excellent tool for error reporting on both the server and client sides. It has greatly helped us in pinpointing and identifying the root causes of issues. By using Rollbar, we’ve been able to make our product more robust over time. We especially appreciate the detailed information Rollbar tracks, which helps us determine the scenarios in which particular issues occur. Additionally, features like GitHub integration, which allows us to track issues directly in GitHub, and Slack integration, which notifies us as soon as errors... --- ### Pawel Szczodruch - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=pawel-szczodruch --- - [What is Error Logging in C++](https://rollbar.com/guides/cpp/cpp-error-logging/): Error logs can be a life-saver. Learn how to create an error logging class in C++ to track errors, warnings, and status messages in runtime. ### Patrick Bonner - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=patrick-bonner --- - [Error Debugging in C++ with VS Code](https://rollbar.com/guides/cpp/cpp-debugging-with-vs-code/): Learn how to debug using the C/C++ extension for VS Code with advanced features like breakpoints, tracking variable values, and stepping. ### Reduce noise and save time with the new Merge feature on the item detail page > We are excited to release a new feature that will make it easier to group your items, reduce noise, and simplify your error management directly from the Item Detail page header. While you are investigating an item,, you can now search for other items within the same project and environment and merge right from that page without having to navigate back to the Item List page. - Published: 2024-09-25 - Modified: 2024-09-25 - URL: https://rollbar.com/blog/item-merge/ - Categories: product - Tags: Usage Notifications We are excited to release a new feature that will make it easier to group your items, reduce noise, and simplify your error management directly from the Item Detail page header. While you are investigating an item,, you can now search for other items within the same project and environment and merge right from that page without having to navigate back to the Item List page. With all the details in front of you, this feature allows you to efficiently merge related items, helping to keep your Rollbar environment cleaner and more organized. Merging and grouping items helps you maintain focus on the information you find most relevant and keep a cleaner view of your Rollbar environment, so you can get a better idea of the current state of your system and find it easier to spot and address new issues. How it Works: Click the Merge button in the header of the item detail page. Use the merge panel to search for other items, grouping them into a new merged item or adding them to an existing group. We hope this enhancement will improve clarity, give you a clearer view of your system’s state, and allow you to resolve issues more efficiently. --- ### Nico Kruger - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=nico-kruger --- - [How to Handle Exceptions in C++](https://rollbar.com/guides/cpp/how-to-handle-exceptions-in-cpp/): C++ exceptions provide a well-defined way for detecting errors and passing the information up the call stack. ### Jack Delahunt - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=jack-delahunt --- - [How to Throw Exceptions in Flutter](https://rollbar.com/guides/flutter/how-to-throw-exceptions-in-flutter/): Exception in Flutter can be thrown using try, catch and finally blocks when an unexpected issue occurs when executing a program. ### How to Fix TypeError: Cannot Read Property of Undefined in JavaScript > This guide explains the root causes and offers multiple solutions from basic checks to advanced ES2020+ features like optional chaining. - Published: 2024-09-16 - Modified: 2025-03-17 - URL: https://rollbar.com/blog/javascript-typeerror-cannot-read-property-of-undefined/ - Categories: Code Tutorials, JavaScript - Tags: error-handling, error-monitoring, JavaScript Imagine you're at a buffet, eagerly approaching what you think is the dessert table, only to find an empty space where the chocolate cake should be. That disappointing moment? That's pretty much what happens in your code when you encounter the infamous "Cannot read properties of undefined" error. Just as you can't slice a piece of cake that isn't there, JavaScript can't read a property of an object that doesn't exist. But don't worry! Unlike that missing cake (which is truly a tragedy), this JavaScript error is something we can fix. In this guide we’ll unpack this common coding hiccup, understand why it happens, and explore several ways to prevent and handle it. What Causes “TypeError: Cannot Read Property of Undefined”? This error happens when you attempt to use a variable or object that hasn't been properly initialized or doesn't exist. Undefined means that a variable has been declared but has not been assigned a value, or you're trying to access a property that doesn't exist on an object. In JavaScript, properties and functions can only belong to objects. Since undefined is not an object type, calling a function or accessing a property on such a variable causes the TypeError: Cannot read property of undefined. To fix this, you can: Ensure the object exists before accessing its properties Use optional chaining (obj? . x) to safely access nested properties Provide default values using the OR operator (||) or nullish coalescing operator (? ? ) Let’s go through an example. “TypeError:... --- ### Nia Hampton - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=nia-hampton --- - [How to Debug PHP Errors](https://rollbar.com/guides/php/how-to-debug-php-errors/): Most PHP error reports are vague, and identifying the underlying causes can be difficult. Learn the common steps towards pinpointing and resolving PHP errors that crop up in production. - [Where are Ruby Errors Logged?](https://rollbar.com/guides/ruby/where-are-ruby-errors-logged/): This simple guide explains where Ruby logs are located, how to configure logging, and why error monitoring tools like Rollbar make debugging even faster. ### How to use the Throws keyword in Java (and when to use Throw) > Both throw and throws are concepts of exception handling in Java. The throws keyword is used to ..., while the throw keyword is used to explicitly... - Published: 2024-09-16 - Modified: 2024-09-16 - URL: https://rollbar.com/blog/how-to-use-the-throws-keyword-in-java-and-when-to-use-throw/ - Categories: Code Tutorials, Java - Tags: java Imagine you're a postal worker sorting through a mountain of packages. Some packages are ticking suspiciously, while others are leaking mysterious liquids. As a responsible postal worker, you have two choices: deal with these problematic packages yourself (throw) or slap a big "HANDLE WITH CARE" sticker on them and pass them along to the next person in line (throws). Think of throw as actually creating an error in your program. You use it when something goes wrong and you want to stop the program. For example, you might use throw if someone enters an invalid password. On the other hand, throws is like a warning sign. You write it after the name of a function to say, "Hey, this part might cause an error. " It doesn't actually create the error; it just warns that an error could happen. You usually see throws next to functions that might have problems, like reading a file that might not exist. In short, throw makes errors happen, while throws just warns about possible errors. Java Throws Keyword The throws keyword in Java is used to declare exceptions that can occur during the execution of a program. For any method that can throw exceptions, it is mandatory to use the throws keyword to list the exceptions that can be thrown. The throws keyword provides information about the exceptions to the programmer as well as to the caller of the method that throws the exceptions. The throws keyword allows exceptions to be propagated in the... --- ### Queen Lee - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=queen-lee --- - [How to Raise Exceptions in Ruby](https://rollbar.com/guides/ruby/how-to-raise-exceptions-in-ruby/): It's not enough to raise exceptions in Ruby. You need to raise exceptions effectively. Here's how to create a human-readable—and diagnosable—exception object. ### Gaurav Anand - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=gaurav-anand --- - [How to Handle Exceptions in Ruby](https://rollbar.com/guides/ruby/how-to-handle-exceptions-in-ruby/): The simple guide to exception handling in Ruby. ✓ Harden your app against unexpected errors ✓ Respond more effectively ✓ Adapt to any issue that may arise. ### Hayden Kempton - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=hayden-kempton --- ### 3 Ways to Fix “jquery is not defined” > Discover common causes like incorrect capitalization, missing script tags, and loading order issues. Get step-by-step solutions and best practices. - Published: 2024-09-13 - Modified: 2024-09-13 - URL: https://rollbar.com/blog/fix-jquery-is-not-defined/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript You've just stumbled into one of the most common jQuery pitfalls. The "jquery is not defined" error is a JavaScript ReferenceError that occurs when your script tries to use jQuery functions or methods, but the jQuery library is not properly loaded or initialized. How did this happen? Probably one of three reasons: The jQuery library is not included in the HTML file The script using jQuery is executed before the library is loaded There's a typo in the jQuery reference (e. g. , using lowercase 'jquery' instead of 'jQuery') Let’s start with the last reason as that’s the easiest to fix. There's a typo in the jQuery reference You have a capitalization error, as the correct reference should be jQuery (with a capital 'J') or $. Here's an example of code that would cause this error: jQuery Error Example Hello, World! This code will produce the error "uncaught referenceerror jquery is not defined" because the code is using lowercase jquery instead of jQuery or $. To fix this error, you need to use the correct capitalization for jQuery: jQuery Error Fixed Hello, World! Remember, it's generally a good practice to use $ instead of jQuery for brevity, unless you're in an environment where $ might conflict with other libraries. Both $ and jQuery are valid ways to reference the jQuery object once the library is properly loaded. The jQuery library is not included in the HTML file If you don’t see any lowercase ‘jquery’ instances in your code, check if... --- - [How to Debug Ruby Errors](https://rollbar.com/guides/ruby/how-to-debug-ruby-errors/): Most Ruby error reports are vague, and identifying the underlying causes can be difficult. Learn the common steps towards pinpointing and resolving Ruby errors that crop up in production. ### Ian Flanagan - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=ian-flanagan --- - [Where are PHP Errors Logged?](https://rollbar.com/guides/php/where-are-php-errors-logged/): This simple guide explains where PHP logs are located, how to configure logging, and why error monitoring tools like Rollbar make debugging even faster. ### How to Fix the EOFException in Java.io > This exception typically pops up when you're working with streams of data, such as reading from a file or receiving data over a network. Learn how to fix it. - Published: 2024-08-25 - Modified: 2025-02-24 - URL: https://rollbar.com/blog/java-eofexception/ - Categories: Code Tutorials, Java - Tags: java The java. io. EOFException is a checked exception in Java that occurs when an end of file or end of stream is reached unexpectedly during input. It's Java's way of letting you know, "Hey, I was expecting more data here, but there's nothing left to read! " Since EOFException is a checked exception, it must be explicitly handled in methods that can throw this exception - either by using a try-catch block or by throwing it up the chain using the throws clause. What Causes EOFException Here are some common scenarios that can lead to an EOFException: Reading Beyond Available Data When using classes like DataInputStream, ObjectInputStream, or RandomAccessFile, if you attempt to read more data than is available, an EOFException will be thrown. For example: Trying to read an int (4 bytes) when only 2 bytes are left in the stream. Attempting to read a UTF-8 encoded string, but reaching the end of the stream before the full string is read. Unexpected End of Stream In network communications or when reading compressed data (using ZipInputStream or GZIPInputStream), the stream might end prematurely due to connection issues or corrupted data. Serialization Issues When using ObjectInputStream to deserialize objects, an EOFException can occur if the stream ends before all expected object data is read. Mismatched Read Operations If you're using different read methods than those used to write the data, you might encounter an EOFException. For instance, writing data as bytes but trying to read it as integers. File Truncation If... --- - [How to Throw Exceptions in PHP](https://rollbar.com/guides/php/how-to-throw-exceptions-in-php/): It's not enough to throw exceptions in PHP. You need to throw exceptions effectively. Here's how to create a human-readable—and diagnosable—exception object. - [How to Handle Exceptions in PHP](https://rollbar.com/guides/php/how-to-handle-exceptions-in-php/): The simple guide to exception handling in PHP. ✓ Harden your app against unexpected errors ✓ Respond more effectively ✓ Adapt to any issue that may arise. ### How to Fix ReferenceError: Require is Not Defined in JavaScript > Since require is specific to Node.js, if JavaScript code is executed outside of a Node.js environment, require will not be recognized. - Published: 2024-08-25 - Modified: 2024-08-26 - URL: https://rollbar.com/blog/referenceerror-require-is-not-defined-javascript/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript So, you've run into the dreaded ReferenceError: require is not defined error, huh? Don't sweat it – we've all been there. The "require is not defined" error is just your code's way of saying, "Hey, I think we need to talk about modules. " It’s confusing at first, but totally solvable once you know the tricks. Let's break this down and get you back to coding bliss. Why is Require Not Defined? Alright, let's start with the basics. The require function is like a helpful friend who fetches stuff for you. It's part of the CommonJS module system, which is Node. js's way of organizing code. But here's the kicker – it's not a built-in feature of JavaScript and is not recognized by web browsers. Put simply, require is a method used to load modules or external dependencies in a Node. js environment but you’re attempting to use it outside of Node. js. Or if you are working in Node. js, something’s off with your setup. ReferenceError: Require is Not Defined Example Here’s an example of a Javascript ReferenceError: require is not defined thrown trying to use the require function: const fs = require('fs'); In the above example, the fs module is attempted to be imported in a web browser environment by calling the require function. However, since require is not available in web browsers, running the above code throws a ReferenceError: Uncaught ReferenceError: require is not defined How to Fix ReferenceError: Require is Not Defined Understand where your code... --- - [How to Handle Exceptions in .NET](https://rollbar.com/guides/dotnet/how-to-handle-exceptions-in-net/): The simple guide to exception handling in .NET ✓ Harden your app against unexpected errors ✓ Respond more effectively ✓ Adapt to any issue that may arise. ### Israel Perez - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=israel-perez --- - [Where are JavaScript Errors Logged?](https://rollbar.com/guides/javascript/where-are-javascript-errors-logged/): This simple guide explains where JavaScript logs are located, how to configure logging, and why error monitoring tools like Rollbar make debugging even faster. ### Matheas Hutcherson - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=matheas-hutcherson --- ### Xyla AI's Story with Rollbar > We use Rollbar for all our error reporting. It's used by our engineering team to notify us of issues that arise and to help us debug them. It's really helpful in cutting through the noise and letting us know only the errors that we need to care about. - Published: 2024-08-12 - Modified: 2024-08-12 - URL: https://rollbar.com/blog/xyla-ais-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Xyla AI is fully automated social media management. We take care of your content while you focus on selling products.   1. Describe your company and the service(s) offered. Xyla. AI is an AI social media autopilot for Shopify stores. Connect it to your store and it'll automatically create and schedule social media posts with fun-facts, motivational quotes, and memes, all tailored to your individual brand and tone of voice. Sprinkled with posts on store products, such as new-in and best-sellers. Link your social media accounts and it'll publish to your Instagram, Facebook, Pinterest, TikTok and X profiles. 2. What are you most passionate about in your current and/or past roles? We use Rollbar for all our error reporting. It's used by our engineering team to notify us of issues that arise and to help us debug them. It's really helpful in cutting through the noise and letting us know only the errors that we need to care about. When this happens, we receive an alert. The Rollbar dashboard is our first point of call. It's great at pointing you in the right direction to solve an issue. 3. What made you choose Rollbar? Rollbar integrates seamlessly with Ruby on Rails. I've used it in many projects over the years and it's never let me down. It's easy to use and great value for money. Visit XylaAI. com --- - [How to Throw Exceptions in JavaScript](https://rollbar.com/guides/javascript/how-to-throw-exceptions-in-javascript/): It's not enough to throw exceptions in JavaScript. You need to throw exceptions effectively. Here's how to create a human-readable—and diagnosable—exception object. ### Abby Dugan - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=abby-dugan --- - [How to Handle Exceptions in JavaScript](https://rollbar.com/guides/javascript/how-to-handle-exceptions-in-javascript/): A simple guide to exception handling in JavaScript. ✓ Harden your app against unexpected errors ✓ Respond more effectively ✓ Adapt to any issue that may arise. - [How to Debug JavaScript Errors](https://rollbar.com/guides/javascript/how-to-debug-javascript-errors/): Identifying the underlying causes of most JavaScript errors can be difficult. Learn the common steps towards pinpointing and resolving JavaScript errors. ### How to Catch Multiple Exceptions in Java > Sometimes multiple catch blocks are best; other times, multi-catch or a catch-all block might be more appropriate. Learn all the best practices here. - Published: 2024-08-12 - Modified: 2024-08-12 - URL: https://rollbar.com/blog/how-to-catch-multiple-exceptions-in-java/ - Categories: Code Tutorials, Java - Tags: java Your Java code was humming along smoothly until... BAM! An exception. No problem, you caught it. But wait, there's another. And another. Suddenly, you're juggling exceptions like you’re in the circus. Don't worry, Java's got your back. Java offers three ways to catch multiple exceptions: using multiple catch blocks for different exception types, the multi-catch feature to handle multiple exceptions in a single block, and a catch-all block for general exception handling. Let’s look in depth at each. Use multiple catch blocks Multiple catch blocks allow you to handle different types of exceptions separately. Here's a simple example: try { // code that may throw exceptions } catch (IOException e) { // handle IOException } catch (SQLException e) { // handle SQLException } Let’s take a look at a runnable example: public class MultipleExceptionExample { public static void main(String args) { try { int numbers = {1, 2, 3}; System. out. println(numbers); // Throws ArrayIndexOutOfBoundsException int result = 10 / 0; // This line is never reached } catch (ArrayIndexOutOfBoundsException e) { System. out. println("Array index out of bounds"); } catch (ArithmeticException e) { System. out. println("Arithmetic error"); } System. out. println("After try-catch block"); } } This is what happens when you run that: The numbers line throws an ArrayIndexOutOfBoundsException. Java immediately jumps to the first matching catch block. The ArrayIndexOutOfBoundsException is caught and handled. The rest of the try block (i. e. int result = 10 / 0;) is skipped. Execution continues after all the catch blocks with "After... --- ### Martin Malloy - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=martin-malloy --- ### András Tarsoly - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=andras-tarsoly --- - [Where are Java Errors Logged?](https://rollbar.com/guides/java/where-are-java-errors-logged/): This simple guide explains where Java logs are located, how to configure logging, and why error monitoring tools like Rollbar make debugging even faster. ### Dean Rizzo - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=dean-rizzo --- - [How to Throw Exceptions in Java](https://rollbar.com/guides/java/how-to-throw-exceptions-in-java/): It's not enough to throw exceptions in Java. You need to throw exceptions effectively. Here's how to create a human-readable—and diagnosable—exception object. ### Jeffrey Hoffer - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=jeffrey-hoffer --- - [How to Handle Exceptions in Java](https://rollbar.com/guides/java/how-to-handle-exceptions-in-java/): The simple guide to exception handling in Java. ✓ Harden your app against unexpected errors ✓ Respond more effectively ✓ Adapt to any issue that may arise. ### Alex Tkach - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=alex-tkach --- - [How to Debug Java Errors](https://rollbar.com/guides/java/how-to-debug-java-errors/): Most Java error reports are vague, and identifying the underlying causes can be difficult. Learn the common steps towards pinpointing and resolving Java errors that crop up in production. ### Nathan Sweet - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=nathan-sweet --- ### Oluwarotimi Joseph Olorunyomi - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=oluwarotimi-joseph-olorunyomi --- - [Where are .NET Errors Logged?](https://rollbar.com/guides/dotnet/where-are-net-errors-logged/): This simple guide explains where .NET logs are located, how to configure logging, and why error monitoring tools like Rollbar make debugging even faster. - [How to Debug .NET Errors](https://rollbar.com/guides/dotnet/how-to-debug-net-errors/): Most .NET error reports are vague, and identifying the underlying causes can be difficult. Learn the common steps towards pinpointing and resolving .NET errors that crop up in production. ### Yoz Grahame - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=yoz-grahame --- - [How to Throw Exceptions in .NET](https://rollbar.com/guides/dotnet/how-to-throw-exceptions-in-net/): It's not enough to throw exceptions in .NET. You need to throw exceptions effectively. Here's how to create a human-readable—and diagnosable—exception object. ## KB Posts ### New Rollbar Dashboard > We're thrilled to introduce a major update to your Rollbar experience: the new Rollbar Dashboard! Designed with your workflow in mind, this dashboard provides an intuitive, customizable view of your application’s item activity and project setup, all in one place. - Published: 2024-07-30 - Modified: 2024-07-31 - URL: https://rollbar.com/blog/introducing-new-dashboard/ - Categories: product - Tags: Usage Notifications We're thrilled to introduce a major update to your Rollbar experience: the new Rollbar Dashboard! Designed with your workflow in mind, this dashboard provides an intuitive, customizable view of your application’s item activity and project setup, all in one place. https://www. youtube. com/watch? v=F2ldMkrukBI Occurrence Card The Occurrence Card has been updated with a new design. It will still be familiar with all the same features, including comparing your current occurrences with previous periods to identify trends and spikes, filtering by project, environment, or item levels to focus on what matters most to you, and seeing detailed tables of occurrences, activations, item levels, and deploys. Explore More Cards But there's more! Your new dashboard comes with a suite of additional cards, ready for you to explore and customize. Simply click on the dashboard menu to reveal: Welcome Card: A helpful checklist to integrate Rollbar seamlessly. Projects Card: An overview of all your projects, their items, and settings. Integrations Card: A glance at your account integrations with third-party applications. Team Card: Quick access to your account’s teams and members. Users Card: Manage your account members with ease. These cards provide a comprehensive view of your Rollbar environment, allowing you to tailor the dashboard to your needs. Just click the new 3 dot menu in the top right corner to add additional cards to your dashboard. Future Enhancements Wait! We’re not stopping there! We’re working on making these cards shareable so you can collaborate more effectively with your team. Additionally, we’re developing... --- ### Ami Felson - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=ami-felson --- ### Tamsin Guy - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=tamsin-guy --- ### How to Fix the "document is not defined" Error in JavaScript > By ensuring you're in a browser context and that the DOM is fully loaded before you access ‘document’, you can avoid this error. - Published: 2024-07-18 - Modified: 2024-07-18 - URL: https://rollbar.com/blog/how-to-fix-document-is-not-defined-error-javascript/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript If you've encountered the "document is not defined" error while working with JavaScript, you're not alone. This common error can be frustrating, but it's usually straightforward to resolve once you understand its causes. Let's explore what this error means, why it occurs, and how to fix it. What is the 'document'? In web development, document is a crucial part of the Document Object Model (DOM). It represents the entire HTML document and serves as the entry point for accessing and manipulating the content on a web page. // A typical use of the document object document. getElementById('myElement'); Common Causes of the "document is not defined" Error There are two primary scenarios where you might encounter this error: 1) running JavaScript outside a browser environment, such as in Node. js, where the document object is not available, or 2) trying to access ‘document’ before the DOM has fully loaded in a web page. 1. Running JavaScript in a Non-Browser Environment JavaScript can run in various environments, not just browsers. If you try to use document in an environment like Node. js, you'll encounter this error because document doesn't exist there. // This works in a browser document. querySelector('button'). addEventListener('click', => { console. log('Button clicked! '); }); // But in Node. js, this would cause the "document is not defined" error 2. Accessing 'document' Before the DOM is Fully Loaded If your JavaScript code tries to access document before the DOM has finished loading, you may run into this error. How to... --- ### Omar Powell Guaglione - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=omar-powell-guaglione --- ### Árpád Fülöp - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=arpad-fulop --- ### Logging Levels in Python are Unnecessary - Just Log Everything > Is selective logging costing you valuable insights? Discover the power of logging everything in Python with Rollbar. - Published: 2024-07-18 - Modified: 2024-07-18 - URL: https://rollbar.com/blog/logging-levels-in-python-are-unnecessary/ - Categories: Code Tutorials, Python - Tags: Python I've spent countless hours debugging Python issues that could have been solved faster if I had just had more information. Today, I want to challenge a fundamental concept in Python logging: the idea of logging levels. The Traditional Approach: Python Logging Levels If you're familiar with Python's logging module, you know about the five standard logging levels: DEBUG: Detailed information, typically only valuable when diagnosing problems. INFO: Confirmation that things are working as expected. WARNING: An indication that something unexpected happened, or there may be a problem in the near future. ERROR: Due to a more serious problem, the software hasn't been able to perform some function. CRITICAL: A serious error, indicating that the program itself may be unable to continue running. These levels serve as a way to categorize log messages and filter them based on their perceived importance. It's a system that has served us well for years, but I believe it's time for a change. The Case for Logging Everything Here's my controversial take: we should stop using logging levels and instead log everything. Yes, everything. Here's why: Storage is cheap: The original rationale for logging levels was to conserve disk space. In today's world of cheap storage, this is no longer a significant concern. Information is invaluable: How many times have you wished you had more context when debugging an issue? By logging everything, you ensure you always have the information you need. Shift decision-making left: Instead of deciding what's important at coding time, we can... --- ### Michael Ng - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=michael-ng --- ### Syed Ahmed - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=syed-ahmed --- ### Introducing Overage Budgets > We all know how tricky it can be to keep track of costs, especially when your projects spike or with the latest feature that your users love. That's why we've been working on a solution to ensure you never have surprise billing due to on-demand occurrences. - Published: 2024-07-17 - Modified: 2024-07-17 - URL: https://rollbar.com/blog/introducing-overage-budgets/ - Categories: product - Tags: Usage Notifications Say Hello to Overage Budgets We all know how tricky it can be to keep track of costs, especially when your projects spike or with the latest feature that your users love. That's why we've been working on a solution to ensure you never have surprise billing due to on-demand occurrences. Introducing our latest feature to give you both flexibility and control: Overage Budgets. Why a need for Overage Budgets: Traditionally, our billing model for occurrences operates on an "on-demand" basis, allowing for unlimited occurrences beyond plan limits. While this ensures uninterrupted service, it can sometimes lead to surprises in billing, especially after a spike in usage. The choice was binary: keep on-demand events on and adapt to the possibility of plan upgrades or turn them off and risk not being able to observe your errors. We’ve heard from you that this decision causes discomfort and most of you weren’t happy when you received the surprise bill, so it became clear that a more nuanced solution was needed—one that respects both the dynamic nature of your projects and the predictability of your budgeting. Introducing Flexibility and Control with Overage Budgets With the launch of Overage Budgets, we're changing how on-demand events are managed. This feature divides on-demand events into three categories: Off, Budgeted, and Unlimited Off mode will not change; your account will process the number of occurrences in your plan. Once you have reached your occurrences, we will stop processing errors, and you’ll have to wait until the start... --- ### Daniel Day - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=daniel-day --- ### Charles Roberts - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=charles-roberts --- ### How to Fix The IllegalStateException in Java > The IllegalStateException in Java occures when a method has been invoked at an illegal or inappropriate time. - Published: 2024-07-05 - Modified: 2024-07-18 - URL: https://rollbar.com/blog/java-illegalstateexception/ - Categories: Code Tutorials, Java - Tags: error-handling, java An IllegalStateException is a runtime exception in Java that is thrown to indicate that a method has been invoked at an illegal or inappropriate time. To use an analogy, invoking a method in Java when the system is not in the appropriate state is like trying to start a car while it is in "Drive". Just as the car will not start because it is unsafe, a method call results in an IllegalStateException when the internal conditions necessary for its execution are not met. What Causes IllegalStateException The IllegalStateException is thrown when the Java environment or application is not in an appropriate state for the requested operation. This can occur when dealing with threads or the Collections framework of the java. util package under specific conditions. Here are examples of some methods where this exception can occur when they are called at the wrong time: Thread. start: When the Thread. start method is called on a thread that has already been started. Iterator. remove: When the remove method of the Iterator interface is called on a List without calling the next method. This leaves the List collection in an unstable state, causing an IllegalStateException. Queue. add: If an element is attempted to be added to a Queue that is full. Adding elements beyond the size of the queue will cause an IllegalStateException. IllegalStateException Examples Example One Here’s an example of an IllegalStateException thrown when the Iterator. remove method is called to remove an element from an ArrayList before calling the... --- ### Sachin Goyal - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=sachin-goyal --- - [Error Grouping Best Practices](https://rollbar.com/knowledge-base/error-grouping-best-practices/): Why error grouping is important Without grouping, error monitoring and error logs churn out a massive list of unsorted errors... ### Mrunal Kapade - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=mrunal-kapade --- ### Ryan Clark - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=ryan-clark --- - [How Rollbar helps ensure Low-Risk Releases](https://rollbar.com/knowledge-base/how-rollbar-helps-ensure-low-risk-releases/): Pain points You need to get ideas out quickly and with confidence, but releases are inherently risky. The first minutes... ### How to Fix "Illegal Start of Expression" in Java > The “illegal start of expression” error in Java often arises from an insufficient familiarity with the language or due to basic negligence. Learn how to fix it. - Published: 2024-07-05 - Modified: 2024-07-05 - URL: https://rollbar.com/blog/how-to-fix-illegal-start-of-expression-in-java/ - Categories: Code Tutorials, Java - Tags: error-handling, java Introduction to Java Compile-time Errors Over the past two and a half decades, Java has consistently been ranked as one of the top 3 most popular programming languages in the world , . As a compiled language, any source code written in Java needs to be translated (i. e. , compiled) into machine code before it can be executed. Unlike other compiled languages where programs are compiled directly into machine code, the Java compiler converts the source code into intermediate code, or bytecode, which is then translated into machine code for a specific platform by the Java Virtual Machine (JVM). This, in the simplest of terms, is how Java achieves its platform independence (Fig. 1). One advantage that comes with being a compiled language is the fact that many errors stemming from incorrect language syntax and semantics (such as “illegal start of expression”) can be captured in the compilation process, before a program is run and they inadvertently find their way into production environments. Since they occur at the time of compilation, these errors are commonly referred to as compile-time errors. The Java compiler can detect syntax and static semantic errors, although it is incapable of recognizing dynamic semantic errors. The latter are logical errors that don’t violate any formal rules and as such cannot be detected at compile-time; they only become visible at runtime and can be captured by well-designed tests. When it encounters an error it can recognize, the Java compiler generates a message indicating the type of... --- - [Rollbar as a tool for DevOps Teams](https://rollbar.com/knowledge-base/rollbar-as-a-tool-for-devops-teams/): DevOps monitoring & troubleshooting is a complex process. There are many different places where failures can occur, and it is up to you as an engineer to diagnose and address these problems. Fortunately, Rollbar can help DevOps teams by providing better alerting signal and a new starting point for your investigations. - [Manage Rollbar automatically through the Rollbar Terraform Provider](https://rollbar.com/knowledge-base/manage-rollbar-automatically-through-the-rollbar-terraform-provider/): Terraform Provider is available for Rollbar Accounts The Rollbar account administration is critical to get the most out of Rollbar... ### How to Handle Checked & Unchecked Exceptions in Java > There are 2 types of Java Exceptions → ✓Checked ✓Unchecked. Learn more about Java Exceptions & How to Handle Them Now! - Published: 2024-07-05 - Modified: 2024-07-05 - URL: https://rollbar.com/blog/how-to-handle-checked-unchecked-exceptions-in-java/ - Categories: Code Tutorials, Java - Tags: java Fig1: Types of Exceptions in Java, Checked vs Unchecked Exceptions in Java can be divided into two main types: checked and unchecked. Checked exceptions are problems that Java forces you to plan for in advance. You must either handle them or declare that your method might throw them. They're usually for external factors that you can anticipate. Unchecked exceptions, on the other hand, are problems that Java doesn't force you to plan for. You can handle them if you want, but you're not required to. They're often due to programming errors. Put another way, think of them like potential hazards when driving your car. Checked exceptions are like road construction or bad weather. You know these might happen, so you're required to prepare for them, like checking if chains are required on a certain route. Unchecked exceptions are like running out of gas or getting a flat tire. These are things that could happen due to your own oversight. You're not legally required to constantly check your fuel gauge or tire pressure, but if these problems occur, your trip will still be disrupted. Let's take a closer look at the differences with some examples. Checked Exceptions in Java In broad terms, a checked exception (also called a logical exception) in Java is something that has gone wrong in your code and is potentially recoverable. For example, if there’s a client error when calling another API, we could retry from that exception and see if the API is back up and... --- ### Sami Atiq - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=sami-atiq --- ### Hardik "HK" Parekh - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=hardik-hk-parekh --- - [Finding items by UUID](https://rollbar.com/knowledge-base/finding-items-by-uuid/): UUID in general A universally unique identifier (UUID) is a 128-bit number used to identify information in computer systems. When... ### Angeline Junaedy - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=angeline-junaedy --- - [Using Zapier to create Zendesk tickets](https://rollbar.com/knowledge-base/using-zapier-to-create-zendesk-tickets/): Why use webhooks? Webhooks are a powerful tool to receive information from Rollbar and use in any other workflows you... ### Finbar Fleming - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=finbar-fleming --- ### Eva Zhang - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=eva-zhang --- - [Rollbar Solutions: Enabling Support Teams](https://rollbar.com/knowledge-base/rollbar-solutions-enabling-support-teams/): Overview When your application surfaces bugs, it might put your Support team in a difficult position in understanding the impact... ### Zoltán Bődi - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=zoltan-bodi --- ### What is “except Exception as e” in Python? > Wrap risky code in a try block and catch exceptions in an except block. The exception is assigned to the variable e for further use. - Published: 2024-06-24 - Modified: 2024-06-24 - URL: https://rollbar.com/blog/what-is-except-exception-as-e-in-python/ - Categories: Code Tutorials, Python - Tags: Python except Exception as e is a construct in Python used for exception handling. It allows you to catch exceptions that occur during the execution of a block of code by using a try block to wrap the code that might raise an exception, and an except block to catch and handle the exception. The Exception part specifies that any exception of this type or its subclasses should be caught, and the as e part assigns the caught exception to a variable e, which you can then use to access details about the exception. Take a look at this example: try: # Code that might raise an exception result = 10 / 0 # Raises ZeroDivisionError except Exception as e: # Handles the exception print(f"An error occurred: {e}") Running that will print: An error occurred: division by zero This is what happens step-by-step: The try block attempts to execute result = 10 / 0. Division by zero is not allowed so a ZeroDivisionError is raised. The except Exception as e block catches the ZeroDivisionError. The exception is assigned to the variable e, which contains the error message "division by zero". The print(f"An error occurred: {e}") statement prints the error message to the console. When using except Exception as e, here are a few things to keep in mind for handling exceptions effectively: Catch specific exceptions rather than all exceptions Catching all exceptions with except Exception as e can mask unexpected errors and make debugging more difficult. 💡Best Practice: Whenever possible, catch... --- ### Phillip Ramirez - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=phillip-ramirez --- - [Intelligent alerting helps you stay on top of critical errors and reduce noise in your notification channels](https://rollbar.com/knowledge-base/intelligent-alerting-helps-you-stay-on-top-of-critical-errors-and-reduce-noise-in-your-notification-channels/): Overview Discovering errors in a timely manner is crucial when it comes to fixing bugs in your product. Moreover, you... ### Christopher Seaman - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=christopher-seaman --- - [Introducing Automation-Grade Grouping](https://rollbar.com/knowledge-base/introducing-automation-grade-grouping/): Overview Proactively discover, predict, and remediate errors with Rollbar’s real-time, AI-assisted workflows! The foundation for these workflows is Automation-Grade Grouping... ### Julian Simpson - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=julian-simpson --- ### What does java.lang.RuntimeException mean? > Runtime exceptions help manage unexpected issues that arise while your application is running to avoid crashing. - Published: 2024-06-24 - Modified: 2024-07-24 - URL: https://rollbar.com/blog/java-lang-runtime-exception/ - Categories: Code Tutorials, Java - Tags: java Present in every version of Java, the java. lang. RuntimeException is an essential class that allows your application to handle unexpected problems without crashing. Runtime exceptions are exceptions only detected during the execution of your app - things like invalid user input or issues with external resources like files or networks. When an unexpected situation like those occurs, a RuntimeException can be thrown and your app can catch and handle it using a try-catch block. Simple example Imagine you have a method that divides two numbers. If you try to divide by zero, it should raise a RuntimeException. public class Main { public static void main(String args) { try { int result = divide(10, 0); System. out. println("Result: " + result); } catch (RuntimeException e) { System. out. println("Error: " + e. getMessage); } } public static int divide(int numerator, int denominator) { if (denominator == 0) { throw new RuntimeException("You can't divide by zero! "); } return numerator / denominator; } } When the divide method detects that the denominator is zero, it throws a RuntimeException. This error is then caught in the try-catch block in the main method, allowing the app to print an error message instead of crashing. What is the difference between RuntimeException and Exception in Java? An Exception represents checked exceptions that must be handled explicitly, while a RuntimeException represents unchecked exceptions that do not require explicit handling. For example, file I/O operations or database access issues are typical use cases for checked exceptions (Exception).... --- - [Reduce noise with the help of Slack notifications integration](https://rollbar.com/knowledge-base/reduce-noise-with-the-help-of-slack-notifications-integration/): Rollbar supports multiple messaging tools, where your team can get notified about errors and significant events. Integrating a messaging tool... ### An Nguyen - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=an-nguyen --- ### Renee Wells-Wood - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=renee-wells-wood --- - [Jira integration best practices](https://rollbar.com/knowledge-base/jira-integration-best-practices/): Perks of an issue tracking integration Save time and debug faster by integrating an issue tracking tool with your Rollbar... ### How to Fix Invalid SyntaxError in Python > The Python SyntaxError occurs when the interpreter encounters invalid syntax in code. Learn how to fix it. - Published: 2024-06-24 - Modified: 2024-06-24 - URL: https://rollbar.com/blog/python-syntaxerror/ - Categories: Code Tutorials, Python - Tags: Python The Python SyntaxError occurs when the interpreter encounters invalid syntax in code. When Python code is executed, the interpreter parses it to convert it into bytecode. If the interpreter finds any invalid syntax during the parsing stage, a SyntaxError is thrown. To illustrate, imagine sending a text message with autocorrect errors that change the meaning and make it incomprehensible. For example, if you type "Meet me at the park" but it sends "Meat me at the perk" the recipient will not understand the message. Similarly, if the syntax is incorrect in code, the interpreter cannot understand it. Fixing the errors is necessary for clear communication in both cases. What Causes SyntaxError Some of the most common causes of syntax errors in Python are: Missing quotes. For example, print(Hello) instead of print("Hello"). Misspelled reserved keywords. For example, writing iff instead of if. Incorrect Indentation. For example, missing required spaces or tabs. Invalid function definitions or calls. For example, missing a colon in a function definition or missing parentheses in a function call. Invalid variable declarations. For example, starting the variable name with a number or using invalid characters. Missing operators. For example, missing the + operator when trying to add two numbers. SyntaxError Examples Example One Here’s an example of a Python SyntaxError thrown due to missing quotes: print(Hello World) #Missing quotes in string In the above example, since the string “Hello World” is attempted to be printed without using quotes, a SyntaxError is thrown: File "test. py", line 1 print(Hello... --- ### Jonathan Lilienthal - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=jonathan-lilienthal --- - [Filter or Ignore Errors from Bots](https://rollbar.com/knowledge-base/filter-or-ignore-errors-from-bots/): Filter or Ignore Errors from Bots Rollbar provides a few ways to filter or ignore errors that happen in requests... - [Unknown(Script Error)](https://rollbar.com/knowledge-base/unknownscript-error/): This happens when your JS code is hosted on a different domain (i. e. a CDN). To fix, set Access-Control-Allow-Origin:... ### David Woller - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=david-woller --- ### How to Fix ValueError Exceptions in Python > The Python ValueError occurs when a function receives an argument of the correct data type but an inappropriate value. Learn how to fix it. - Published: 2024-06-24 - Modified: 2024-06-24 - URL: https://rollbar.com/blog/python-valueerror/ - Categories: Code Tutorials - Tags: Python The Python ValueError is an exception that occurs when a function receives an argument of the correct data type but an inappropriate value. This error usually occurs in mathematical operations that require a certain kind of value. To use an analogy, imagine trying to enroll an adult in a children's school. The person is a valid human, but their age is inappropriate for the setting. Similarly, a ValueError occurs when a function receives the correct type of input but with an unsuitable value. What Causes ValueError The Python ValueError is raised when an object is assigned the right data type but the wrong value for a certain operation. Some of the most common scenarios where this can happen are: If the value is invalid for the operation. For example, if a negative integer is passed to a square root operation. Performing an operation when the value does not exist. For example, trying to remove a value from a list where it does not exist. Trying to unpack more values than available. For example, trying to unpack values from a list with 5 items to 3 variables. ValueError Examples Example One Here’s an example of a Python ValueError raised when trying to perform a square root operation on a negative number: import math math. sqrt(-100) #Performing square root operation on negative number In the above example, a negative integer is passed to the math. sqrt function. Since the function expects a positive integer, running the above code raises a ValueError: Traceback... --- ### Tin Nguyen - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=tin-nguyen --- - [Spot and prioritize production errors with Versions](https://rollbar.com/knowledge-base/spot-and-prioritize-production-errors-with-versions-2/): Overview Versions feature is available for our Advanced and Enterprise plan customers as a useful addition to Deploy tracking. This... ### Atsuko Nishiguchi - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=atsuko-nishiguchi --- - [Send Log Messages to Rollbar](https://rollbar.com/knowledge-base/send-log-messages-to-rollbar/): You can send any log message to Rollbar, not just exceptions. This is especially helpful for client-side applications that don't... ### Mani Askari - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=mani-askari --- ### How to Resolve the NoClassDefFoundError in Java > NoClassDefFoundError is a Java error that occurs when the JVM is unable to find a class at runtime which was available at compile-time. - Published: 2024-06-24 - Modified: 2024-07-18 - URL: https://rollbar.com/blog/java-no-class-def-found-error/ - Categories: Code Tutorials, Java - Tags: java The NoClassDefFoundError is a runtime error in Java that occurs if the Java Virtual Machine (JVM) or a ClassLoader instance attempts to load the definition of a class but cannot find it at runtime. The class definition exists at compile-time but is not available at runtime. To explain using an analogy, it's like preparing a parcel for collection by a courier but when the courier arrives, they can't find the parcel because the directions to its location are missing. The JVM, like the courier, looks for the class definition (parcel) in the classpath (directions). If the class is not found where expected, the JVM throws a NoClassDefFoundError. What Causes NoClassDefFoundError The NoClassDefFoundError occurs in Java when the JVM is unable to find a particular class at runtime which was available at compile-time. Common causes of the class definition being unavailable at runtime are: Missing JAR file Permission issues Incorrect classpath at runtime This can happen as part of a normal method call or when creating an instance of the class using the new expression. Therefore, it can occur during the linking or loading of the unavailable class. NoClassDefFoundError Example Here’s an example of a NoClassDefFoundError thrown when a class is attempted to be loaded that is available at compile-time but not at runtime: class Vehicle { private String make; public String getMake { return make; } public void setMake(String make) { this. make = make; } } public class NoClassDefFoundErrorExample { public static void main(String args) { Vehicle vehicle =... --- ### Patrick Smyth - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=patrick-smyth --- - [Reduce Noisy Javascript Errors](https://rollbar.com/knowledge-base/reduce-noisy-javascript-errors/): Ignore noisy errors on the client-side Rollbar. js enables you to ignore errors client-side if you wish. You can filter... ### Michael Mukhin - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=michael-mukhin --- - [Multiple Production Environments](https://rollbar.com/knowledge-base/multiple-production-environments/): Rollbar requires the environment property on all error occurrences to indicate where they occurred (production ,staging , qa , etc.... ### How to Fix java.lang.StackOverflowError in Java > The java.lang.StackOverflowError is a runtime error which indicates that the application stack is exhausted. Let's fix it. - Published: 2024-06-23 - Modified: 2024-07-24 - URL: https://rollbar.com/blog/how-to-fix-java-lang-stackoverflowerror-in-java/ - Categories: Code Tutorials, Java - Tags: java The java. lang. StackOverflowError is a runtime error which indicates that the application stack is exhausted. This is usually caused by deep or infinite recursion. To put it more simply, imagine a to-do list where each task keeps adding a new sub-task to the list. If this goes on indefinitely, the list eventually becomes too long for the sheet of paper. This is essentially what happens to cause a StackOverflowError in Java, where too many recursive method calls exceed the stack limit. What Causes java. lang. StackOverflowError The java. lang. StackOverflowError occurs when the application stack continues to grow until it reaches the maximum limit. Some of the most common causes for a java. lang. StackOverflowError are: Deep or infinite recursion: If a method calls itself recursively without a terminating condition. Cyclic relationships between classes: If a class A instantiates an object of class B, which in turn instantiates an object of class A. This can be considered as a form of recursion. Memory intensive applications: Applications that rely on resource heavy objects such as XML documents, GUI or java2D classes. java. lang. StackOverflowError Example Here is an example of java. lang. StackOverflowError thrown due to infinite recursion: public class StackOverflowErrorExample { public void decrementAndPrint(int myInt) { System. out. println(myInt--); decrementAndPrint(myInt); //Recursively calling method without terminating condition } public static void main(String args) { StackOverflowErrorExample soee = new StackOverflowErrorExample; soee. decrementAndPrint(5); } } In this example, the recursive method decrementAndPrint calls itself over and over again until it reaches the... --- ### Colin Flynn - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=colin-flynn --- ### Ramon Niebla - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=ramon-niebla --- - [Keep an eye on your deploys with the help of Deploy Tracking](https://rollbar.com/knowledge-base/keep-an-eye-on-your-deploys-with-the-help-of-deploy-tracking-2/): Overview Nowadays, constant and fast deployment has become essential for your applications to keep up with the ever-changing needs of... ### How to Throw IllegalArgumentException in Java > The IllegalArgumentException is thrown to indicate an illegal or unsuitable argument passed to a method. Learn how to solve it. - Published: 2024-06-20 - Modified: 2024-07-18 - URL: https://rollbar.com/blog/how-to-throw-illegalargumentexception-in-java/ - Categories: Code Tutorials, Java - Tags: java The IllegalArgumentException is an unchecked exception in Java that is thrown to indicate an illegal or unsuitable argument passed to a method. It is one of the most common exceptions in Java. To illustrate, it's like what happens when trying to set a password in a registration system with specific requirements. If the system expects an 8 character password with at least one number and one special character and you enter "password" or "password123", the system rejects it and notifies you of the invalid input. Similarly, Java methods throw the IllegalArgumentException to reject inappropriate or incorrect arguments, ensuring the input meets the required criteria. What Causes IllegalArgumentException An IllegalArgumentException is thrown when an argument passed to a method doesn't fit within the logic of the usage of the argument. Some of the most common scenarios for this are: If the argument is out of range. For example, if a method declares an integer age as a parameter, which is expected to be a positive integer. If a negative integer value is passed, an IllegalArgumentException is thrown. If the format of the argument is invalid. For example, if a method declares a string email as a parameter, which is expected in an email address format but a regular string is passed that doesn’t match the format. If the argument is null. In such cases, the IllegalArgumentException is thrown when the method expects a non-empty object as an argument. IllegalArgumentException Example Here is an example of an IllegalArgumentException thrown when the argument... --- ### Gianina Borcean - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=gianina-borcean --- - [Jenkins](https://rollbar.com/knowledge-base/jenkins/): Tracking deployments in Jenkins will allow you to see new errors for each deployment, determine the deployment that is suspected... ### Austen Lacy - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=austen-lacy --- - [Transfer Projects Between Accounts](https://rollbar.com/knowledge-base/transfer-projects-between-accounts/): How to transfer Rollbar projects to another Rollbar Account. Includes Heroku and GitHub project transfers steps. ### Marcelo Oliveira - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=marcelo-oliveira --- ### How to Handle JavaScript Uncaught TypeError: "x" is Not a Function > The Javascript TypeError: "x" is not a function occurs when calling a function on a value or object, which is not actually a function. Learn how to fix it. - Published: 2024-06-20 - Modified: 2024-06-21 - URL: https://rollbar.com/blog/how-to-handle-uncaught-typerror-x-is-not-a-function/ - Categories: Code Tutorials, JavaScript - Tags: error-handling, error-monitoring, JavaScript The Javascript error TypeError: "x" is not a function occurs when there is an attempt to call a function on an object, which is not actually a function. To illustrate using an analogy, imagine you're in a kitchen following a recipe. The recipe says to use a blender to blend certain ingredients together but you accidentally use a juicer. When you try to blend with a juicer, it doesn't work properly since blending is not a function of the juicer. Similarly, in Javascript when you try to call a function (blend) on an object (juicer) that doesn't contain the function, the TypeError: "x" is not a function occurs. What Causes TypeError: "x" is not a function A TypeError: "x" is not a function in Javascript generally occurs in one of the following scenarios: A typo in a function call. Missing script library. When a property is called on an object like a function but is not actually a function. When calling a built-in function that expects a callback function argument, which does not exist. When the called function is within a scope that is not accessible. TypeError: "x" is not a function Examples 1. Typo A typical scenario for the TypeError: "x" is not a function to occur is when there is a typo in the called function name: var elem = document. getElementByID('ID'); Running the above code leads to the following Javascript error: TypeError: document. getElementByID is not a function The correct function name is getElementById: var elem =... --- ### Imran Rizvi - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=imran-rizvi --- - [Personal vs. Organization Accounts](https://rollbar.com/knowledge-base/personal-vs-organization-accounts/): When you sign up for Rollbar, two separate but related things are created in our system: A user, which has... ### Dmitry Mazin - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=dmitry-mazin --- - [Billing in Rollbar](https://rollbar.com/knowledge-base/billing-in-rollbar/): For both monthly and annual plans, your account will have a billing cycle that starts on the day of the... ### Chris Maki - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=chris-maki --- ### How to Fix KeyError Exceptions in Python > The Python KeyError is an exception that occurs when an attempt is made to access an item in a dictionary that does not exist. Learn how to fix it. - Published: 2024-06-20 - Modified: 2024-06-20 - URL: https://rollbar.com/blog/python-keyerror/ - Categories: Code Tutorials, Python - Tags: Python The Python KeyError is an exception that occurs when trying to access an item in a dictionary where it does not exist. The key used to access the item is not found in the dictionary, which leads to the KeyError. As an analogy, it's like trying to open a locker within a set of lockers using a code that doesn't match any of them. In such a case, the system will not be able to find a locker with the code entered and will raise an error. In the context of Python, the set of lockers represents a dictionary and the code is the key you're trying to use to access an item. If the key doesn't exist in the dictionary, Python raises a KeyError. What Causes KeyError The Python KeyError is raised when a mapping key is not found in the set of existing keys of the mapping. In Python, the most common mapping is the dictionary. When an item in a dictionary is accessed using a key, and the key is not found within the set of keys of the dictionary, the KeyError is raised. KeyError Example Here’s an example of a Python KeyError raised when trying to access a dictionary item that does not exist: employees = {"one": "John", "two": "Darren", "three": "Paul"} print(employees) #Attempt to access an item that does not exist in dictionary In the above example, the dictionary employees contains some key-value pairs. An attempt is then made to access an item from employees... --- ### Nicholas Vincent-Hill - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=nicholas-vincent-hill --- - [Bash](https://rollbar.com/knowledge-base/bash/): Use Curl to send an HTTP POST: ACCESS_TOKEN=POST_SERVER_ITEM_ACCESS_TOKEN ENVIRONMENT=production LOCAL_USERNAME=whoami REVISION=git rev-parse --verify HEAD curl https://api. rollbar. com/api/1/deploy/ -F access_token=$ACCESS_TOKEN... ### Gabriella Papp - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=gabriella-papp --- - [Enable GitHub Organization Access for Rollbar](https://rollbar.com/knowledge-base/enable-github-organization-access-for-rollbar/): Sometimes the GitHub repo you want isn't showing up in the dropdown in our UI. If typing the repo name... ### How to Catch and Fix NullPointerException in Java > The java.lang.NullPointerException occurs when trying to use a variable that does not point to an object and refers to nothing or null. - Published: 2024-06-19 - Modified: 2024-07-18 - URL: https://rollbar.com/blog/how-to-catch-and-fix-nullpointerexception-in-java/ - Categories: Code Tutorials, Java - Tags: java The java. lang. NullPointerException is a runtime exception in Java that occurs when trying to use a variable that does not point to an object and refers to nothing or null. To use an analogy, it’s like trying to send a letter without specifying the recipient's address. Without an address, the letter cannot be delivered. Similarly, if a variable in Java doesn't point to an actual object, the program gets confused and throws a NullPointerException. What Causes NullPointerException The NullPointerException occurs when an uninitialized variable is used. Such a variable has no object reference and does not point anywhere. Therefore, it has a null value in Java and using it throws a NullPointerException. Some of the most common scenarios for a NullPointerException are: Calling methods on a null object Accessing a null object’s properties Accessing an index element (like in an array) of a null object Passing null parameters to a method Incorrect configuration for dependency injection frameworks like Spring Using synchronized on a null object Throwing null from a method that throws an exception NullPointerException Example Here is an example of a NullPointerException thrown when the length method of a null String object is called: public class NullPointerExceptionExample { private static void printLength(String str) { System. out. println(str. length); //Trying to call a method on a null object } public static void main(String args) { String myString = null; printLength(myString); } } In this example, the length method of a String object is called without performing a null check.... --- ### Lubos Parobek - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=lubos-parobek --- ### Mike French - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=mike-french --- - [Filtering Javascript errors by language](https://rollbar.com/knowledge-base/filtering-javascript-errors-by-language/): If your application has an international user base, you may be receiving Javascript error reports in the local language of... - [Hiding Third-Party Code](https://rollbar.com/knowledge-base/hiding-third-party-code/): When using libraries or frameworks you will often have large portions of well-tested third party code that is unlikely to... ### Introducing IP Safelist for our API access > We are excited to announce the expansion of our security controls by introducing IP Safelist for our API access. This new feature extends the advanced security options available in our Enterprise packages. - Published: 2024-06-12 - Modified: 2024-06-12 - URL: https://rollbar.com/blog/ip-safelist-api-access/ - Categories: product - Tags: Usage Notifications Introducing IP Safelist for our API access Simplifying Your Debugging Experience At Rollbar, we understand that security is not just a feature but a cornerstone of modern enterprise operations. As part of our ongoing commitment to providing robust security solutions, we are excited to announce the expansion of our security controls by introducing IP Safelist for our API access. This new feature extends the advanced security options available in our Enterprise packages. Previously, our Enterprise customers enjoyed enhanced security features, including customizable login attempt limits, tailored password settings, session expiration controls, and the ability to restrict UI access via IP Safelist for VPN connections. Today, we are taking these capabilities a step further by enabling the Safelist feature for API access as well. With the new IP Safelist functionality, you can control UI and API access by specifying allowed IP addresses. This enhancement ensures that only requests from trusted IP addresses can access your API, adding a layer of security to protect your critical data. It's a straightforward yet powerful way to manage who can interact with your systems, significantly reducing the risk of unauthorized access. Implementing the IP Safelist is seamless. Our Enterprise owners can easily add and manage IP addresses through their existing Advanced Security Controls settings in your Account Settings. Whether managing a small team or a large distributed workforce, this feature allows you to secure your applications precisely how you need them. Secure your application's access now with Rollbar's enhanced IP Safelist. For more information on... --- ### Rachel Foster - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=rachel-foster --- - [Disable Two Factor Authentication](https://rollbar.com/knowledge-base/disable-two-factor-authentication/): If you no longer have access to your 2FA device and do not have your recovery codes, Rollbar cannot disable... ### Erwin Tung - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=erwin-tung --- - [Preventing Client-Side Access Token Abuse](https://rollbar.com/knowledge-base/preventing-client-side-access-token-abuse/): Unfortunately there is no silver bullet here -- all analytics services have this problem too (Google Analytics, Mixpanel, etc. ).... ### Warmup Inbox's Story with Rollbar > At PLUM, we focus on crafting custom software solutions tailored to specific needs. Our projects range from helping startups launch their initial products to assisting established enterprises in scaling and enhancing their software infrastructure. - Published: 2024-06-10 - Modified: 2024-06-10 - URL: https://rollbar.com/blog/warmupinbox/ - Categories: company, User Stories - Tags: User Stories Warmup Inbox automatically raises your email sending reputation through a network of inboxes that talk to each other. 1. Describe your company and the service(s) offered. WarmupInbox is a tool to help improve email deliverability. The tool increases your chances for your email to be in the main inbox rather than the promotion tab or worse the spam folder. 2. What are you most passionate about in your current and/or past roles? Email deliverability is an ever-evolving field. There are frequent updates from big players like Google and Yahoo. It is challenging to stay on top of the news but it is also really interesting. We have to iterate really quickly about product and marketing messaging. Rollbar is actually helping us iterate quickly by making sure we aren’t breaking things. 3. Is there anything in particular about Rollbar that has kept you a loyal user? Ease of use and smooth integration with Slack, and easy to read dashboards, which allows to solve the most important defects in accordance with the Pareto principle. Visit Fabian Maume's LinkedIn Page --- ### Paul Moriarty - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=paul-moriarty --- - [Source Map Troubleshooting](https://rollbar.com/knowledge-base/source-map-troubleshooting/): Rollbar applies source maps to exceptions from minified Javascript so you can view the original line and character numbers for... ### Steve Beane - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=steve-beane --- ### How to Fix the Array Index Out Of Bounds Exception in Java > To avoid this exception, ensure that your index values are within the valid range, from 0 to the length of the array minus one. - Published: 2024-05-30 - Modified: 2024-05-31 - URL: https://rollbar.com/blog/how-to-fix-the-array-index-out-of-bounds-excepiton-in-java/ - Categories: Code Tutorials, Java - Tags: java The ArrayIndexOutOfBoundsException is a runtime exception in Java that occurs when an array is accessed with an illegal index. The index is either negative or greater than or equal to the size of the array. Let’s put that in simpler terms with an analogy. Imagine you have a row of five boxes lined up in front of you. Each box has a number on it. If you want to put a toy in one of these boxes, you have to say which box number you're putting it in. For example, "Put this toy in box number 2. " But what if you say, "Put this toy in box number 6"? There's no box number 6 because you only have five boxes. So, it's like asking for something that doesn't exist, and that causes a problem. Think of ArrayIndexOutOfBoundsException then as Java's way of saying, "Hey, that box number doesn't exist! " What Causes ArrayIndexOutOfBoundsException The ArrayIndexOutOfBoundsException is one of the most common errors in Java. Since a Java array has a range of , when an attempt is made to access an index outside this range, an ArrayIndexOutOfBoundsException is thrown. Besides arrays, this exception can also happen with strings, ArrayLists, and any other data structure that uses indexing to access elements. ArrayIndexOutOfBoundsException Example Here is an example of a ArrayIndexOutOfBoundsException thrown when an attempt is made to retrieve an element at an index that falls outside the range of the array: public class ArrayIndexOutOfBoundsExceptionExample { public static void main(String args)... --- - [Improve your Error Grouping with the help of Rollbar](https://rollbar.com/knowledge-base/improve-your-error-grouping-with-the-help-of-rollbar/): Overview Congratulations on setting up your Rollbar projects! You took a step towards more visibility and an easier flow when... ### Michael "MC" McCullough - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=michael-mc-mccullough --- - [Manual merging vs. Custom fingerprints](https://rollbar.com/knowledge-base/manual-merging-vs-custom-fingerprints/): Overview Rollbar has a pretty sufficient default grouping algorithm, that automatically analyzes the stack traces of the incoming occurrences and... ### David Basoco - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=david-basoco --- ### How to Fix the ClassNotFound Exception in Java > The Java ClassNotFoundException occurs when the JVM tries to load a class but does not find it in the classpath. Learn the three steps you can take to fix it. - Published: 2024-05-26 - Modified: 2024-05-27 - URL: https://rollbar.com/blog/how-to-resolve-classnotfoundexception-in-java/ - Categories: Code Tutorials, Java - Tags: error-handling, exception monitoring, java When you run a Java program, the Java Virtual Machine (JVM) needs to load various classes to execute the program. The java. lang. ClassNotFoundException occurs when the JVM tries to load a particular class but doesn’t find it in the classpath. One of the most common reasons for the ClassNotFoundException is missing third-party libraries. Double-checking that all necessary dependencies are included in the classpath and that the classpath is correctly configured can prevent this exception. What Causes ClassNotFoundException The classpath is a parameter that tells the JVM and the Java compiler where to look for user-defined classes and packages when running a program. When you use any of the following methods to load a class but the JVM can’t find it in the classpath, java. lang. ClassNotFoundException is thrown. Class. forName ClassLoader. findSystemClass ClassLoader. loadClass If you get the ClassNotFoundException but are sure the class is there, what probably happened is one of these: The classpath might be incorrectly set up. The JAR file or directory containing the required classes is incorrect or the classpath is overridden by a start-up script or build configuration. Typos in the class name specified in methods like Class. forName If the required class depends on other classes that are not present in the classpath, it can lead to the ClassNotFoundException. This is common in complex applications with many dependencies. Sometimes, using different versions of a library can cause this exception if the class you are trying to load is not present in the version... --- - [Streamline your items workflow](https://rollbar.com/knowledge-base/streamline-your-items-workflow-2/): Overview Chances are you have multiple incoming occurrences in your Rollbar projects, grouped into items, appearing in your Item list,... - [How to Handle “IndexError: index out of range in self” in PyTorch](https://rollbar.com/blog/how-to-handle-index-out-of-range-in-self-pytorch/): Incorporate index validation, masking strategies, and stringent data validation in your PyTorch code to prevent or avoid this error altogether. ### Francesco Crippa - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=francesco-crippa --- - [How to Handle the "localStorage is not defined" Error in JavaScript](https://rollbar.com/blog/how-to-handle-localstorage-is-not-defined-error-javascript/): From unsupported browsers to server-side JavaScript environments, understand the root causes and learn three ways to handle this error effectively. - [Auto-upgrading in Rollbar](https://rollbar.com/knowledge-base/auto-upgrading-in-rollbar/): If you have a paid subscription to Rollbar, then you can choose to automatically upgrade your account whenever you reach... ### Anthony Tran - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=anthony-tran --- - [How to Resolve “ReferenceError: Buffer is not defined” in Node.js](https://rollbar.com/blog/how-to-resolve-referenceerror-buffer-is-not-defined/): Check you're running the script with Node, not in the browser, and that you've mentioned the Buffer object before use. Also use the latest Node version. ### How to Resolve Java.lang Exceptions > Understand and resolve common Java.lang exceptions with this comprehensive guide, including NullPointerException, IllegalArgumentException, and more. - Published: 2024-05-24 - Modified: 2024-05-24 - URL: https://rollbar.com/blog/how-to-resolve-java-lang-exceptions/ - Categories: Code Tutorials, Java - Tags: java Java. lang exceptions are some of the most commonly encountered exceptions in Java programming. As one of the foundational packages in the Java Standard Library, you don't even explicitly import java. lang in your code; it’s automatically imported into every Java program. Thanks to java. lang you get essential classes such as String, Math, and System, among others. You also get a variety of base classes for handling exceptions and errors. The many java. lang exceptions reflect the complexity of Java itself, and each provides detailed feedback to address specific issues. This guide serves as a central hub summarizing what the most common java. lang exceptions mean and linking to our in-depth blog posts that provide detailed solutions and best practices. Understanding these exceptions is not just about fixing errors but about gaining deeper insights into the mechanics of your codebase. java. lang. NullPointerException A NullPointerException occurs when you try to use an object reference that has not been initialized. This is one of the most common exceptions in Java. It’s crucial to check for null before performing operations on objects to avoid this exception. Learn More: How to Catch and Fix NullPointerException in Java java. lang. ArithmeticException An ArithmeticException is thrown when an exceptional arithmetic condition has occurred, such as division by zero. Properly handling mathematical operations and validating input can prevent this. Learn More: Java ArithmeticException java. lang. IllegalArgumentException This exception is thrown to indicate that a method has been passed an illegal or inappropriate argument. Validating method... --- - [GDPR & Rollbar](https://rollbar.com/knowledge-base/gdpr-rollbar/): Rollbar is compliant with GDPR and can serve as a data processor for customers who control data from individuals in... ### Kay Xiong - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=kay-xiong --- ### Sharrin Fuller - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=sharrin-fuller --- - [Could not compare commits between SHAs ...](https://rollbar.com/knowledge-base/could-not-compare-commits-between-shas/): Occasionally when using Rollbar's Deploy Tracking feature, you may see a message such as the following: Could not compare commits... ### Artur Moczulski - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=artur-moczulski --- ### How to Handle java.lang.IndexOutOfBoundsException > The IndexOutOfBoundsException is thrown when an index used in arrays, lists, or strings is not valid. Fixing it depends on the situation that led to it. - Published: 2024-04-30 - Modified: 2024-07-24 - URL: https://rollbar.com/blog/how-to-handle-java-lang-index-out-of-bounds-exception/ - Categories: Code Tutorials, Java - Tags: java The java. lang. IndexOutOfBoundsException in Java is thrown when an index used in arrays, lists, or strings is not valid. A valid index must be a number from 0 up to one less than the total number of items. For example, in a list of 3 items, the valid indices are 0, 1, and 2. Here’s a quick example: List list = new ArrayList(Arrays. asList(1, 2, 3)); int element = list. get(3); // This will throw IndexOutOfBoundsException The error message you’d get would look something like this: Exception in thread "main" java. lang. IndexOutOfBoundsException: Index: 3, Size: 3 Here are some other common ways the IndexOutOfBoundsException might be thrown: Sublist Operations: When creating a sublist from a larger list, if the start or end index is out of bounds. For example, list. subList(-1, 3) or list. subList(2, 10) where the list size is less than 10. String Manipulation Methods: Beyond just accessing characters, methods like substring, charAt, and split can throw this exception if the indices provided are out of range. Vector or Stack: Other data structures in the Java Collections Framework like Vector and Stack can also throw this exception when trying to access elements with an invalid index. Custom Data Structures: Developers can implement custom data structures that use indexing, and they may throw IndexOutOfBoundsException to indicate misuse, such as accessing elements not present in the structure. You may also see StringIndexOutOfBoundsException and ArrayIndexOutOfBoundsException, which are more specific subtypes of the IndexOutOfBoundsException, indicating out-of-bounds conditions for strings and... --- - [Your Tokens, Your Control](https://rollbar.com/blog/your-tokens-your-control/): A New UI That Works as Fast as You Do In today’s fast-paced development environment, managing your project access tokens... ### Andrey Kornich - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=andrey-kornich --- - [Brian's story with Rollbar](https://rollbar.com/blog/brians-story-with-rollbar/): Rollbar enabled our small team to support a large number of client applications in production. Their monitoring software works initially with almost no configuration and also allows for detailed customization for our clients at scale. We have stuck with rollbar on other stacks beyond Rails including iOS and Android as have a great, easy to use interface that always has the information devs needs to debug production issues. - [Get more insights and control over your errors](https://rollbar.com/knowledge-base/get-more-insights-and-control-over-your-errors/): Overview In this article, we will walk you through all the perks of integrating GitHub source control with your Rollbar... ### Mary Lee Olson - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=mary-lee-olson --- - [Sébastien's story with Rollbar](https://rollbar.com/blog/sebastiens-story-with-rollbar/): But what's kept me a loyal Rollbar user? It's the trustworthiness of the tool. In an age where alert fatigue is real, Rollbar's machine learning-driven grouping ensures we only get alerts that matter. The seamless integrations with other tools and the detailed, actionable alerts mean we can resolve issues faster, ensuring our users always get the best experience. ### Sergey's story with Rollbar > From the very beginning, Rollbar has been integral to our operations, utilized even prior to our official launch. Our commitment to delivering exceptional service to our clients relies on the efficacy of our alerting and monitoring tools, with Rollbar being an important component. - Published: 2024-04-23 - Modified: 2024-04-23 - URL: https://rollbar.com/blog/sergeys-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Sergey Belogurov Sergey has now been using Rollbar for 100 months! 1. My Role I've worked for a marketing data analytics company called Attribution (www. attributionapp. com) for 8 years now. My role as Tech Lead is to ensure reliable operation of our services and continued delivery of new features with the help of the development team. Attribution’s mission is to make marketing performance more transparent. Marketers spend much of their time trying to understand what marketing efforts are working and which are not. The Attribution marketing analytics platform provides marketers with the insights to understand the cost, revenue and profit resulting from marketing programs by channel and down to the individual customer level so they can make better decisions, faster and with more confidence than ever before. 2. My Passion in the Role From early ages, I was always passionate about all types of tech: the first one being wooden bricks, I guess. So it's no surprise that over the years it transformed into the profession of my life. I like to build things and what could be more fun than building software in digital era? Don't be afraid to experiment and keep learning. The world of technology is constantly evolving, and there's always something new to discover. Embrace the challenges, and who knows, maybe your next creation will change the world! 3. The Rollbar Experience If everything always worked perfectly, Rollbar wouldn't be necessary, but in reality, it's a vital tool that works tirelessly behind the scenes for... --- ### Jessica Hsieh - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=jessica-hsieh --- - ["There was a problem trying to connect to your Asana account." message appears](https://rollbar.com/knowledge-base/there-was-a-problem-trying-to-connect-to-your-asana-account-message-appears/): This warning message typically appears because the Rollbar app is having problems accessing the Asana API due to an outage... ## Press - [Nacif's Story with Rollbar](https://rollbar.com/blog/nacif-story-with-rollbar/): Comprising a team of skilled software engineers, designers, and project managers, they have successfully developed multiple web applications for clients on all 6 continents. Leveraging technologies such as NodeJS, Ruby, Docker, and AWS, they emphasize rapid, high-quality, and efficient software development. The team believes in the combined strength of individual expertise and collaborative effort. They offer tailored solutions by understanding a client's business needs and are open to new collaborations. ### Letania Ferreira - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=letania-ferreira --- - [PLUM's Story with Rollbar](https://rollbar.com/blog/plum-story-with-rollbar/): At PLUM, we focus on crafting custom software solutions tailored to specific needs. Our projects range from helping startups launch their initial products to assisting established enterprises in scaling and enhancing their software infrastructure. ### How to Fix Unterminated String Literals > In other words, you probably forgot a closing quotation mark somewhere. This causes an error because the compiler doesn't know where your string ends. - Published: 2024-04-22 - Modified: 2024-10-09 - URL: https://rollbar.com/blog/how-to-fix-unterminated-string-literals/ - Categories: Code Tutorials - Tags: c++, java, JavaScript, PHP, Python, ruby Imagine you want to leave a note for someone. You write the message on a piece of paper and put it in an envelope. The envelope around your note keeps the message contained and separate from other things. It's the same idea with terminating string literals. A string literal is like the note you wrote, while terminating it is like sealing the envelope. Here's an example: "Hello, world! " The phrase "Hello, world! " is the string literal, while the double quotation marks tell the computer where the string begins and ends. An unterminated string literal then would be like: "Hello, world! See the missing closing quotation mark? When a string literal is not closed properly, it confuses the compiler or interpreter, which expects every opening quote to have a corresponding closing quote. The result is an error that can halt the execution of your program and can sometimes be tricky to spot, especially in longer blocks of code. In this post, we'll explore how unterminated string literals manifest in popular programming languages like Python, Java, JavaScript, C#, PHP, and Ruby. You'll learn not only how to identify but also how to resolve these common yet troublesome coding errors. Unterminated String Literals in Python When you run code like print("Hello, world! ), Python will throw a SyntaxError because it reached the end of the line and couldn't find the closing quotation mark. The error message looks like: SyntaxError: EOL while scanning string literal Here, EOL stands for "End Of Line.... --- - [Saved Views](https://rollbar.com/blog/saved-views/): We are introducing the ability to store a collection of applied filters as a named Saved View, so that users can quickly switch between different configured views of their items. ### Vijay Selvaraj - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=vijay-selvaraj --- - [How to Rotate Your Tokens](https://rollbar.com/blog/rotate-tokens/): Before we dive into the specifics, let's understand what regenerating a token means. When you regenerate a token, you maintain the same scope(s), rate limits, and names. What changes is the access key and the created at date. We have added this to the name column so that you can quickly tell which access tokens are new. This will allow you to swiftly rotate tokens without going through the process of creating a new one. - [SafetyDetectives - Interview with Brian Rue - CEO and Co-founder at Rollbar](https://rollbar.com/press/safetydetectives-interview-with-brian-rue-ceo-and-co-founder-at-rollbar/): Inter ### Renáta Tamási-Irsai - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=renata-tamasi-irsai --- - [Next.js vs. React Performance](https://rollbar.com/blog/next-js-vs-react-performance/): This performance comparison looks at rendering, static site generation, code splitting, and SEO. Make an informed choice for your frontend framework. ### Robin's story with Rollbar > From the very beginning, Rollbar has been integral to our operations, utilized even prior to our official launch. Our commitment to delivering exceptional service to our clients relies on the efficacy of our alerting and monitoring tools, with Rollbar being an important component. - Published: 2024-04-18 - Modified: 2024-04-18 - URL: https://rollbar.com/blog/robins-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Robin Dunlop Software Business Owner     Robin has now been using Rollbar for 103 months! 1. My Role I am now self-employed. I am a software consultant for various clients, I work mostly in a maintenance capacity. 2. My Passion in the Role I am passionate about maintenance. I have enough experience that I think that large re-writes are generally a bad idea. Identifying and fixing issues on existing systems are more important than replacing the system wholly. 3. The Rollbar Experience It works, it's easy to integrate, it's notification system (through email) with grouping works well (usually... sometimes the grouping is not quite right, but I haven't taken the time to figure out how to fix that on my end) --- - [How to Fix “IndexError: List Assignment Index Out of Range” in Python](https://rollbar.com/blog/how-to-fix-indexerror-list-assignment-index-out-of-range-python/): Think of it like trying to drop a letter into a non-existent mailbox. The index you are trying to use for assignment lies outside the valid index range of the list. - [Rollbar Research Shows Developers Feel Most Productive When Creating Better Quality Code](https://rollbar.com/press/rollbar-research-shows-developers-feel-most-productive-when-creating-better-quality-code/): SAN FRANCISCO--(BUSINESS WIRE)--New research from Rollbar, provider of real-time error monitoring Software as a Service, indicates that nearly a third... - [How to Fix the “Variable Might Not Have Been Initialized“ Error in Java](https://rollbar.com/blog/how-to-fix-variable-might-not-have-been-initialized-error-java/): This error occurs when a variable in Java is used without assigning a value to it. Learn how to resolve it. - [Item Detail Page Updates](https://rollbar.com/blog/item-detail-updates/): We’ve been listening to all the great feedback we’ve received on the new item detail page, and we’re pushing changes to help make investigating and understanding Rollbar items easier, quicker, and more efficient.The most visible change is that the context graphs have been moved to a single full-width view on the desktop so that you can immediately see the patterns of when occurrences happened, helping to spot patterns in behavior that can give insights into causes. ### Benoit's story with Rollbar > From the very beginning, Rollbar has been integral to our operations, utilized even prior to our official launch. Our commitment to delivering exceptional service to our clients relies on the efficacy of our alerting and monitoring tools, with Rollbar being an important component. - Published: 2024-04-16 - Modified: 2024-04-16 - URL: https://rollbar.com/blog/benoits-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Benoit Tremblay Chief Technology Officer Benoit has now been using Rollbar for 100 months! 1. My Role I work for UEAT Technologies, an ordering platform for restaurants. I am managing the engineering team that is building the online ordering and self-serving kiosk. 2. My Passion in the Role I am not only proud of the quality of the product that we built, I am even more proud of the amazing team of engineers that we built. We try as hard as we can to foster teamwork and I couldn't be more proud of my team. 3. The Rollbar Experience Rollbar is amazing at tracking issues, making it easy to get alerts and find information on how to reproduce them. We tried consolidating all our observability tools within Google Cloud but Rollbar saves us so much time, especially on the frontend projects, we will probably keep it forever. --- - [New Item List](https://rollbar.com/blog/new-item-list/): We are proud to announce that we are starting to roll out access to the new version of the item list page. The new page has been redesigned, refreshed and rebuilt from scratch; the fresh new look and feel is mobile friendly and also brings a number of immediate new benefits compared to the legacy page. - [Rollbar Secures $11 Million Series B To Help Engineering Teams Release More Often](https://rollbar.com/press/rollbar-secures-11-million-series-b-to-help-engineering-teams-release-more-often/): SAN FRANCISCO, CA - March 4, 2020 -- Rollbar, provider of real-time error monitoring Software as a Service, today announces... ### Árpád Tamási - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=arpad-tamasi --- - [Alfredo's story with Rollbar](https://rollbar.com/blog/alfredos-story-with-rollbar/): One primary reason we utilize Rollbar is its ability to provide real-time feedback as soon as we deploy code to production. Aligned with the DevOps culture, we encourage our teams to deploy frequently, experiment, and embrace risks. Rollbar has proven invaluable in swiftly tracking errors in our production environment. Its feature allowing us to attach user identifiers empowers us to proactively reach out to affected customers once we've addressed bugs. Furthermore, Rollbar's ease of integration is unmatched, making it a seamless fit across all Audiense projects. ### Dániel Poroszkai - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=daniel-poroszkai --- - [Item Summarization](https://rollbar.com/blog/item-summarization/): Our new item summarization feature introduces a more profound complexity accessible through two areas - the new summary tab and the typicality value found within the details tab. The summary data provides an overview of the data found within each parameter value, while the typicality value indicates how typical an individual occurrence’s parameter is within all the occurrences in the item. While these elements hold the potential for greater insight, the sheer volume of occurrences and the varying nature of parameters can create a maze of information. This may lead to missed patterns, incorrect interpretations, or extended investigation time. ### Pay directly from your bank account > Pay for your Rollbar subscription directly from your bank account, thanks to ACH payments! This is for customers in the United States looking for a simple, more direct way to handle subscription payments. - Published: 2024-03-29 - Modified: 2024-03-29 - URL: https://rollbar.com/blog/ach-payment-support/ - Categories: product You asked, and we listened. Now it’s here. Pay for your Rollbar subscription directly from your bank account, thanks to ACH payments! This is for customers in the United States looking for a simple, more direct way to handle subscription payments. What is ACH and why would I use it? ACH payments are electronic payments made through the Automated Clearing House network, a secure system that connects all U. S. financial institutions. They’re secure and fast, and sometimes easier than a usual credit payment. As with our credit cards, it's a set-it-and-forget-it way to keep your Rollbar subscription up and running. How to Switch to ACH Payments Switching to ACH payments is straightforward. Account owners can navigate to the 'Payment Details' section within the Rollbar settings. From there, clicking the 'Change Payment Method' button will allow you to select ACH as your preferred payment method. Once you've entered your bank account details and saved your settings, future payments will be automatically deducted from your bank account, making your payment process smoother and hassle-free. Tell Us What You Think! This new feature is all about making your life easier. If you have questions or need a hand setting things up, our support team is here to help. And we’re always here for your feedback, too. Do you have ideas, or thoughts, or just wanna chat about how we can make Rollbar even better for you? Shoot us an email at product@rollbar. com. Thanks for being such an awesome part of the... --- - [React.js vs. Next.js: Which Framework is Better, and When?](https://rollbar.com/blog/react-js-vs-next-js/): In the ever-evolving world of web development, staying stagnant isn’t an option. Learn the pros and cons of these two giants of front-end frameworks. - [New UX From Rollbar Takes The Hassle Out Of Monitoring And Debugging Errors In Microservices](https://rollbar.com/press/new-ux-from-rollbar-takes-the-hassle-out-of-monitoring-and-debugging-errors-in-microservices/): Centralized Realtime View of Errors Helps Companies Deliver Better Customer Experiences SAN FRANCISCO – December 16, 2019 - Rollbar, provider... ### András Horváth - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=andras-horvath --- - [How to Integrate ChatGPT with React](https://rollbar.com/blog/how-to-integrate-chatgpt-with-react/): Unlock the potential of AI in your React apps. From signing up to the OpenAI API to writing React code, our step-by-step tutorial has got you covered. - [Rollbar Announces First Error Monitoring Solution For Salesforce Apex Platform](https://rollbar.com/press/rollbar-announces-first-error-monitoring-solution-for-salesforce-apex-platform/): Four Million Salesforce Developers Can Now Find and Fix Errors in Apex Apps in Real-Time SAN FRANCISCO – November 13,... - [Diego's story with Rollbar](https://rollbar.com/blog/diegos-story-with-rollbar/): Having readily available, almost plug-and-play libraries to add Rollbar in our apps, and being rock solid for all these years it's what seals the deal for me. Also, the ability to easily connect Rollbar to our monitoring system and alerting is one of the most helpful things that it provides for us. ### How to Fix a Circular Import in Python > An ImportError (most likely due to a circular import) happens when two or more modules depend on each other to function, creating a loop in the import statements. - Published: 2024-03-25 - Modified: 2025-03-17 - URL: https://rollbar.com/blog/how-to-fix-circular-import-in-python/ - Categories: Code Tutorials, Python - Tags: Python Think of two pieces of code (let's call them A and B) that need each other to work. A says, "I need B to do my job," and at the same time, B says, "I need A to do my job. " But if A is waiting for B to work, and B is waiting for A to work, neither can start working. This "waiting on each other" situation causes Python to get stuck and throw a circular import error. Example Here’s a real life example of this error message: importerror: cannot import name 'db' from partially initialized module 'app' (most likely due to a circular import) This indicates that at some point in the code, there's an attempt to import an entity named db from a module named app. What does the error actually mean? The term partially initialized module 'app' means that when the import of db is attempted, the module app hasn't been fully loaded yet. Python needs to execute the entire body of a module to consider it fully initialized. If this process is interrupted or made conditional by a circular dependency, not all definitions within the module will have been executed, leading to this partial initialization problem. The error hints at a circular import being the likely culprit. The phrase (most likely due to a circular import) means that app might be trying to use something from another module, which in turn, directly or indirectly, tries to import app again (or something from app). Python... --- - [Sam's story with Rollbar](https://rollbar.com/blog/sam-story-with-rollbar/): I've used Rollbar in all my apps for 10+ years. What is great about Rollbar is that it works just as well for a relatively simple web app like Addressable as it does for complex, enterprise web apps like ReadyTech. - [Rollbar to Offer Its Error-Monitoring Solution on Google Cloud Platform Marketplace](https://rollbar.com/press/rollbar-to-offer-its-error-monitoring-solution-on-google-cloud-platform-marketplace/): SAN FRANCISCO - April 9, 2019 -- Rollbar, provider of real-time error monitoring Software as a Service, announced today its... - [How to Fix the “List Index Out of Range” Error in Python Split()](https://rollbar.com/blog/how-to-fix-list-index-out-of-range-in-python/): When accessing an index that does not exist within the valid range of entries in a list in Python, the "List Index Out of Range" exception is raised. ### Ibrahim's story with Rollbar > From the very beginning, Rollbar has been integral to our operations, utilized even prior to our official launch. Our commitment to delivering exceptional service to our clients relies on the efficacy of our alerting and monitoring tools, with Rollbar being an important component. - Published: 2024-03-22 - Modified: 2024-04-15 - URL: https://rollbar.com/blog/ibrahim-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Ibrahim Menem Co-Founder at Stomio     Ibrahim has now been using Rollbar for 100 months! 1. My Role I am Ibrahim Menem, co-founder of Stomio. io, a cutting-edge voice-of-customer platform dedicated to empowering product teams in crafting exceptional products. Our platform equips teams with great tools to gather customer feedback and execute top-tier beta programs effectively. Stomio was founded in 2021, with roots spanning from San Francisco, CA to Madrid, Spain. 2. My Passion in the Role From the very beginning, Rollbar has been integral to our operations, utilized even prior to our official launch. Our commitment to delivering exceptional service to our clients relies on the efficacy of our alerting and monitoring tools, with Rollbar being an important component. We integrate it to Stomio's production and staging environments and every exception report undergoes meticulous review, enabling us to proactively address any potential issues before they impact our clients. Moreover, Rollbar is connected to our engineering slack channel, ensuring that the entire team remains promptly informed about any emerging issues. 3. The Rollbar Experience We chose Rollbar because we already used and liked it from previous jobs. After a quick comparison with other options in the market, we found that Rollbar's free plan was really generous and was perfect for our traffic at that moment, once we started to have higher traffic volume we changed to a paid plan. --- - [Nicholas's story with Rollbar](https://rollbar.com/blog/nicholas-story-with-rollbar/): Rollbar continues to be an invaluable tool in my day to day work at AppFolio. I have specifically enjoyed their responsiveness when I have encountered issues with the product. Recently, I was most impressed with Rollar's UI redesign as it showed a dedication to providing the best possible user experience. I often tell the story of when Rollbar first released the new UI that I encountered a bug and reported it on a Sunday to then have that bug fixed and in production the very next day! - [Rollbar Acquires Hungary-Based Samebug](https://rollbar.com/press/rollbar-acquires-hungary-based-samebug/): SAN FRANCISCO and BUDAPEST, February 25, 2019 -- Rollbar, provider of real-time error monitoring Software as a Service, announced today... - [André story with Rollbar](https://rollbar.com/blog/andre-story-with-rollbar/): Most of our applications use Ruby. Adding Rollbar to an application and seeing errors on the UI or sending notifications to our Slack channels is plug-and-play. It just works. - [Nick's story with Rollbar](https://rollbar.com/blog/nicks-story-with-rollbar/): I am able to quickly and easily see what is going wrong with the platform and trace the errors across multiple environments when needed. A quick glance at the dashboard or items list can tell me if a deploy went smoothly, if the system is having some broader issues, or if users may be experiencing a degraded experience. - [A Rollbar felvásárolja a Samebugot](https://rollbar.com/press/rollbar-acquires-hungary-based-samebug-hu/): San Francisco & BUDAPEST, 25 február 2019 -- A szoftverhibák valós idejű monitorozását végző szoftvercég, a Rollbar felvásárolja a magyarországi... ### How to Fix java.lang Illegal Argument Exception Unsupported Class File Major Version 61 > The error is Java's way of saying, "I can't run this class because it was built with a version of Java that's newer than me." It's time to upgrade Java. - Published: 2024-03-20 - Modified: 2024-11-05 - URL: https://rollbar.com/blog/unsupported-class-file-major-version-61-error-in-java/ - Categories: Code Tutorials, Java - Tags: java The "Unsupported class file major version 61" error in Java means you're trying to run a Java program that's too advanced for the version of Java you have installed. To fix this, either update your Java to version 17 or newer, otherwise recompile the program with an older Java version that matches your runtime environment. This error often occurs when using libraries, frameworks, or tools that internally check class file versions and throw an IllegalArgumentException if they encounter a version they don't support. What’s “major version 61” mean? Each compiled Java class file contains metadata, including a "major version number," which indicates the version of the Java Development Kit (JDK) used to compile that class file. This version number helps the Java Virtual Machine (JVM) to identify whether it can support running the class file based on the JVM's own version. "Major version 61" refers to the internal version number used by Java to represent Java SE 17. Since you see this version number in your error, it means your current Java runtime environment is older than Java 17 and you need to update to Java 17 or higher to run the class file without issues. How to fix the error by updating your version of Java Updating Java to a newer version will solve compatibility issues and allow you to run applications compiled with newer JDK versions. Click the button below to go to Oracle’s website and install the latest version so you can run your program without this... --- - [David's story with Rollbar](https://rollbar.com/blog/davids-story-with-rollbar/): I've used Rollbar for over 5 years now, across different roles and when I switched positions, it was one of the first tools I set up. It's enabled us to move quickly, secure in the knowledge that if any errors occur we will be the second to know.We're big fans of the slack integration -- and our incident response team leverages that heavily. - [Series A Funding](https://rollbar.com/press/series-a-funding/): ## Testimonials - [Sebastian's story with Rollbar](https://rollbar.com/blog/sebastians-story-with-rollbar/): Over the years, Rollbar has been a progressive partner, constantly evolving and improving with new features and better UX. I love the way we're able to integrate Rollbar as part of our engineering processes and with our other tools, to streamline our operations. - [When to Use Try-Except vs. Try-Catch](https://rollbar.com/blog/when-to-use-try-except-vs-try-catch/): Python uses try-except, whereas languages like Java and C++ use try-catch. Here are the parallels and discrepancies you need to know to master both. ### Removing Support for TLS 1.0 and 1.1 Protocols - Published: 2024-02-29 - Modified: 2024-03-21 - URL: https://rollbar.com/blog/removing-tls-1-0-and-1-1/ - Categories: product - Tags: security Removing Support for TLS 1. 0 and 1. 1 Protocols On March 31, 2024, Rollbar will remove support for TLS 1. 0 and 1. 1 protocols. Rollbar is discontinuing the support for these older versions of TLS. This means any attempted connections using older browsers that only support TLS 1. 0 and 1. 1 will no longer be allowed. As of March 31, 2024, only TLS 1. 2 and higher are supported by Rollbar. What is changing? Transport Layer Security (TLS) is the protocol at the heart of HTTPS (the successor to SSL). Its primary purpose is to encrypt the communication, thus preventing eavesdropping and data tampering. In the past, several security vulnerabilities in TLS have been found, the most famous being BEAST and POODLE. The solution has been to update newer versions of TLS protocols that fixed those vulnerabilities and implement other minor security improvements. Currently, TLS 1. 2 and TLS 1. 3 are supported by all major browsers and modern software due to these improvements. To maximize compatibility with existing deployments, Rollbar has continued to support all TLS versions starting from 1. 0. But now, the time has come to retire TLS 1. 0 and 1. 1. As of March 31, 2024, the minimum version of TLS supported by Rollbar will be 1. 2. What actions are needed? If you are using TLS 1. 0 or 1. 1, you will need to upgrade to 1. 2 or higher in order to keep using Rollbar. Not sure if you're... --- - [How to Resolve ChatGPT Rate Limit Errors](https://rollbar.com/blog/chatgpt-api-rate-limit-error/): Bypass rate limit woes with our detailed guide. Discover how to monitor and manage your requests and troubleshoot issues without losing a beat in your tasks. - [How to Use the ChatGPT API with Java](https://rollbar.com/blog/how-to-use-chatgpt-api-with-java/): Today we're taking a deep dive into the fusion of two giants: the revolutionary ChatGPT and the long-standing warhorse of programming, Java. - [How to Use the ChatGPT API with Golang](https://rollbar.com/blog/how-to-use-chatgpt-api-with-golang/): This guide will take you step-by-step on how to bring together the text-generating wizardry of ChatGPT with the simplicity and efficiency of Golang. - [Usage Notifications](https://rollbar.com/blog/account-usage-notifications/): We're thrilled to announce the launch of Rollbar's latest initiative to provide greater transparency and control over your occurrences. Our team has worked hard to address customers' feedback and concerns based on your occurrences and overages. We are excited to introduce a new level of observability to our platform. ### Angular vs. React: Which is Better, and When? > Angular is a full-featured framework, while React is a library focused on UI components with the freedom to choose the rest of your tech stack freely. - Published: 2024-02-15 - Modified: 2024-02-22 - URL: https://rollbar.com/blog/angular-vs-react/ - Categories: topics - Tags: angular, react In a nutshell, here's the biggest difference between Angular and React: With Angular, you get a standardized approach to everything. It’s a structured environment that gives you clear direction and all the resources you need within arm's reach, minimizing venturing outside for additional tools or materials. React, on the other hand, resembles a playground where you're handed the basic building blocks and left to your own devices. It champions a more laissez-faire approach, focusing solely on the UI and entrusting you to select your own adventure with the rest of your stack. Choosing one over the other can significantly affect both your coding experience and project success. Let's dive into the specifics so you can make an informed choice. The basics: Angular is a framework, React is a library Angular is a full-fledged MVC (Model-View-Controller) framework for building web apps with out-of-the-box features like form handling, routing, and state management. Angular uses TypeScript, a superset of JavaScript, offering static typing and classical object-oriented programming features. React is fundamentally a library focused on building user interfaces. React apps are typically built using additional libraries for routing, state management, and more, giving you the flexibility to choose your tools. React uses JSX, a syntax extension that allows HTML to be written within JavaScript. Angular provides two-way data binding, React follows a one-way data flow Angular implements two-way data binding, meaning changes in the UI are automatically reflected in the app state, and changes in the app state are immediately reflected in the... --- - [Alison's story with Rollbar](https://rollbar.com/blog/alisons-story-with-rollbar/): Rollbar fulfills an important need for us with its grouping of items, so that we can track over long periods of time. This allows us to see trends, when issues started, how many of our customers are affected. We also find the integrations very helpful with slack messages of new items and ability to create jira issues with all the details from rollbar automatically included. - [Cameron's story with Rollbar](https://rollbar.com/blog/camerons-story-with-rollbar/): Rollbar fulfills an important need for us with its grouping of items, so that we can track over long periods of time. This allows us to see trends, when issues started, how many of our customers are affected. We also find the integrations very helpful with slack messages of new items and ability to create jira issues with all the details from rollbar automatically included. ### New Source Map Error Workflow - Published: 2024-01-29 - Modified: 2024-01-29 - URL: https://rollbar.com/blog/new-source-map-error-workflow/ - Categories: product We're excited to unveil the latest enhancements to Rollbar’s Source Map handling. This new feature, directly influenced by user feedback, simplifies your debugging experience, making Source Mapping more intuitive and user-friendly. Source Map issues are a frequent concern, ranking among the top five monthly support requests. We recognize the challenges you face when dealing with errors that don't make sense due to Source Mapping configuration issues. So, we identified key areas where users struggled with Source Maps, such as understanding automated downloads, lack of feedback on processing failures, and the overwhelming noise on the Sourcemap screen. Our development efforts were tailored to address these specific concerns. First, we want to make error messages more actionable, so we moved the errors to a sidebar associated with your item. By clicking the new “source map error” button, We will provide a detailed error message and documentation allowing source maps to download automatically without issue going forward. You can manually upload the missing source map to deobfuscate the stack frame the next time an occurrence occurs (note this will create a new item). If your error handler contains multiple source maps, you must manually upload each source map to deobfuscate all stack frames for future occurrences. Additionally, we have broken down our documentation and directly linked it to specific issues and error messages, ensuring that you spend less time searching for solutions and more time resolving them. As always, your input is invaluable in shaping our platform. We encourage you to explore these... --- - [Albert's story with Rollbar](https://rollbar.com/blog/alberts-story-with-rollbar/): The availability or Rollbar libraries with all of our apps and environments makes it easy to have efficient and accurate error reporting at all times. We couldn't be happier with the features Rollbar has implemented and continues to implement. - [Arthur's story with Rollbar](https://rollbar.com/blog/arthurs-story-with-rollbar/): It's always been a straightforward service to implement thanks to its integration with the Laravel framework. It is also one of my pinned tabs that I always have open and refer to multiple times a day. On the odd occasion, we have a customer-facing bug I usually find that me or the team is rolling out a fix before the customer has even gotten in contact.It's also a nice product to use, the integration with GitHub usually means the problem is displayed alongside the error message. - [Anonymous ThredUP (Results)](https://rollbar.com/?testimonial=anonymous-thredup-results): ### Auto-suggest item owner based on Git Blame data - Published: 2024-01-29 - Modified: 2024-03-12 - URL: https://rollbar.com/blog/auto-suggest-item-owner-based-on-git-blame-data/ - Categories: product Overview For projects integrated with GitHub, Rollbar now has the ability to show the user identified by Git Blame in the Assign Owner field. This can help identify the last user to have dealt with the code in question so they can be assigned as the initial owner in Rollbar. Benefits of assigning items to owners Assigning items to specific owners helps teams to manage the list of Rollbar items by making it clear who has ownership for each issue, meaning items are more likely to be investigated and resolved. Displaying the available Git Blame data helps to more easily identify the user who may have last been involved in working in the code, which is usually a good starting point to begin investigating. Suggested owner data When opening the Owner field on the item list or item detail page, if an associated Rollbar user for the Git Blame owner can be identified then they will be suggested as the potential owner for the item. The owner identified by git-blame is the same user shown inline in the stack trace. Once an owner has been assigned, the auto-suggestion for the item owner will no longer be displayed. Enabling owner auto-suggestion Pre-requisites The auto-suggest feature is only available for Advanced and Enterprise customers. At a project level, if the project has GitHub integration configured, there is a toggle to enable the auto-suggest feature. In order to be displayed in the suggested owner field, the GitHub user identified by Git Blame must... --- - [Anonymous ThredUP (Strategy #2)](https://rollbar.com/?testimonial=anonymous-thredup-strategy-2): ### How to Fix “Function Object is Not Subscriptable” in Python > Simply put, you're trying to treat a function like it's a list, but you can't do that because they are different things. Try this other way to get what you want. - Published: 2024-01-24 - Modified: 2024-01-24 - URL: https://rollbar.com/blog/how-to-fix-function-object-is-not-subscriptable-python/ - Categories: Code Tutorials, Python - Tags: Python “Subscriptable” is just a fancy way of saying "something you can use square brackets on to get parts from it. ” For example, my_list and my_dict accesses the element at 0 and key, respectively. In Python you can only use square brackets to access elements of a list, array, or dictionary. If you try to do the same thing with a function, you get the “function object is not subscriptable” error. Simply put, you're trying to treat a function like it's a list, but you can't do that because they are different things. “Function Object is Not Subscriptable” Example Functions are objects. When you define a function, you create an object. For example: def my_function: return You mistakenly treat a function like it's subscriptable when you use square brackets on it. first_element = my_function Traceback (most recent call last): File "example. py", line X, in result = my_function TypeError: 'function' object is not subscriptable That raises the error because you’re trying to access the first element of a function, which isn’t possible. How to Fix “Function Object is Not Subscriptable” Continuing with the example above, if you want to return the first element in the function’s return value, you would need to call my_function first and then access the first element of its return value, like this: first_element = my_function 1 See the difference? When you try my_function, you’re using square brackets on the function itself, which doesn't make sense because a function isn't a list or array; it doesn't... --- - [How to Handle the ChatGPT “Model is Overloaded” Error](https://rollbar.com/blog/chatgpt-model-is-overloaded-error/): ChatGPT is a champ, but sometimes, it needs a breather. Here's what you need to know about the Model is... - [Anonymous ThredUP (Strategy #1)](https://rollbar.com/?testimonial=anonymous-thredup-strategy-1): - [How to Deal with ChatGPT's Prompt Too Long Error](https://rollbar.com/blog/chatgpt-prompt-too-long-error/): Are you getting an openai.error.InvalidRequestError about exceeding the maximum context length? Explore 5 techniques for managing prompt length. - [Plexus (Goal)](https://rollbar.com/?testimonial=plexus-goal): - [Hubert's story with Rollbar](https://rollbar.com/blog/rollbar-story-hubert/): I love Rollbar because of its incredibly powerful features, its freemium pricing model (which makes it really easy to start new projects with error tracking baked in from day 1, setting a good foundation from beginning rather than having to be distracted and set it up later on). - [Plexus (Strategy)](https://rollbar.com/?testimonial=plexus-strategy): ### Making Project, Item and Occurrence IDs accessible within Service Links - Published: 2024-01-23 - Modified: 2024-01-23 - URL: https://rollbar.com/blog/making-project-item-and-occurrence-ids-accessible-within-service-links/ - Categories: Uncategorized - Tags: Service Tags Create detailed workflows and integrations with third-party systems using IDs Overview In the latest release of Rollbar, we have updated our Service Links to include the project, item and occurrence IDs related to the item and occurrence being viewed. Rollbar Service Links allow users to launch specific actions using the data available within the current occurrence at the click of a button. For example - you could launch a Datadog query with a specific search value from the item and narrow down the time period based on the occurrence. In order to expand the usefulness and flexibility of Service Links, we have added the ability to access the Project ID, Item ID, Item Counter and Occurrence ID within each Service Link. When combined with the public Rollbar APIs, these fields allow the creation of sophisticated, detailed workflows that can be launched at the click of a button. Available fields The following fields are now available to add to Service Links: _{{item. counterid}} - the item counter / number (as seen at the top of the item page and in the item url) {{item. id}} - the item ID - as fed into the _Get an item (by ID) and Update an Item_ API calls _{{item. occurrenceid}} - the occurrence ID of the specific occurrence being viewed _{{item. projectid}} - the project ID for the item in question Usage Examples These fields can be included in the endpoint url defined in the Service Link, which when launched can then be used... --- - [Jonathan's story with Rollbar](https://rollbar.com/blog/rollbar-story-jonathan/): I love Rollbar because of its incredibly powerful features, its freemium pricing model (which makes it really easy to start new projects with error tracking baked in from day 1, setting a good foundation from beginning rather than having to be distracted and set it up later on). - [Nat's story with Rollbar](https://rollbar.com/blog/rollbar-story-nat/): I first encountered Rollbar in my day job when I worked for PatientsLikeMe. We switched from a competitor because Rollbar made it much easier to track exceptions across programming languages (not just on our Ruby backend) and made it easy to attach additional details to exception reports as needed. - [Plexus (Results)](https://rollbar.com/?testimonial=plexus-results): - [Free Plan Changes](https://rollbar.com/blog/free-plan-changes-2023/): We are standardizing our free plans to align with our current structure and ensure we can continue offering quality services to all our users. ### Magdalena Dzindzisz - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=magdalena-dzindzisz --- ### Usage Visualizations > We are excited to unveil the latest enhancement to Rollbar's platform - the integration of graphical visualizations in the usage page. Building on our new usage page, this feature brings a dynamic and intuitive way to monitor and manage your occurrences. - Published: 2024-01-23 - Modified: 2024-01-23 - URL: https://rollbar.com/blog/usage-visualizations/ - Categories: product - Tags: Usage Notifications Introducing Rollbar’s Usage Visualizations New Account and Project Graphs We are excited to unveil the latest enhancement to Rollbar's platform - the integration of graphical visualizations in the usage page. Building on our new usage page, this feature brings a dynamic and intuitive way to monitor and manage your occurrences. Visualizing Your Occurrences and Budgets In response to your feedback, we've made some enhancements to the usage page. First, we’ve updated the default view to a daily perspective, allowing for a more granular understanding of occurrences. Alongside this, we’ve introduced a new graphical visualization of your occurrences. Users can now see a clear, color-coded graph showing their account's occurrences against a suggested budget for each time frame. Integrating daily insights and budget visualization offers a more transparent, practical view of your usage and where your application might have used more occurrences than expected. Project-Level Insights The projects tab now shows usage share per project for up to five projects, which users can select from their account. This flexibility allows for a tailored comparison of how different projects consume occurrences throughout the contract period. Whether you’re monitoring the top five projects by usage or a custom selection, this feature provides a straightforward way to compare and understand project-level data. If you need a deep dive into individual projects, clicking on a project title in the projects tab now brings up a slide-over with a new addition: a detailed graph showing the project's usage over the selected time frame. This graph supplements... --- - [Account Observability](https://rollbar.com/blog/account-observability/): We're thrilled to announce the launch of Rollbar's latest initiative to provide greater transparency and control over your occurrences. Our team has worked hard to address customers' feedback and concerns based on your occurrences and overages. We are excited to introduce a new level of observability to our platform. - [W. Habib - Everplans (light) As an agile](https://rollbar.com/?testimonial=w-habib-everplans-light-as-an-agile): ### Ádám Németh - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=adam-nemeth --- - [A Web Developer's Guide to Common Website Error Codes](https://rollbar.com/blog/common-website-error-codes/): From the infamous 404 to the more elusive 500, this guide is your compass to troubleshoot, decode, and resolve these digital stumbling blocks. - [A. Childs - Clubhouse (dark) Rollbar lets us](https://rollbar.com/?testimonial=a-childs-clubhouse-light-rollbar-lets-us): - [How to Resolve TypeError: ‘NoneType’ object is not subscriptable in Python](https://rollbar.com/blog/python-typeerror-nonetype-object-not-subscriptable/): When you try to access an index or key of a variable that is of a NoneType sort, Python throws a NoneType error. Learn several solutions to fix this. ### Zita Lőrinczi - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=zita-lorinczi --- ### How to Fix IndexError: List Index Out of Range in Python > The IndexError in Python occurs when an item from a list is attempted to be accessed that is outside the index range of the list. - Published: 2024-01-18 - Modified: 2025-03-17 - URL: https://rollbar.com/blog/python-indexerror/ - Categories: Code Tutorials, Python - Tags: Python The IndexError: list index out of range error occurs in Python when an item from a list is attempted to be accessed that is outside the index range of the list. The range of a list in Python is , where n is the number of elements in the list. Python IndexError Example Here’s an example of a Python IndexError: list index out of range thrown when trying to access an out of range list item: test_list = print(test_list) In the above example, since the list test_list contains 4 elements, its last index is 3. Trying to access an element an index 4 throws an IndexError: list index out of range: Traceback (most recent call last): File "test. py", line 2, in print(test_list) IndexError: list index out of range How to Fix IndexError in Python The Python IndexError: list index out of range can be fixed by making sure any elements accessed in a list are within the index range of the list. This can be done by using the range function along with the len function. The range function returns a sequence of numbers starting from 0 ending at the integer passed as a parameter. The len function returns the length of the parameter passed. Using these two methods together allows for safe iteration over the list up to its final element, thus ensuring that you stay within the valid index range and preventing the IndexError. Here's how to use this approach to fix the error in the earlier... --- - [Error Resolution Unveiled](https://rollbar.com/blog/improve-mttr-metric/): Introduce a new enhancement to our Improve package – the Mean Time to Resolution (MTTR) metric. Unlike other tools, our MTTR metric measures the time from when an issue begins in production to when it gets resolved, not from a ticket opening or alert trigger. This distinctive feature makes the Rollbar MTTR more accurate and reliable. - [Fintech (dark) The more you](https://rollbar.com/?testimonial=fintech-dark-the-more-you): - [How to Use CreateError for Crafting Custom Error Classes in Node.js](https://rollbar.com/blog/nodejs-error-handling-using-createerror/): Unlock the full potential of JavaScript error handling with CreateError. Learn how to create custom error classes, pass additional error data, and more. ### Walt Jones - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=walt-jones --- - [How to Fix AbortError in JavaScript](https://rollbar.com/blog/fix-aborterror-in-javascript/): The JavaScript AbortError occurs when an operation is aborted before it completes. Learn three ways to handle it. - [J. Bazemore - Greenhouse (light) When you move](https://rollbar.com/?testimonial=j-bazemore): ### JavaScript RangeError: Maximum Call Stack Size Exceeded > JavaScript RangeError: Maximum Call Stack Exceeded is thrown when there are too many function calls, or if a function is missing a base case. - Published: 2024-01-18 - Modified: 2024-01-18 - URL: https://rollbar.com/blog/javascript-rangeerror-maximum-call-stack-size-exceeded/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript The JavaScript RangeError: Maximum call stack size exceeded happens when a function keeps calling itself without any condition to stop, and eventually, the program runs out of space to keep track of these repeated calls. It's a sign that your program needs a way to stop the function from calling itself endlessly. This error typically occurs due to: Too many function calls. Issues in handling recursion, e. g. missing base case in a recursive function to stop calling itself infinitely. Out of range operations. RangeError: Maximum Call Stack Size Exceeded Example Here’s an example of a JavaScript RangeError: Maximum call stack size exceeded thrown when using a recursive function that does not have a base case: function myFunc { myFunc; } myFunc; Since the recursive function myFunc does not have a terminating condition (base case), calling it creates an infinite loop as the function keeps calling itself over and over again until the RangeError: Maximum call stack size exceeded error occurs: Uncaught RangeError: Maximum call stack size exceeded at myFunc (test. js:2:2) at myFunc (test. js:2:2) at myFunc (test. js:2:2) at myFunc (test. js:2:2) at myFunc (test. js:2:2) at myFunc (test. js:2:2) at myFunc (test. js:2:2) at myFunc (test. js:2:2) at myFunc (test. js:2:2) at myFunc (test. js:2:2) How to Avoid RangeError: Maximum Call Stack Size Exceeded If this error is encountered when calling recursive functions, make sure that the function has a defined base case to terminate the recursive calls. In case this error occurs due to an excessive... --- - [10 Best Practices When Logging in Python](https://rollbar.com/blog/10-best-practices-when-logging-in-python/): Harness the full power of Python's logging module. From best practices to advanced error tracking with Rollbar, learn everything you need to squash bugs. ### Nellie Sisti - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=nellie-sisti --- - [R. Zuber - CircleCI (light) If you don't](https://rollbar.com/?testimonial=r-zuber-circleci-light-if-you-dont): - [How to Solve an Undefined Variable NameError in Python](https://rollbar.com/blog/undefined-variable-nameerror-python/): A Python NameError is raised when the program attempts to use a variable that has not been defined. Learn how to fix it. ### Vince Power - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=vince-power --- - [D. Rohov - CVENT (light) Rollbar has been](https://rollbar.com/?testimonial=d-rohov-cvent-light-rollbar-has-been): ### Sergei Bezborodko - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=sergei-bezborodko --- ### Adam's story with Rollbar > Rollbar has been great at letting our development team quickly identify issues, communicate them, and monitor their resolution. The very readable tracebacks and in-scope variable values across various environments are extremely useful across our team to solve issues quickly and transparently. - Published: 2024-01-17 - Modified: 2024-04-15 - URL: https://rollbar.com/blog/adams-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Adam Saunders Co-Founder at PiinPoint Adam has now been using Rollbar for 100 months! 1. My Role PiinPoint is a Location Intelligence platform for businesses that manage portfolios of real estate locations. Among other industries, we help retailers find the top opportunities to expand their network of locations, as well as help them plan market reconfiguration strategies to optimize for network performance. This is conducted through a SaaS platform and custom Service offerings that get rolled into the platform. 2. My Passion in the Role I'm passionate about providing useful spatial visualization tools and valuable analysis results to our customers. This often requires involvement between Data Science, and the Development team across Platform, DevOps, and Database skillsets to bring new results to the customer. In this process, Rollbar is extremely useful throughout initial integration, QA activities, and monitoring after go-live to make sure the customer experience of the solution is top-tier. 3. The Rollbar Experience Rollbar has been great at letting our development team quickly identify issues, communicate them, and monitor their resolution. The very readable tracebacks and in-scope variable values across various environments are extremely useful across our team to solve issues quickly and transparently. The integration with Slack is very useful in keeping the visibility of errors high and actionable to the appropriate teams. --- - [D Rohov - CVENT (light) You could have](https://rollbar.com/?testimonial=d-rohov-cvent-light-you-could-have): ### Chris Pfohl - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=chris-pfohl --- - [Error Logging: A Complete Guide for Beginners](https://rollbar.com/blog/error-logging-guide/): No matter the programming language, learn the universal principles of what to include in error logs, where to save them and how to debug effectively. ### Zachary Flower - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=zachary-flower --- - [D. Rohov - CVENT (light) The out of the](https://rollbar.com/?testimonial=d-rohov-cvent-light-the-out-of-the): - [How to Use the ChatGPT API with JavaScript](https://rollbar.com/blog/chatgpt-api-with-javascript/): Step into the world of AI with this step-by-step tutorial on integrating the OpenAI API with JavaScript. Transform your app's user experience today. - [Introducing Rollbar Analyze](https://rollbar.com/blog/introducing-rollbar-analyze/): Analyze is designed to deliver even more powerful insights to help your teams better understand your code and make data-driven decisions. By packaging the capabilities of RQL and Metrics API, we are equipping you with a robust solution that addresses your unique data needs. ### How to Fix “Client network socket disconnected…” in Node.js > Learn 6 things you can do to get the connection working. As a last resort, you can also set rejectUnauthorized to false, which ignores SSL validation errors. - Published: 2024-01-15 - Modified: 2024-01-15 - URL: https://rollbar.com/blog/how-to-fix-client-network-socket-disconnected-nodejs/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript, Node.js The error “Client network socket disconnected before secure TLS connection was established” indicates something went wrong when setting up a secure connection with the server you’re communicating with. This can happen because of an unstable internet connection, wrong security settings on the server, or things like firewalls getting in the way. Diagram of what happens to cause 'Client network socket disconnected... ' Although this blog post will use Node. js in examples to discuss this error, the underlying cause is related to the network layer rather than a language-specific issue. You can get this error in any programming language that supports network operations and TLS (Transport Layer Security) for secure connections. What causes “Client network socket disconnected... ”? Here are some of the typical causes: Timeout Issues: The client took too long to establish a connection with the server. This could be due to network latency, server overload, or other network-related issues. Proxy or VPN Interference: If the client is behind a proxy or using a VPN, these can sometimes interfere with or disrupt the TLS handshake process. Firewall or Security Software: Firewalls or security software on the client or server side may block the connection or interrupt the TLS handshake. SSL Certificate Problems: Issues with the server's SSL certificate, such as it being expired, self-signed, or not properly configured, can prevent a successful TLS connection. Incompatible TLS Versions: If the Node. js client and the server are using incompatible TLS versions or cipher suites, the handshake will fail. Server... --- ### Hemant Jain - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=hemant-jain --- - [H. Villafuerte – Duolingo – light – I really can't imagine...](https://rollbar.com/?testimonial=h-villafuerte-duolingo-light-i-really-cant-imagine): - [How to Fix ReferenceError: $ is Not Defined in JavaScript](https://rollbar.com/blog/fix-reference-error-is-not-defined-in-javascript/): This error occurs when the jQuery library is used but is not properly loaded or is not available in the current scope of the code. Learn how to fix it. ### Daniel Steuernol - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=daniel-steuernol --- - [How to Fix IndexError: string index out of range in Python](https://rollbar.com/blog/python-indexerror-string-index-out-of-range/): This error occurs when an index is attempted to be accessed in a string that is outside its range. Learn how to fix it. - [Tyler Wells - Twilio (light) if a tool](https://rollbar.com/?testimonial=tyler-wells-twilio-light-if-a-tool): - [How to Handle Exceptions in Ruby with Rescue](https://rollbar.com/blog/handle-exceptions-in-ruby-with-rescue/): Ruby provides a powerful error handling mechanism called Rescue. Learn how it works and common ways to use it to your advantage. ### Jon de Andrés Frías - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=jon-de-andres-frias --- - [How to transform Rollbar payload in .NET Core 7](https://rollbar.com/blog/how-to-transform-rollbar-payload-net7/): Using Rollbar is great for Exceptions both handled and unhandled. But there is so much more you can get out of a solution like Rollbar.We often hear users asking us to log structured log data to Rollbar or that they have a custom Json object that they would like to store in Rollbar. ### How to Fix "Could not find or load main class" in Java > The Java “Could not find or load main class” error is thrown when the JVM fails to find or load the main class while executing a program. - Published: 2024-01-13 - Modified: 2025-03-17 - URL: https://rollbar.com/blog/java-could-not-find-or-load-main-class/ - Categories: Code Tutorials, Java - Tags: java The Java error “Could not find or load main class” is thrown when the JVM fails to find or load the main class while executing a program. This is often due to simple mistakes like typing the wrong class name or having the class file in the wrong place. It usually occurs when executing a Java program from the command line. Install the Rollbar Java SDK to identify and fix these errors What Causes "Error: Could not find or load main class" It typically arises from issues like an incorrect class name, a mismatch in the directory and package structure, or a misconfigured classpath. Here's a full list of things to check: The class being declared in the incorrect package. The file path of the class not matching the fully qualified name. Incorrectly specified classpath of the application. Missing dependencies from the classpath. Incorrect directory path on the classpath. A typo in the class name. "Error: Could not find or load main class" Example Here’s an example of the Java "Could not find or load main class" error thrown when an incorrect class name is specified during execution: Say you have an example Java class MyClass. java: public class MyClass { public static void main(String args) { System. out. println("Hello World"); } } You then compile the above class using the command line: $ javac MyClass. java The compiler generates an executable . class file for MyClass: $ ls MyClass. class MyClass. java Now if the java command is used... --- - [H. Villafuerte - Duolingo - light - Rollbar helps make...](https://rollbar.com/?testimonial=h-villafuerte-duolingo-light-rollbar-helps-make): - [How to Fix TypeError: Int Object Is Not Iterable in Python](https://rollbar.com/blog/python-typeerror-int-object-not-iterable/): The Python TypeError: Int Object Is Not Iterable is an exception that occurs when trying to loop through an integer value. Learn how to fix it. ### Dan St. Clair - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=dan-st-clair --- - [How to Handle TypeError: Unhashable Type ‘Dict’ Exception in Python](https://rollbar.com/blog/python-typeerror-unhashable-type-dict-exception/): The Python Unhashable Type ‘Dict’ exception usually occurs when trying to hash an unhashable object like a dictionary. Learn how to fix it. - [R. Zuber (circle - dark)](https://rollbar.com/?testimonial=r-zuber-circle-dark): ### Adil Aijaz, Co-Founder & CEO of Split - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=adil-aijaz-co-founder-ceo-of-split --- - [How to Handle TypeError: Cannot Unpack Non-iterable Nonetype Objects in Python](https://rollbar.com/blog/python-typeerror-cannot-unpack-noniterable-nonetype-objects/): The TypeError:cannot unpack non-iterable nonetype objects occurs when we try to unpack a ‘None’ value as if it were an iterable object. Learn how to fix it. ### Saiqul's story with Rollbar > Since the early days of Hungry Hub, when we had just dozens of active monthly users, Rollbar has been a crucial tool in our development arsenal. As our user base expanded to over a million, Rollbar's real-time error tracking and comprehensive insights have been instrumental in ensuring the stability and reliability of our applications. - Published: 2024-01-09 - Modified: 2024-04-15 - URL: https://rollbar.com/blog/saiquls-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Saiqul Haq CTO (Chief Technology Officer) Saiqul has now been using Rollbar for 100 months! 1. My Role I am the CTO of Hungry Hub, Thailand's No. 1 dining app for special occasions. Our platform elevates the dining experience by connecting culinary enthusiasts with a curated selection of restaurants for those special moments. At Hungry Hub, we are dedicated to continuous innovation and improvement of our app, ensuring it remains the top choice for anyone looking to make their dining occasions extraordinary in Thailand. Our current projects revolve around enhancing user experience, incorporating advanced features for restaurant partners, and expanding our reach to encompass a more comprehensive array of unique dining experiences. . 2. My Passion in the Role My passion lies in building and leading a team of talented software developers, creating an environment where innovation thrives. I am deeply invested in developing systems that meet and exceed user expectations, ensuring high performance and reliability. The process of transforming complex technical challenges into seamless solutions energizes me. Moreover, I find it immensely rewarding to guide my team toward achieving their career goals while fostering a collaborative and efficient work culture. 3. The Rollbar Experience Since the early days of Hungry Hub, when we had just dozens of active monthly users, Rollbar has been a crucial tool in our development arsenal. As our user base expanded to over a million, Rollbar's real-time error tracking and comprehensive insights have been instrumental in ensuring the stability and reliability of our applications. Its... --- - [T. Wells (circle - dark)](https://rollbar.com/?testimonial=t-wells-circle-dark): - [10 Best PHP Frameworks For Savvy Web Devs In 2023](https://rollbar.com/blog/10-best-php-frameworks/): The most popular PHP frameworks used by the industry's most seasoned and savvy web developers are → ✓Larvel ✓Symfony ✓CodeIgniter ✓CakePHP... ### Taron Foxworth - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=taron-foxworth --- - [S. Hacker (circle - dark)](https://rollbar.com/?testimonial=s-hacker-circle): ### István Erdő - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=istvan-erdo --- ### Kalle's story with Rollbar > My loyalty to Rollbar is rooted in its exceptional capabilities in real-time error monitoring and debugging, which are vital for our operations at Oneflow. Its ability to provide instant notifications, detailed error reports, and track bugs across our various projects is crucial for maintaining our high service quality. Rollbar fits perfectly with our aim to offer reliable and efficient service. Its user-friendly interface and comprehensive tracking capabilities make it an indispensable tool in our development arsenal. - Published: 2024-01-04 - Modified: 2024-04-15 - URL: https://rollbar.com/blog/kalles-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Kalle Moodh CTO (Chief Technology Officer) Kalle has now been using Rollbar for 100 months! 1. My Role I am the CTO and Co-Founder at Oneflow, a digital contract management platform that automates the entire contract process from start to finish. Our platform is designed to transform clunky, static contracts into dynamic, truly digital contracts, making processes faster and decisions smarter, leading to quicker deals. My current focus involves integrating external systems to automate customer workflows, enhancing our system's infrastructure for greater reliability and scalability, and maintaining top-tier security and stability. We strive to overcome the friction and complexity in traditional contract processes, ensuring a smooth, secure, and delightful experience for our users. 2. My Passion in the Role My passion in this role at Oneflow comes from the significant impact we have on simplifying our users' work lives. Our digital contract management system not only eliminates hours of manual, tedious tasks but also brings a level of ease and efficiency that was previously unattainable with paper-based methods. The trust our users place in us by entrusting their sensitive data is something I value deeply. It's incredibly fulfilling to offer a secure, reliable solution that not only saves time and money but also enhances creative freedom and overall satisfaction in the workplace. At Oneflow, we're not just about handling contracts; we're about enhancing life and work quality. 3. The Rollbar Experience My loyalty to Rollbar is rooted in it's exceptional capabilities in real-time error monitoring and debugging, which are vital... --- - [Duolingo - Hacker (light)](https://rollbar.com/?testimonial=duolingo-hacker-light): ### Michal Zalecki - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=michal-zalecki --- - [Rollbar Apple SDK 3.0.0 Released](https://rollbar.com/blog/new-apple-error-tracking-sdk/): Rollbar Apple SDK 3. 0. 0 Released We are excited to announce the latest release of our Rollbar SDK for... - [D. Rohov - CVENT (dark)](https://rollbar.com/?testimonial=d-rohov-cvent-dark): ### Mehak Garg - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=mehak-garg --- - [R. Zuber - CircleCI (dark)](https://rollbar.com/?testimonial=r-zuber-circleci-dark): ### Rollbar Alternatives: Compare Before You Commit > Thinking of rolling past Rollbar? Dive into our comparison of 6 error monitoring tools and see why so many developers choose Rollbar. - Published: 2023-12-17 - Modified: 2024-01-23 - URL: https://rollbar.com/blog/rollbar-alternatives/ - Categories: topics Rollbar is acclaimed as the top error monitoring tool - with 4. 5 out of 5 stars on both Capterra and G2 - amongst a competitive field. That said, we recognize there are alternatives some people consider when also looking at us. Here is our perspective on what these other tools are for, and when to choose Rollbar instead. Rollbar (hey, that's us) Rollbar stands out in the error monitoring tool scene for a few key reasons. First off, it's super quick to know when something goes wrong in your app. You get instant alerts about errors so you can jump right on fixing them. This means less downtime and a better experience for your users. Rollbar also gives you detailed info about each error, like where exactly in your code it happened and what the data looked like at that moment. This makes it way easier to figure out what went wrong. And when it comes to sorting out the mess of errors you might get in a big app, Rollbar's got your back. It groups similar errors together, so you can see what needs your attention most. This feature is a lifesaver when you're dealing with lots of bugs at once. Plus, it works with lots of different programming languages and hooks up smoothly with other tools you might be using, like Slack, Jira, or GitHub. The reports and analytics Rollbar provides are super helpful for understanding what's going on over time. Another big plus for Rollbar is... --- - [Most Popular Java Backend Frameworks for 2023](https://rollbar.com/blog/most-popular-java-backend-frameworks/): An intuitive user interface is a hallmark of any decent business. But in order for the frontend of applications to... ### Helaine de Tomasi - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=helaine-de-tomasi --- - [What Are the Different Types of Python Errors? – and How to Handle Them](https://rollbar.com/blog/python-errors-and-how-to-handle-them/): Understanding error types is an essential part of crafting effective Python apps. Each type denotes a distinct problem within the code. These 7 are typical. - [T. Wells - Twilio (dark)](https://rollbar.com/?testimonial=t-wells-twilio-dark): - [What Makes a Company Attractive to Candidates?](https://rollbar.com/blog/what-makes-a-company-attractive-to-candidates/): In today’s competitive talent marketplace, making your company attractive to potential candidates is a must. In this case study, we covered how one of our favorite partners, Rollbar, achieves a great employer brand during the recruitment process. ### Lotanna Nwose - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=lotanna-nwose --- - [Using Rollbar for Performance Monitoring](https://rollbar.com/blog/how-to-use-rollbar-for-performance-monitoring/): Rollbar allows you to gain real-time visibility into exceptions and crashes in your applications and act on them quickly and easily. An important piece of any application is knowing if transactions are executing slower or below a certain threshold. - [M. Blaze - Duolingo (dark)](https://rollbar.com/?testimonial=m-blaze-duolingo-dark): ### Team Assignment > We’re excited to announce a new feature for Advanced and Enterprise customers - the ability to set a team as the owner of an item. - Published: 2023-12-11 - Modified: 2023-12-11 - URL: https://rollbar.com/blog/team-assignment/ - Categories: product - Tags: team Team Assignment Assign items to teams as well as individual owners! We’re excited to announce a new feature for Advanced and Enterprise customers - the ability to set a team as the owner of an item. Previously, Rollbar has only allowed users to assign a specific team member as the owner of an item. However, recognizing the need for flexibility in ownership, especially in collaborative environments, we now allow a team to be set as the owner of an item. This update is particularly beneficial when a team collectively oversees an item, but the exact team member responsible for handling the error has yet to be determined. Assigning the item to a team allows for a shared sense of responsibility and clarifies who's in charge, making the management of items more straightforward. This feature is accessible to any team granted access to a project, as outlined in the Project Settings / Members screen. How to use Team Assignment Teams can be assigned as an item owner on the current item assignment dropdown. The relevant teams are displayed on the second tab. If you need to filter your items by teams on the item list page, the Owners filter also includes the ability to filter by specific teams: Unlock the power of team collaboration now! Our new team assignment feature is available for Advanced and Enterprise users. Don’t miss out on this game-changing feature. Upgrade from Free and Essentials today to elevate and streamline your team’s workflow! --- ### Michael Davis - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=michael-davis --- - [How to add context to errors with custom tags](https://rollbar.com/blog/tag-errors-with-custom-tags/): One of the hardest tasks for software engineers is often having to stop what you are doing and look into a software bug (error), find the root cause and fix it quickly. This is hard because you may have never seen the affected code (someone else wrote it), it could be code you wrote a long time ago or just the context switching from what you are working on right now. - [C. Amadieh - Cvent (dark)](https://rollbar.com/?testimonial=c-amadieh-cvent-dark): - [How to Debug Code Using ChatGPT](https://rollbar.com/blog/how-to-debug-code-using-chatgpt/): ChatGPT can help you debug quickly and efficiently. Follow these 6 steps to engineer prompts that give the best results. ### Ivan Gomez - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=ivan-gomez --- - [M. Blaze - Duolingo (light)](https://rollbar.com/?testimonial=m-blaze-duolingo): ### Marc's story with Rollbar > What has kept us with Rollbar is that it’s always there when we really need it, and stays out of the way quietly ticking along when we don’t. It’s not needy, or trying to increase ‘engagement’ in any way, we can just jump in, do what we need to do as quickly as we can, and then we’re out and get back to business as usual. - Published: 2023-12-08 - Modified: 2024-04-15 - URL: https://rollbar.com/blog/marcs-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Marc Roberts CTO (Chief Technology Officer) Mark has now been using Rollbar for 101 months! 1. My Role I work at Hiyacar. We provide car sharing technology for peer to peer car sharing and for businesses to efficiently manage their pool cars. Our biggest project at the moment is to build out our recently launched pool car offering to support more businesses use cases. 2. My Passion in the Role I’m most passionate about ensuring our platform remains scalable, not just from a technology point of view but also ensuring the team growth and processes maintain an environment where we can build quickly and produce easily maintainable code with the least tech debt. 3. The Rollbar Experience What has kept us with Rollbar is that it’s always there when we really need it, and stays out of the way quietly ticking along when we don’t. It’s not needy, or trying to increase ‘engagement’ in any way, we can just jump in, do what we need to do as quickly as we can, and then we’re out and get back to business as usual. --- ### Julie Jones - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=julie-jones --- - [Introducing our new Item Detail page](https://rollbar.com/blog/introducing-our-new-item-detail-page/): We’re excited to share a significant update to all Rollbar plans in the next few weeks. We’ve redesigned our item... - [C. Amadieh - Cvent (Light) Anytime you fix](https://rollbar.com/?testimonial=c-amadieh): ### Derick Chung - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=derick-chung --- ### New Integration: Bird Eats Bug > We are introducing a new Snooze option for items. When Snoozing an item, the user will define how long an item will stop sending notifications for - once that time period expires then the item will return to normal and begin sending notifications again. - Published: 2023-11-28 - Modified: 2023-11-28 - URL: https://rollbar.com/blog/bird-eats-bug-integration/ - Categories: product New Integration: Bird Eats Bug We're excited to announce a new integration with screen capture tool Bird Eats Bug! What does the Bird and Rollbar integration do? Bird Eats Bug is a screen capture tool for Product Managers, QA Testers, and end users to easily report bugs as they see them. Integration with Bird Eats Bug connects errors in Rollbar to a Bird Eats Bug recording, allowing a much easier way to understand the user's experience when reviewing error data in Rollbar. There's a clear correlation between error data in Rollbar and issues reported from internal and external users with Bird Eats Bug. Prerequisites For the integration to work, you need to use both Rollbar and either Bird Eats Bug SDK or the browser extension. Rollbar configuration The data that Rollbar needs is known by the Bird SDK on the same page. We can make Rollbar aware of it using just a few lines of extra code in your rollbar. js configuration, as shown in the JavaScript code example below. This can be done in any SDK that Bird Eats Bug and Rollbar support. var const rollbarConfig = { // ... otherConfig transform: function (payload) { // Add the Bird Eats Bug session link to the payload, if it exists. const sessionLink = window. birdeatsbug? . session? . link || window. birdeatsbugExtension? . session? . link if (sessionLink) { payload. birdeatsbugSessionURL = sessionLink; } return payload; } }; Now you can view the Bird Eats Bug URL in Rollbar: The... --- - [T. Wells - Twilio (light)](https://rollbar.com/?testimonial=t-wells-twilio): - [Item Detail Page Update Details](https://rollbar.com/blog/item-detail-page-update-details/): We have introduced a new design for the Item Detail page - as well as helping to investigate & resolve... ### Alex Moraca - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=alex-moraca --- - [How to Fix RecursionError in Python](https://rollbar.com/blog/python-recursionerror/): The Python RecursionError is an exception that occurs when the maximum recursion depth is exceeded. Learn how to fix it. - [R. Zuber - CircleCI (light)](https://rollbar.com/?testimonial=r-zuber-circleci): ### Jesse Gibbs - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=jesse-gibbs --- - [How to Fix ZeroDivisionError in Python](https://rollbar.com/blog/python-zerodivisionerror/): The Python ZeroDivisionError is an exception that occurs when a number is attempted to be divided by zero. Learn how to fix it. - [How to Integrate ChatGPT into Your Python Script](https://rollbar.com/blog/how-to-integrate-chatgpt-into-your-python-script/): Want to add some cutting-edge AI magic to your code? Buckle up as we show you how to use ChatGPT in your Python script. ### Brian Rue - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=brian-rue --- ### Next.js or Vite.js: Which Framework is Better, and When? > Next.js excels in server-side rendering for SEO and fast load times, while Vite.js offers rapid development and reduced server load. - Published: 2023-11-13 - Modified: 2023-11-13 - URL: https://rollbar.com/blog/nextjs-vs-vitejs/ - Categories: topics - Tags: JavaScript, next Two names that have been making waves with their distinct approaches to building web apps are Next. js and Vite. js. Next. js is a React framework specialized in server-side rendering (SSR), static site generation (SSG), and hybrid applications. It provides features like file-based routing, image optimization, and is particularly suited for projects where SEO and fast initial load times are priorities. Vite. js, in contrast, is a build tool that supports various frameworks including React, Vue, and Svelte. It focuses on client-side rendering, offering fast development setup and hot module replacement. Vite. js is ideal for projects where rapid development and reduced server load are key considerations. As we dissect these frameworks, we’ll compare their strengths, weaknesses, and the unique flavor they bring to web development - and how choosing between them can profoundly influence the outcome of your project. What makes Next. js remarkable? Next. js offers many features that enhance the development experience and the performance of web apps, such as: File-system-based Routing: Next. js automatically creates routes based on the files in the pages directory. Image Optimization: Next. js provides an image component that automatically optimizes images for faster loading. It supports features like lazy loading, resizing, cropping, and quality adjustment. Internationalization: Next. js supports built-in internationalization and localization features that allow you to create multilingual web apps with ease. API Routes and Endpoints: Next. js allows you to create API endpoints in the pages/api directory. These endpoints can be used to handle requests from your... --- - [D. Rohov - CVENT (light)](https://rollbar.com/?testimonial=d-rohov-cvent): - [Reducing noise in Stack Traces by collapsing non-project frames](https://rollbar.com/blog/reducing-noise-in-stack-traces-by-collapsing-non-project-frames/): Reducing noise in Stack Traces by collapsing non-project frames ### Cory Virok - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=cory-virok --- - [Duolingo - Hacker (dark)](https://rollbar.com/?testimonial=duolingo-hacker): ## Employees - [How to Fix EvalError in JavaScript](https://rollbar.com/blog/javascript-evalerror/): The JavaScript EvalError occurs when the global eval() function is used in a way that is not allowed. Learn more about it here. ### Jason Skowronski - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=jason-skowronski --- ### What are Sealed Classes in Java? > A sealed class is a class that explicitly specifies which other classes are allowed to extend it. Learn more about them here. - Published: 2023-11-10 - Modified: 2023-11-10 - URL: https://rollbar.com/blog/what-are-sealed-classes-in-java/ - Categories: Code Tutorials, Java - Tags: java Sealed classes are a feature introduced in Java 15 which bring a new level of control and predictability to class hierarchies. A sealed class is a class that explicitly specifies which other classes are allowed to extend it. This offers a way to restrict class hierarchies, making them more predictable and less prone to unintended extensions. Why Sealed Classes? In Java, class hierarchies can become complex, with numerous subclasses extending a common superclass. This can make it challenging to maintain and control the hierarchy. Unintentional extensions and modifications of classes can lead to unexpected issues and bugs in the codebase. Sealed classes were introduced to address this challenge. They provide a mechanism for specifying which classes can extend a particular class, which helps prevent unauthorized extensions. How to Use Sealed Classes The sealed modifier is used to declare a class as sealed. Additionally, the classes that are permitted to be its direct subclasses are specified using the permits keyword. Here’s an example: public sealed class Animal permits Dog, Cat, Bird { //Class implementation } In this example, the Animal class is declared as sealed and permits three subclasses: Dog, Cat and Bird. Any attempt to create a new subclass of Animal outside of this list will result in a compilation error. Preventing Errors with Sealed Classes Sealed classes offer several benefits in preventing errors and ensuring code correctness: Controlled Extensibility: By explicitly specifying which classes can extend a sealed class, fine-grained control is achieved over the class hierarchy. This ensures... --- - [Caching Database Queries in SQLAlchemy - Part 1/2](https://rollbar.com/blog/caching-database-queries-in-sqlalchemy-part-1-2/): How to cache database ORM queries using Python's SQLAlchemy v1.3 library ### Craig Guillot - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=craig-guillot --- - [Take control of monitoring and responding to your production Frontend Javascript errors](https://rollbar.com/blog/responding-to-frontend-javascript-errors/): We are very lucky on the Rollbar Customer Engineering Team because we get to work with many many development teams. Each team develops, tests, and deploys their applications in their own way. They have chosen different languages and frameworks to solve their particular problem. We learn from each team that we work with, and share these learnings to our Product Design team. ### Tyler Cascade - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=tyler-cascade --- - [Can ChatGPT speed up software error resolution?](https://rollbar.com/blog/chatai-for-software-error-resolution/): One of the hardest tasks for software engineers is often having to stop what you are doing and look into a software bug (error), find the root cause and fix it quickly. This is hard because you may have never seen the affected code (someone else wrote it), it could be code you wrote a long time ago or just the context switching from what you are working on right now. ### Inga's story with Rollbar > Rollbar is extremely easy to integrate, but the real power is in the extended functionality. Rollbar telemetry can be a real time-saver, giving the context to user actions that preceded the actual issue. And for the actual deep-dive in errors, RQL (the query language) is invaluable. I'm also a big fan of the Slack notifications and the flexibility they offer. - Published: 2023-11-09 - Modified: 2024-04-15 - URL: https://rollbar.com/blog/ingas-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Inga Brūnava Lead FE Engineer Inga has now been using Rollbar for 100 months! 1. My Role I'm a Principal Software Engineer at Databox. Databox is a business analytics platform that allows users to connect all of their data in one place, visualize performance trends, monitor progress toward their goals, make more informed decisions, collaborate, and report. All data in one place, on any device. I'm mostly involved in the user-facing part of Databox Analytics app. 2. My Passion in the Role The ultimate goal for any app is to have a user experience without hiccups like bugs, sluggishness and unexpected behavior. That, combined with the personal challenges like "can I make this work", is why I enjoy doing what I do. 3. The Rollbar Experience It's extremely easy to integrate, but the real power is in the extended functionality. Rollbar telemetry can be a real time-saver, giving the context to user actions that preceded the actual issue. And for the actual deep-dive in errors, RQL (the query language) is invaluable. I'm also a big fan of the Slack notifications and the flexibility they offer. --- - [How to Fix Ruby Bundle Install Errors](https://rollbar.com/blog/ruby-bundle-install-errors/): Ruby’s "Bundle Install" command is used to install all the dependencies of a Ruby project. However, this command may fail for a variety of reasons. ### Michael Auderer - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=michael-auderer --- - [How to Handle ActiveRecord:: RecordNotFound in Ruby](https://rollbar.com/blog/ruby-activerecord-recordnotfound/): When an application is unable to find a record corresponding to the parameters in the database, a RecordNotFound error message appears in Ruby. ### Sadequl Hussain - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=sadequl-hussain --- - [How to Implement Try Catch Finally Blocks in PHP](https://rollbar.com/blog/php-try-catch-finally/): Using try-catch-finally blocks can help you write more robust and reliable code by handling exceptions in a controlled manner. Learn how! ### Mobile iOS Error Simulator > Ready to explore Rollbar without the coding hassle? The Rollbar Error Simulator iOS app is the ultimate solution for carefree error testing, designed for users without coding experience. - Published: 2023-11-07 - Modified: 2023-11-13 - URL: https://rollbar.com/blog/mobile-error-simulator/ - Categories: product Meet Rollbar’s Mobile Error Simulator Ready to explore Rollbar without the coding hassle? The Rollbar Error Simulator iOS app is the ultimate solution for carefree error testing, designed for users without coding experience. Seamlessly connecting to your Rollbar account, this user-friendly app lets you simulate errors effortlessly with just a single tap on a button. No technical expertise is needed! Just create a new account, opt for the Error Simulator experience, and you'll be guided. Detailed instructions can be found in our documentation. As always, please feel free to provide feedback via customer support or product@rollbar. com to discuss any ideas, suggestions, or problems when using Rollbar. --- ### Jaee Apte - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=jaee-apte --- - [Heroku Deploy App Webhook Support](https://rollbar.com/blog/heroku-deploy-app-webhook/): Heroku Deploy Hook Changes Starting October 17, 2022, Heroku will stop accepting new deploy hooks. Existing hooks will continue working... - [How to Handle the Unpermitted Parameters Error in Ruby](https://rollbar.com/blog/ruby-unpermitted-parameters-error/): The Unpermitted Parameters error is raised when the given parameter is not expected in an update, create or user-defined action. Learn more. ### Megan Anderson - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=megan-anderson --- - [Runtime Errors in Ruby](https://rollbar.com/blog/ruby-runtime-errors/): A RuntimeError is a default exception raised when an invalid operation is performed. Let’s learn more about these errors with some examples. ### How to Fix text.ParseException in Java > The ParseException is a checked exception in Java that signals an unexpected error while parsing an input. Learn how to fix it. - Published: 2023-11-06 - Modified: 2023-12-12 - URL: https://rollbar.com/blog/how-to-fix-java-text-parseexception/ - Categories: Code Tutorials, Java - Tags: java The java. text. ParseException is a checked exception in Java that signals an unexpected error while parsing an input. This typically happens when the input does not match the expected format. Since ParseException is a checked exception, it must be explicitly handled in methods that can throw this exception - either by using a try-catch block or by throwing it using the throws clause. What Causes ParseException Here are some common scenarios where a ParseException may occur when trying to parse an input: An input string doesn't match the format expected by the parsing method. Unexpected characters or symbols in the input string can throw this exception. Parsing can be sensitive to locale settings. If the input string format doesn't match the locale settings, it may cause a ParseException. Attempting to parse null or empty strings can also cause this exception. ParseException Example Here's an example of a ParseException thrown when trying to parse an input string that doesn’t match the expected format: import java. text. ParseException; import java. text. SimpleDateFormat; import java. util. Date; public class ParseExceptionExample { public static void main(String args) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); String dateString = "2023/01/01"; try { Date date = dateFormat. parse(dateString); } catch (ParseException pe) { pe. printStackTrace; } } } In this example, the input string "2023/01/01" is attempted to be parsed to a date in the "yyyy-MM-dd" format. Since the string does not match the expected format, a ParseException is thrown: java. text. ParseException: Unparseable date: "2023/01/01" at... --- ### Twain Taylor - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=twain-taylor --- - [How to Fix HTTPError in Python](https://rollbar.com/blog/python-httperror/): An HTTPError is raised when an HTTP request returns a status code that represents an error. Learn how to fix it. - [How to use Try Catch Throw in JavaScript](https://rollbar.com/blog/exception-handling-in-javascript-try-catch-throw/): How to use Javascript Try Catch Throw to handle exceptions. ### Rivkah Standig - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=rivkah-standig --- - [How to Handle io.netty.handler.timeout.ReadTimeout Exception in Java](https://rollbar.com/blog/java-io-netty-handler-timeout-readtimeoutexception/): This exception is thrown when no data is read within a certain period of time when using the Netty framework. Learn how to handle it. ### Mike Smith - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=mike-smith --- ### Query Smarter, Not Harder - Published: 2023-10-17 - Modified: 2023-10-17 - URL: https://rollbar.com/blog/query-smarter-not-harder/ - Categories: product Meet Rollbar’s New AI Assistant for RQL We're excited to share an update to our Analyze package—introducing the RQL AI Assistant, a natural language AI assistant to help you write your RQL queries. If you've ever been frustrated by the complexity of Rollbar Query Language (RQL) or the time it takes to get your data, this feature is the solution you've been waiting for. We understand working with the RQL has been a steep learning curve for many. That's why we took your feedback seriously and developed a feature that allows you to use natural language for your queries. Imagine getting the needed data by simply typing your question as if asking another engineer. No more wrestling with complex syntax or table schemas; just type and go. The natural language interface allows query input in plain English, eliminating the intimidating barrier of learning a new query language. Our AI Assistant offers real-time intelligent query and table schema suggestions, making query construction seamless and straightforward. Once you double-check, you can submit and see your results. No more looking through documentation or being frustrated with understanding the query structure. We hope this increases your workflow and speeds up fetching the data you need. Efficiency is at the forefront of this new feature, as it helps you focus on what truly matters—analyzing data to make informed decisions to resolve your errors faster. This is an experimental feature, so we will limit the queries to 50 a month for the account. But we are... --- - [How to Fix Runtime Errors in Python](https://rollbar.com/blog/python-runtime-error/): A runtime error is a type of error that occurs during program execution. Learn how to fix them. ### Phil Nash - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=phil-nash --- - [How to Avoid java.util.concurrent.TimeoutException](https://rollbar.com/blog/java-timeoutexception/): The java.util.concurrent.TimeoutException is thrown when a blocking operation times out. Learn how to avoid it. ### Derek Haynes - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=derek-haynes --- - [Guide to Frontend Error Handling](https://rollbar.com/blog/guide-to-frontend-error-handling/): Discover the secrets to effective error handling and how to track errors in real-time. Don't miss out on the essential tips in this must-read guide. ### How to Fix java.io.IOException > The IOException happens while performing read, write or search operations in files or directories. Handle it using try-catch or by using the throws clause. - Published: 2023-10-16 - Modified: 2023-10-16 - URL: https://rollbar.com/blog/how-to-fix-java-ioexception/ - Categories: Code Tutorials, Java - Tags: java The java. io. IOException is a checked exception in Java that indicates a problem while performing Input/Output (I/O) operations. This usually happens when a failure occurs while performing read, write or search operations in files or directories. Since IOException is a checked exception, it must be explicitly handled in methods that can throw this exception - either by using a try-catch block or by throwing it using the throws clause. What Causes IOException A java. io. IOException occurs when an input or output operation fails or gets interrupted. This can happen for various reasons such as: File not found Permission issues Unexpected disruptions during file handling IOException Example Here's an example of a IOException thrown when trying to read from a file that does not exist: import java. io. BufferedReader; import java. io. FileReader; import java. io. IOException; public class IOExceptionExample { public static void main(String args) { String filePath = "file. txt"; try { BufferedReader reader = new BufferedReader(new FileReader(filePath)); String line; while ((line = reader. readLine) ! = null) { System. out. println(line); } reader. close; } catch (IOException e) { System. err. println("An IOException occurred: " + e. getMessage); e. printStackTrace; } } } In the above example, a file named "file. txt" is attempted to be read. Since this file does not exist, running the above code throws an IOException. The code catches the exception and prints an error message along with the stack trace: An IOException occurred: file. txt (No such file or directory) java.... --- - [What is E_WARNING in PHP?](https://rollbar.com/blog/php-e-warning/): PHP run-time warnings are non-fatal errors that do not halt script execution. Learn more about them here. ### Jennifer Marsh - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=jennifer-marsh --- - [Anler Hernandez Peral](https://rollbar.com/?employee=anler-hernandez-peral): - [What is Migration in Rails?](https://rollbar.com/blog/migration-in-rails/): Migration in Rails makes it easy to change an application's database schema consistently, but occasionally it trips up. Learn what steps you can take. ### Ken Sheppardson - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=ken-sheppardson --- - [How to Resolve NameError: Uninitialized Constant in Ruby](https://rollbar.com/blog/ruby-nameerror/): The NameError: Uninitialized Constant error in Ruby is often raised when a given variable or constant is undefined or invalid. Learn how to handle it. - [Cyrus Radfar](https://rollbar.com/?employee=cyrus-radfar): - [What is E_NOTICE in PHP?](https://rollbar.com/blog/php-e-notice/): Run-time notices indicate minor errors in PHP that do not halt script execution. Learn more about them here. ### Introducing Item Snooze > We are introducing a new Snooze option for items. When Snoozing an item, the user will define how long an item will stop sending notifications for - once that time period expires then the item will return to normal and begin sending notifications again. - Published: 2023-10-12 - Modified: 2023-10-12 - URL: https://rollbar.com/blog/item-snooze/ - Categories: product Introducing Item Snooze Introduction We are introducing a new Snooze option for items. When Snoozing an item, the user will define how long an item will stop sending notifications for - once that time period expires then the item will return to normal and begin sending notifications again. Currently, setting an Item to have a status of Muted prevents notifications from being sent until somebody changes the status back to Active. The new Snooze option will perform a similar function, but there will be an end date defined after which notifications will be sent again for an item, and the status of the item will not change. When Snoozed, all occurrences will still be processed and will count towards your occurrence budget, only notifications will be stopped. Why are we making this change? We are introducing the new Snooze option as a response to feedback users are not using Mute status due to concerns about the danger a muted item could still be an active issue, generating a lot of occurrences, but no notifications would be received. This could mean that users are not aware of the existence or scale of an issue in their system, as well as inadvertently using up the account’s occurrence allowance. Adding an end date will help mitigate this risk while allowing users to stop notifications being sent while a known issue is being investigated. Rollout process The Snooze option will be made available on the item list and item detail screens for paid tiers... --- ### Cuttlesoft - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=cuttlesoft --- - [How to Fix E_WARNING: strpos(): Empty needle in PHP](https://rollbar.com/blog/php-e-warning-strpos-empty-needle/): This warning is issued if the substring being searched for using the strpos() function is an empty string. Learn how to fix it. - [Nick Hodges](https://rollbar.com/?employee=nick-hodges): ### Elliott Spira - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=elliott-spira --- - [How to Use errors.WithMessage() in Golang](https://rollbar.com/blog/golang-errors-withmessage/): The errors.WithMessage() method adds context to errors by annotating them with a new message which makes debugging easier. Learn more about it here. ## Job Titles - [How to Handle the NoMethodError in Ruby](https://rollbar.com/blog/ruby-nomethoderror/): The NoMethodError is raised when an object on which we are calling the method doesn't exist. Learn how to use method_missing() to handle it. - [](https://rollbar.com/?employee=1139): - [How to Handle InvalidArgument Exception in PHP](https://rollbar.com/blog/php-invalidargumentexception/): The PHP InvalidArgumentException is an exception that is thrown when an inappropriate argument is passed to a function. Learn how to handle it. ### Chief Product Officer - Published: 2022-06-30 - Modified: 2022-06-30 - URL: https://rollbar.com/?job_title=chief-product-officer --- - [How to Handle an ActionController:: RoutingError in Ruby on Rails](https://rollbar.com/blog/ruby-on-rails-routingerror/): The Rails version of the 404 error, ActionController::RoutingError occurs when a URL requested does not have a matching route. Learn how to catch them. - [Juanjo Marrón](https://rollbar.com/?employee=juanjo-marron): - [How to Handle PDOException in PHP](https://rollbar.com/blog/php-pdoexception/): The PHP PDOException is a runtime exception that occurs when something goes wrong while using the PDO class or its related extensions. Learn how to handle it. ### Talent & Operations - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=talent-operations --- - [Maggie Liu](https://rollbar.com/?employee=maggie-liu): ### Co-founder and CTO - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=co-founder-and-cto --- - [Drew Meyers](https://rollbar.com/?employee=drew-meyers): ### CRO - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=cro --- - [Diego Veralli Bortheiry](https://rollbar.com/?employee=diego-veralli-bortheiry): ### Sales - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=sales --- - [Owen Linderholm](https://rollbar.com/?employee=owen-linderholm): ### Engineering - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=engineering --- - [Rafael Moore Cid](https://rollbar.com/?employee=rafael-moore-cid): ### Operations - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=operations --- - [David Hackett](https://rollbar.com/?employee=david-hackett): ### Product Design - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=product-design --- ### Finance - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=finance --- - [Christian Fitzgerald](https://rollbar.com/?employee=christian-fitzgerald): ### Talent - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=talent --- - [Jennifer Vannoy](https://rollbar.com/?employee=jennifer-vannoy): ### Country Manager, Hungary - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=country-manager-hungary --- - [Justin Hochsprung](https://rollbar.com/?employee=justin-hochsprung): ### Marketing - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=marketing --- - [Krisztián Griz](https://rollbar.com/?employee=krisztian-griz): ### Product - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=product --- - [Nitin Bhasin](https://rollbar.com/?employee=nitin-bhasin): ### Co-founder and CEO - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=co-founder-and-ceo --- ### Customer Success - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=customer-success --- - [Maria Stanley](https://rollbar.com/?employee=maria-stanley): ### Revenue Operations - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=revenue-operations --- - [Daniel McCoy](https://rollbar.com/?employee=daniel-mccoy): ### Developer Advocate - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=developer-advocate --- ## Customers - [Rollbar Editorial Team](https://rollbar.com/?employee=rollbar-editorial-team): - [Pawel Szczodruch](https://rollbar.com/?employee=pawel-szczodruch): - [Patrick Bonner](https://rollbar.com/?employee=patrick-bonner): - [Nico Kruger](https://rollbar.com/?employee=nico-kruger): - [Jack Delahunt](https://rollbar.com/?employee=jack-delahunt): ### eCommerce - Published: 2021-10-18 - Modified: 2021-11-09 - URL: https://rollbar.com/customers/ecommerce/ --- - [Nia Hampton](https://rollbar.com/?employee=nia-hampton): ### Plexus - Published: 2021-09-22 - Modified: 2021-11-09 - URL: https://rollbar.com/customers/plexus/ --- - [Queen Lee](https://rollbar.com/?employee=queen-lee): - [Gaurav Anand](https://rollbar.com/?employee=gaurav-anand): ### Shortcut - Published: 2021-07-28 - Modified: 2022-12-07 - URL: https://rollbar.com/customers/shortcut/ --- - [Hayden Kempton](https://rollbar.com/?employee=hayden-kempton): ### Everplans - Published: 2021-07-28 - Modified: 2021-08-16 - URL: https://rollbar.com/customers/everplans/ --- - [Ian Flanagan](https://rollbar.com/?employee=ian-flanagan): ### FinTech - Published: 2021-07-28 - Modified: 2021-08-16 - URL: https://rollbar.com/customers/fintech/ --- - [Israel Perez](https://rollbar.com/?employee=israel-perez): ### Greenhouse - Published: 2021-07-28 - Modified: 2023-05-23 - URL: https://rollbar.com/customers/greenhouse/ --- - [Matheas Hutcherson](https://rollbar.com/?employee=matheas-hutcherson): ### CircleCI - Published: 2021-07-28 - Modified: 2023-05-23 - URL: https://rollbar.com/customers/circleci/ --- - [Abby Dugan](https://rollbar.com/?employee=abby-dugan): ### CVENT - Published: 2021-07-28 - Modified: 2021-11-09 - URL: https://rollbar.com/customers/cvent/ --- ### Twilio - Published: 2021-07-28 - Modified: 2023-05-23 - URL: https://rollbar.com/customers/twilio/ --- ## Changelogs - [Martin Malloy](https://rollbar.com/?employee=martin-malloy): - [András Tarsoly](https://rollbar.com/?employee=andras-tarsoly): - [Dean Rizzo](https://rollbar.com/?employee=dean-rizzo): ### Rollbar is removing old grouping versions to improve fingerprinting in July - Published: 2022-07-12 - Modified: 2022-07-12 - URL: https://rollbar.com/development-updates/rollbar-is-removing-old-grouping-versions-to-improve-fingerprinting-in-july/ Seamless grouping is the concept of making sure that when we roll out new grouping versions, already grouped items won’t change. When we receive an occurrence, we basically fingerprint it with all previous versions, to make sure that we keep the existing grouping (if any). This means that as we keep adding new grouping versions, more and more versions need to be checked, thus the performance of the fingerprinting degrades. As we keep adding new grouping versions, more and more versions need to be checked. Thus, the performance of the fingerprinting degrades. To improve fingerprinting, we decided to remove old grouping versions. What does this mean? Removing grouping versions means that occurrences that have been grouped by these rules will be re-grouped. You might see new items generated for occurrences that have been grouped before (with the history of the original item not visible in the new item). Do I need to do anything? No action is needed from your side, the changes will take effect automatically on July 12, 2022. We continue to train our models regularly on millions of crashes to analyze frequently occurring error types and accurately distinguish different ones. This allows engineers to identify, triage, and respond to errors more quickly. Learn more about how grouping works at Rollbar --- - [Jeffrey Hoffer](https://rollbar.com/?employee=jeffrey-hoffer): ### Rollbar is removing old grouping versions to improve fingerprinting in April - Published: 2022-04-29 - Modified: 2022-07-12 - URL: https://rollbar.com/development-updates/rollbar-is-removing-old-grouping-versions-to-improve-fingerprinting/ Seamless grouping ensures that when we roll out new grouping versions, items that are already grouped won’t change. When we receive an occurrence, we basically fingerprint it with all previous versions to ensure that we keep the existing grouping (if any). As we keep adding new grouping versions, more and more versions need to be checked. Thus, the performance of the fingerprinting degrades. To improve fingerprinting, we decided to remove old grouping versions. What does this mean? Removing grouping versions means that occurrences that have been grouped by these rules will be re-grouped. You might see new items generated for occurrences that have been grouped before (with the history of the original item not visible in the new item). Do I need to do anything? No action is needed from your side, the changes will take effect automatically on May 18, 2022. We continue to train our models regularly on millions of crashes to analyze frequently occurring error types and accurately distinguish different ones. This allows engineers to identify, triage, and respond to errors more quickly. Learn more about how grouping works at Rollbar --- - [Alex Tkach](https://rollbar.com/?employee=alex-tkach): ### New, updated Software Development Kits are available - Published: 2022-04-28 - Modified: 2022-04-28 - URL: https://rollbar.com/development-updates/new-updated-software-development-kits-are-available/ We are pleased to announce new and updated software development kits (SDKs) and capabilities. These SDKs keep Rollbar current on both older, but very significant, platforms like . Net, PHP and Laravel and also the fastest-moving platforms like Apple iOS, React, Typescript and Flutter. “Rollbar is an essential tool from the moment developers say ‘Hello World’ in whatever language they leverage. These releases ensure that we evolve along with the range of languages and frameworks that we support,” Cyrus Radfar, Rollbar Chief Product Officer The new and updated SDKs that Rollbar unveiled today include: . Net v5: The latest release of Rollbar’s . Net SDK adds Blazor browser-side WebAssembly (Wasm) support and introduces RollbarInfrastructure. When enabled within Blazor client-side hosts, RollbarInfrastructure offloads significant payload packaging and processing to a dedicated background worker thread to be handled asynchronously. Also, Rollbar configuration can now be grouped into functionally relevant groups, or configurational options, instead of one long flat list of settings. Apple/Mac SDK: The successor to the Rollbar-iOS SDK, this new release is more lightweight, has better-defined public APIs that are more Swift-friendly and can be used on all current Apple operating systems and platforms. The modular design allows users to leverage all or just parts of this SDK, for which each SDK module is a self-contained SPM package that automatically brings in any required dependency on any other package of the SDK as needed. Also, crash reporting with this SDK is now optional. Memory management features are coming soon. Flutter Beta:... --- ### April 2022 Grouping Update - Published: 2022-04-26 - Modified: 2022-04-26 - URL: https://rollbar.com/development-updates/april-2022-grouping-update/ We are pleased to announce our new Grouping Update which introduces patterns for Elixir and Scala. Both recently supported SDKs with increasing usage and user demand Additionally, this update significantly improves grouping accuracy across all our major languages: Ruby, Java, Javascript, PHP, Python, C#, and Go allowing users to discover and respond to errors more quickly with less noise and more accurate items in the item list. We continue training our models regularly on millions of crashes to analyze frequently occurring error types and accurately distinguish different ones. As usual, these improvements have been rolled out automatically for all accounts with auto-upgrade enabled, so you can focus on fixing bugs! Learn more about how grouping works at Rollbar --- - [Nathan Sweet](https://rollbar.com/?employee=nathan-sweet): ### Slack Oauth 2.0 system is available for your Rollbar projects - Published: 2022-03-18 - Modified: 2022-03-18 - URL: https://rollbar.com/development-updates/slack-oauth-2-0-system-is-available-for-your-rollbar-projects/ Rollbar is adopting the updated Oauth 2. 0 flow created by Slack. Slack has revised their access tokens and now allows the Rollbar Slack bot to have its own credentials. This replaces the use of member’s credentials.   What does this mean? You don’t have to switch over, but you should consider the benefits of migrating. To complete the migration, you must add the Rollbar Slack bot to any channels that you'd like to post alerts.   What are the benefits of Bot Tokens on Slack? Slack integration will use a single bot token, so there will not be any confusion regarding switching user access tokens. You will have the chance to manually enter the appropriate Slack channel via a text input box, which will eliminate the long load times of a drop-down for channel selection when configuring Slack notifications. When team members leave your Slack workspace, their “owned” tokens do not need to be swapped out as they would today. How to migrate to Slack Oauth 2. 0? We recommend you complete the migration process to ensure continued support of notifications. To start the migration process for the new Slack Oauth 2. 0 version, you will need to go to your Account Settingsand follow the steps in Rollbar.   Migrate to Slack Oauth 2. 0  1. Go toSettings, and selectSlack, underNotifications. 2. On theManage Account Slack Settingspage, begin the migration process by clicking on theAdd to Slackbutton. 3. On the upper left corner,select the Slack workplaceyou want to add... --- - [Oluwarotimi Joseph Olorunyomi](https://rollbar.com/?employee=oluwarotimi-joseph-olorunyomi): ### January 2022 Grouping Update - Published: 2021-12-20 - Modified: 2022-03-18 - URL: https://rollbar.com/development-updates/january-2022-grouping-update/ This month we are excited to roll out a new January Grouping Update which significantly improves Grouping quality for some of our more relevant SDKs. Mainly PHP, Ruby, Python and Javascript. This update simplifies over 100 Grouping rules within our Grouping rule set by: Reducing overgrouping with new rules placeholders added and an increase of 4. 16% in successful new fingerprints Fixing undergrouping by removing generic rules and decrease of 16. 36% in the affected fingerprints Finally, and the most exciting part, these improvements have been rolled out automatically for all accounts with auto-upgrade enabled, so you can focus on fixing bugs while we take care of the squashing effort! --- - [Yoz Grahame](https://rollbar.com/?employee=yoz-grahame): ### Update regarding Log4j Java vulnerabilities - Published: 2021-12-15 - Modified: 2022-02-10 - URL: https://rollbar.com/development-updates/update-regarding-log4j-java-vulnerabilities/ Rollbar is aware of the Log4j Java vulnerabilities (CVE-2021-44228 and CVE-2021-45046) and we have updated all the potentially impacted infrastructure and we are making updates available for our Java SDK users. We are dedicated to making sure that Rollbar runs quickly and securely within your applications.  Learn about how we’ve addressed the Log4J “Log4Shell” zero-day CVE-2021-44228 and CVE-2021-45046 --- - [Ami Felson](https://rollbar.com/?employee=ami-felson): ### December 2021 Grouping Update - Published: 2021-12-07 - Modified: 2022-02-10 - URL: https://rollbar.com/development-updates/december-2021-grouping-update/ We are pleased to announce our December 2021 Grouping Update that significantly improves grouping coverage and quality for some of our most common SDKs. Java, PHP, and Python issues now have from 2% to 6% higher coverage rates allowing users to discover more bugs and respond to them more quickly. Grouping quality has been improved as well by reducing overgrouping of errors caused by generic rules overwriting more specific ones. Additionally, this release improves our internal pattern standardization for easier rule management. We can continue training our models more efficiently and analyzing millions of crashes to distinguish different error types accurately. Best of all, these improvements have been rolled out automatically for all accounts with auto-upgrade enabled, so you can focus on squashing and fixing bugs! --- ## Events - [Tamsin Guy](https://rollbar.com/?employee=tamsin-guy): - [Omar Powell Guaglione](https://rollbar.com/?employee=omar-powell-guaglione): - [Árpád Fülöp](https://rollbar.com/?employee=arpad-fulop): - [Michael Ng](https://rollbar.com/?employee=michael-ng): ### We’ve partnered with the team over at Vue School to bring you Vue.js Forge Episode 4 for FREE! - Published: 2023-07-24 - Modified: 2023-07-24 - URL: https://rollbar.com/event/big-news-weve-partnered-with-the-team-over-at-vue-school-to-bring-you-vue-js-forge-episode-4-for-free/ --- - [Syed Ahmed](https://rollbar.com/?employee=syed-ahmed): ### Webinar: Technical Intro to Improve: Release - Published: 2022-10-10 - Modified: 2022-10-10 - URL: https://rollbar.com/event/webinar-technical-intro-to-improverelease/ --- ### Webinar: Introduction to Improve:Release - Published: 2022-09-23 - Modified: 2022-09-23 - URL: https://rollbar.com/event/webinar-introduction-to-improverelease/ --- ### Webinar: Accelerating Code Quality with the DORA Metrics - Published: 2021-05-24 - Modified: 2023-06-20 - URL: https://rollbar.com/event/next-event/ --- - [Daniel Day](https://rollbar.com/?employee=daniel-day): ### Webinar: 99% DevOps Presents | The Anatomy of Observability - Published: 2021-04-29 - Modified: 2021-05-27 - URL: https://rollbar.com/event/title-lorem-ipsum-dolor-sit-amet-consectetur-adipi-scing-elit-sed-do-eiusmod-tempor-incididunt-ut-labore-et-dolore-magna-aliqua-3/ --- ### Conference: Developer Week Management 2021 - Published: 2021-04-29 - Modified: 2023-06-20 - URL: https://rollbar.com/event/title-lorem-ipsum-dolor-sit-amet-consectetur-adipi-scing-elit-sed-do-eiusmod-tempor-incididunt-ut-labore-et-dolore-magna-aliqua-2/ --- ## News - [Charles Roberts](https://rollbar.com/?employee=charles-roberts): ### Rollbar to improve code with new AI-assisted workflows and automation-grade grouping - Published: 2020-11-19 - Modified: 2021-06-09 - URL: https://rollbar.com/news/rollbar-to-improve-code-with-new-ai-assisted-workflows-and-automation-grade-grouping/ Rollbar wants to shift developers’ focus to continuously improving code, instead of having to continuously fix it. --- - [Sachin Goyal](https://rollbar.com/?employee=sachin-goyal): ### Rollbar powers AI-assisted workflows with new grouping engine - Published: 2020-11-19 - Modified: 2021-06-09 - URL: https://rollbar.com/news/rollbar-powers-ai-assisted-workflows-with-new-grouping-engine/ Rollbar, providers of the Continuous Code Improvement Platform, is introducing AI-assisted workflows powered by its new automation-grade grouping engine, enabling developers... --- ### Rollbar Lets Developers Focus on Continuously Improving Code with AI-Assisted Workflows and Automation-Grade Grouping - Published: 2020-11-19 - Modified: 2021-05-27 - URL: https://rollbar.com/news/rollbar-lets-developers-focus-on-continuously-improving-code-with-ai-assisted-workflows-and-automation-grade-grouping/ Rollbar, providers of the Continuous Code Improvement Platform, today announced AI-assisted workflows powered by its new automation-grade grouping engine. --- - [Mrunal Kapade](https://rollbar.com/?employee=mrunal-kapade): ### Rollbar Announced AI-Assisted Workflows - Published: 2020-11-19 - Modified: 2021-06-09 - URL: https://rollbar.com/news/rollbar-announced-ai-assisted-workflows/ Rollbar announced AI-assisted workflows powered by its new automation-grade grouping engine. --- - [Ryan Clark](https://rollbar.com/?employee=ryan-clark): ### Rollbar rolls out service to improve error detection for developers - Published: 2020-11-18 - Modified: 2021-06-09 - URL: https://rollbar.com/news/rollbar-rolls-out-service-to-improve-error-detection-for-developers/ Rollbar Inc. today updated its Continuous Code Improvement Platform with a new “automation-grade grouping engine”... --- ### Rollbar Acquires Hungary-Based Samebug - Published: 2019-02-25 - Modified: 2021-05-27 - URL: https://rollbar.com/news/rollbar-acquires-hungary-based-samebug/ Rollbar announced it has acquired Hungary-based Samebug --- ### Lolapps engineers launch Rollbar - Published: 2013-02-26 - Modified: 2021-05-27 - URL: https://rollbar.com/news/lolapps-engineers-launch-rollbar/ Brian Rue and Cory Virok launch an error tracking platform for developers. --- ## Tradeshows ## Webinars - [Sami Atiq](https://rollbar.com/?employee=sami-atiq): ### Speeding Up Software Delivery: You're Only As Good As Your Weakest Link - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/webinar/speeding-up-software-delivery-youre-only-as-good-as-your-weakest-link/ Learn about the trends in DevOps and modern application architectures, and the common challenges enterprises face as they try to scale and speed up software delivery. --- ### CircleCI and Rollbar on enabling Continuous Delivery - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/webinar/circleci-and-rollbar-on-enabling-continuous-delivery/ Join CircleCI CTO Rob Zuber and Rollbar Co-founder and CTO Cory Virok as they discuss 9 questions about continuous delivery. --- - [Hardik "HK" Parekh](https://rollbar.com/?employee=hardik-hk-parekh): ### Debugging Apex Applications with Error Monitoring - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/webinar/debugging-apex-applications-with-error-monitoring/ Rollbar is the first company bringing the value of modern Error Monitoring and Debugging to the Apex ecosystem and to the broader Salesforce platform (supporting Apex, Lightning and Heroku). Learn how to set it up and start using it. --- - [Angeline Junaedy](https://rollbar.com/?employee=angeline-junaedy): ### Maximize Your Workflow Through the Clubhouse API - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/webinar/maximize-your-workflow-through-the-clubhouse-api/ Learn how the Clubhouse API can give you a greater amount of control over your data and help automate your workflow. --- - [Finbar Fleming](https://rollbar.com/?employee=finbar-fleming): ### Advanced Error Monitoring & Debugging With Rollbar - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/webinar/advanced-error-monitoring-debugging-with-rollbar/ Rollbar helps developers deploy better software, faster, with solutions that identify, prioritize and resolve coding errors. Join Rollbar's product experts as they showcase key features to reduce deployment time and cost with an accuracy that you and your team can rely on. In this webinar we will demo: - Error Monitoring with Rollbar Core - Error classification - Rollbar Query Language (RQL) for best in-class insights - Notifications Rules Engine - Rollbar release monitoring --- ### Smart Error Monitoring for Spring Developers - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/webinar/smart-error-monitoring-for-spring-developers/ Nobody likes to find out about errors from the customers themselves. The ripple effect of churn from a single user interaction is crucial to an organization. For Spring Developers, capturing errors early on in your application is important as it’s a popular framework for enterprise application. Join us to learn how to get started with a sophisticated Error Monitoring with simple integration for Spring apps. Learn key benefits, installation guidelines and configuration tips on Error Monitoring for Spring. In this webinar we will review: - Market Overview - Introduction to Error Monitoring for Spring Apps - How to get started with Rollbar for Spring - Key Features Overview - Live Q&A --- - [Eva Zhang](https://rollbar.com/?employee=eva-zhang): ### Best Practices for Moving from a Monolith to Microservices - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/webinar/best-practices-for-moving-from-a-monolith-to-microservices/ Transitioning from a Monolith to a Microservices architecture can take years to complete. Companies are under more pressure than ever before to innovate faster and decrease the time to market while maintaining best-in-class customer experience. In this webinar, we'll discuss: - Organizational changes that will help you adopt a Microservice architecture - How to bring change to your organization - How you develop applications in a Microservice architecture - Setting up your Monolith for Microservices and optimizing your local development environment --- - [Zoltán Bődi](https://rollbar.com/?employee=zoltan-bodi): - [Phillip Ramirez](https://rollbar.com/?employee=phillip-ramirez): - [Christopher Seaman](https://rollbar.com/?employee=christopher-seaman): - [Julian Simpson](https://rollbar.com/?employee=julian-simpson): - [An Nguyen](https://rollbar.com/?employee=an-nguyen): - [Renee Wells-Wood](https://rollbar.com/?employee=renee-wells-wood): - [Jonathan Lilienthal](https://rollbar.com/?employee=jonathan-lilienthal): - [David Woller](https://rollbar.com/?employee=david-woller): - [Tin Nguyen](https://rollbar.com/?employee=tin-nguyen): - [Atsuko Nishiguchi](https://rollbar.com/?employee=atsuko-nishiguchi): - [Mani Askari](https://rollbar.com/?employee=mani-askari): - [Patrick Smyth](https://rollbar.com/?employee=patrick-smyth): - [Michael Mukhin](https://rollbar.com/?employee=michael-mukhin): - [Colin Flynn](https://rollbar.com/?employee=colin-flynn): - [Ramon Niebla](https://rollbar.com/?employee=ramon-niebla): - [Gianina Borcean](https://rollbar.com/?employee=gianina-borcean): - [Austen Lacy](https://rollbar.com/?employee=austen-lacy): - [Marcelo Oliveira](https://rollbar.com/?employee=marcelo-oliveira): - [Imran Rizvi](https://rollbar.com/?employee=imran-rizvi): - [Dmitry Mazin](https://rollbar.com/?employee=dmitry-mazin): - [Chris Maki](https://rollbar.com/?employee=chris-maki): - [Nicholas Vincent-Hill](https://rollbar.com/?employee=nicholas-vincent-hill): - [Gabriella Papp](https://rollbar.com/?employee=gabriella-papp): - [Lubos Parobek](https://rollbar.com/?employee=lubos-parobek): - [Mike French](https://rollbar.com/?employee=mike-french): - [Rachel Foster](https://rollbar.com/?employee=rachel-foster): - [Erwin Tung](https://rollbar.com/?employee=erwin-tung): - [Paul Moriarty](https://rollbar.com/?employee=paul-moriarty): - [Steve Beane](https://rollbar.com/?employee=steve-beane): - [Michael "MC" McCullough](https://rollbar.com/?employee=michael-mc-mccullough): - [David Basoco](https://rollbar.com/?employee=david-basoco): - [Francesco Crippa](https://rollbar.com/?employee=francesco-crippa): - [Anthony Tran](https://rollbar.com/?employee=anthony-tran): - [Kay Xiong](https://rollbar.com/?employee=kay-xiong): - [Sharrin Fuller](https://rollbar.com/?employee=sharrin-fuller): - [Artur Moczulski](https://rollbar.com/?employee=artur-moczulski): - [Andrey Kornich](https://rollbar.com/?employee=andrey-kornich): - [Mary Lee Olson](https://rollbar.com/?employee=mary-lee-olson): - [Jessica Hsieh](https://rollbar.com/?employee=jessica-hsieh): - [Letania Ferreira](https://rollbar.com/?employee=letania-ferreira): - [Vijay Selvaraj](https://rollbar.com/?employee=vijay-selvaraj): - [Renáta Tamási-Irsai](https://rollbar.com/?employee=renata-tamasi-irsai): - [Árpád Tamási](https://rollbar.com/?employee=arpad-tamasi): - [Dániel Poroszkai](https://rollbar.com/?employee=daniel-poroszkai): - [András Horváth](https://rollbar.com/?employee=andras-horvath): - [Magdalena Dzindzisz](https://rollbar.com/?employee=magdalena-dzindzisz): - [Ádám Németh](https://rollbar.com/?employee=adam-nemeth): - [Zita Lőrinczi](https://rollbar.com/?employee=zita-lorinczi): ### How to Handle “IndexError: index out of range in self” in PyTorch > Incorporate index validation, masking strategies, and stringent data validation in your PyTorch code to prevent or avoid this error altogether. - Published: 2023-10-05 - Modified: 2023-10-13 - URL: https://rollbar.com/blog/how-to-handle-index-out-of-range-in-self-pytorch/ - Categories: Code Tutorials, Python - Tags: Python The popular deep learning and natural language processing framework PyTorch is renowned for being user-friendly and adaptable, so what’s the deal with the IndexError: index out of range in self error? This happens when a PyTorch embedding tensor attempts to access an index that is out of bounds. A lookup table that converts integers into vectors of real numbers is known as an embedding tensor. The valid indices for this tensor, which has a predetermined vocabulary size, run from 0 to vocabulary_size - 1. What causes the "IndexError: index out of range in self" error? This error is one of the most frequent in PyTorch and it mainly happens for two reasons. 1. Attempting to access out-of-range indices The most frequent cause of this error is attempting to access an index that is larger than the embedding layer's permitted vocabulary size. For instance: import torch # Create an embedding layer with a vocabulary size of 10 and an embedding dimension of 5. embedding = torch. nn. Embedding(10, 5) # Create an input tensor with an index that is out of bounds. input_tensor = torch. tensor # Try to access the embedding tensor using the out-of-bounds index. output_tensor = embedding(input_tensor) Output: When the above code is run, you get the following error (the code was run in Google Colab): —----------------------------------------------------------------------- IndexError Traceback (most recent call last) in 9 10 # Try to access the embedding tensor using the out-of-bounds index. —-->11 output_tensor = embedding(input_tensor) _________________________________________ 2 frames_____________________________________________________________________ /usr/local/lib/python3. 10/dist-packages/torch/nn/functional. py in... --- - [Walt Jones](https://rollbar.com/?employee=walt-jones): - [Nellie Sisti](https://rollbar.com/?employee=nellie-sisti): ### How to Handle the "localStorage is not defined" Error in JavaScript > From unsupported browsers to server-side JavaScript environments, understand the root causes and learn three ways to handle this error effectively. - Published: 2023-10-05 - Modified: 2023-11-13 - URL: https://rollbar.com/blog/how-to-handle-localstorage-is-not-defined-error-javascript/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript The localStorage is not defined error generally occurs when you try to access the localStorage object in JavaScript, but the browser environment where your code is running does not support it. Using the localStorage web storage API, web applications can store key-value pairs locally in a web browser, allowing you to persistently retain data on the client-side even if the user shuts their browser or navigates away from the website. What causes the “localStorage is not defined” to occur The localStorage is not defined error can occur for several reasons, such as: Unsupported Browsers: Some older browser configurations might not support localStorage. So it’s a good option to either check the compatibility before using the browser or move to the latest version of the browser. Using ‘localStorage’ in Node. js: Since Node. js is a server-side JavaScript environment, it doesn’t have access to the browser's localStorage API. Therefore, using localStorage in Node. js might throw an error. For example: try { localStorage. setItem('key', 'value'); } catch (error) { console. error(error. message); //raises the error } Output: PS D: \BackEnd> node index. js localStorage is not defined Using ‘localStorage’ in React. js: Native apps do not have access to the browser's localStorage API, so you will get an error. Using ‘localStorage’ in Next. js: When using Next. js during server-side rendering, you do not have access to localStorage. When using a pre-built library or framework: If a library or framework that uses localStorage is executed in an environment where it is... --- - [Vince Power](https://rollbar.com/?employee=vince-power): - [Sergei Bezborodko](https://rollbar.com/?employee=sergei-bezborodko): - [Chris Pfohl](https://rollbar.com/?employee=chris-pfohl): ### How to Resolve “ReferenceError: Buffer is not defined” in Node.js > Check you're running the script with Node, not in the browser, and that you've mentioned the Buffer object before use. Also use the latest Node version. - Published: 2023-10-05 - Modified: 2023-10-05 - URL: https://rollbar.com/blog/how-to-resolve-referenceerror-buffer-is-not-defined/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript, Node.js Let me guess. You’re managing I/O activities and encountered this error? What happened is either: You’re using the Buffer class in a browser environment. Only Node. js, a server-side JavaScript runtime environment, offers the Buffer class. This error will appear if you attempt to use the Buffer class in a browser. The Buffer class is not supported by the version of Node. js you are running. The later versions of Node. js (4. x) included the Buffer class. The ReferenceError: Buffer is not defined error could appear if you are using an older version of Node. js. In Node. js, a buffer containing unprocessed binary data is represented by a global object called Buffer. For operations like reading from or writing to files, managing network packets, and encoding and decoding data, the ability to store and interact with binary data is quite useful. Therefore, when you attempt to use the Buffer class in Node. js but it is not available, ReferenceError: Buffer is not defined occurs. Example of “ReferenceError: Buffer is not defined” Buffer in Browser Now, the ReferenceError: Buffer is not defined error will be logged to the browser's developer console when you access this HTML file in a web browser. This is due to the fact that the Buffer class is exclusive to Node. js and is not accessible in a typical browser setting. Output: ReferenceError: Buffer is not defined at example. html:11:32 (anonymous) @example. html:16 How to resolve the “ReferenceError: Buffer is not defined” error You can... --- - [Zachary Flower](https://rollbar.com/?employee=zachary-flower): - [How to Wrap and Unwrap Errors in Golang](https://rollbar.com/blog/golang-wrap-and-unwrap-error/): In Golang, wrapping errors entails giving them more context and in order to see what context has been introduced they must be unwrapped. Learn more. - [Hemant Jain](https://rollbar.com/?employee=hemant-jain): - [PHP's ErrorException Explained (with Example)](https://rollbar.com/blog/php-errorexception/): The PHP ErrorException class is meant to be thrown explicitly to catch and handle errors that would otherwise be ignored. Learn more about it here. - [Daniel Steuernol](https://rollbar.com/?employee=daniel-steuernol): ### Your Tokens, Your Control - Published: 2023-10-03 - Modified: 2023-10-05 - URL: https://rollbar.com/blog/your-tokens-your-control/ - Categories: product A New UI That Works as Fast as You Do In today’s fast-paced development environment, managing your project access tokens efficiently is more crucial than ever. That’s why we're excited to unveil a series of upgrades to Rollbar’s Project Access Token user interface to streamline your workflow and enhance your project’s security. Intuitive Status Indicators for Better Token Management One of the key updates we're introducing is the addition of token states, specifically 'Expired' and 'Expiring Soon' states. These states are designed to offer a quick and intuitive understanding of your tokens’ status. No more scouring through your list of tokens trying to figure out which ones need attention; now, a glance is all it takes. Bulk Editing: Efficiency, Supercharged Managing multiple tokens can be tedious, especially when each requires individual attention. That's why we’ve added the bulk editing feature. With just a few clicks, you can select multiple tokens and perform actions like 'Disable,' ‘Expire,’’ 'Regenerate,' or 'Delete. ' Whether you need to make large-scale changes or quickly adapt to new requirements, this feature is designed to make your life easier. Securing Your Tokens Post-Security Incident Our commitment to your project's security is unwavering, even more so in light of the recent data breach. The enhanced UI and new token states are our immediate response to help you manage your tokens securely and efficiently. While we're doubling down on our security measures to prevent such incidents in the future, we also want to equip you with the tools to... --- - [Jon de Andrés Frías](https://rollbar.com/?employee=jon-de-andres-frias): - [Dan St. Clair](https://rollbar.com/?employee=dan-st-clair): ### Brian's story with Rollbar > Rollbar enabled our small team to support a large number of client applications in production. Their monitoring software works initially with almost no configuration and also allows for detailed customization for our clients at scale. We have stuck with rollbar on other stacks beyond Rails including iOS and Android as have a great, easy to use interface that always has the information devs needs to debug production issues. - Published: 2023-10-03 - Modified: 2024-04-15 - URL: https://rollbar.com/blog/brians-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Brian Samson Technologist, Entrepreneur, and CTO Brian has now been using Rollbar for 100 months! 1. My Role Ten Forward signed up with Rollbar in 2016 and began using it on a single client project. By 2023 we had rollbar deployed across more than 21 client projects that we managed, and 6 additional clients had become large enough that they signed up for their own paid Rollbar accounts and granted us access. As early as 2020 we positioned Rollbar as a "must-have" vendor for our clients - the service was extremely valuable and the cost was low enough that our clients did not balk at signing up and entering a credit card. 2. My Passion in the Role Many of our clients are small, local businesses who are not "tech startups" but instead use technology, specifically software, to grow, support, and maintain their existing business. These companies often have small margins and no room for full time technical ops staff. Rollbar has allows us to provide critical services with very low downtime, which is extremely cost effective for this class of clients. 3. The Rollbar Experience Rollbar enabled our small team to support a large number of client applications in production. Their monitoring software works initially with almost no configuration and also allows for detailed customization for our clients at scale. We have stuck with rollbar on other stacks beyond Rails including iOS and Android as have a great, easy to use interface that always has the information devs needs... --- - [Adil Aijaz, Co-Founder & CEO of Split](https://rollbar.com/?employee=adil-aijaz-co-founder-ceo-of-split): - [Taron Foxworth](https://rollbar.com/?employee=taron-foxworth): - [Announcing Rollbar Live In-App Chat Support](https://rollbar.com/blog/announcing-rollbar-live-in-app-chat-support/): What’s better than great support? Live in-app support with a real person when you need it During the last two... ### Sébastien's story with Rollbar > But what's kept me a loyal Rollbar user? It's the trustworthiness of the tool. In an age where alert fatigue is real, Rollbar's machine learning-driven grouping ensures we only get alerts that matter. The seamless integrations with other tools and the detailed, actionable alerts mean we can resolve issues faster, ensuring our users always get the best experience. - Published: 2023-10-03 - Modified: 2024-04-15 - URL: https://rollbar.com/blog/sebastiens-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Sébastien Scoumanne Co-Founder & CTO Sébastien has now been using Rollbar for 100 months! My Journey as CTO of Ring Twice and the Power of Rollbar In the ever-evolving world of technology, I've had the privilege of being at the helm of some truly transformative projects. Today, I'd like to share a bit about my professional journey, my passions, and a tool that has been instrumental in our operations: Rollbar. 1. My Role and Ring Twice I currently serve as the Chief Technology Officer (CTO) for Ring Twice. Originally known as ListMinut, Ring Twice is a pioneering platform in the collaborative economy space in Belgium. We connect individuals in need of assistance for everyday tasks with trustworthy neighbors ready to lend their expertise. Whether it's electrical work, gardening, personal assistance for the handicapped, or event photography, Ring Twice offers a diverse range of services. Our platform has seen significant growth over the years. We've expanded our service range, introduced new categories like "event" and "personal assistance," and made strategic decisions like removing the "others" category to ensure better accuracy and matchmaking between clients and service providers. 2. My Passion in the Role What truly excites me about my role at Ring Twice is the impact we create. We're not just a platform; we're a community. Every time a student offers tutoring services, a retiree shares their expertise in gardening, or a part-time employee assists with IT tasks, we're fostering connections and empowering individuals. The ability to leverage technology to create... --- - [How to Fix AttributeError in Python](https://rollbar.com/blog/python-attributeerror/): The Python AttributeError is an exception that occurs when an attribute reference or assignment fails. Learn how to fix it. - [István Erdő](https://rollbar.com/?employee=istvan-erdo): - [The Ultimate Guide to Error Logging in Go](https://rollbar.com/blog/golang-error-logging-guide/): Logging can be a life-saver when it comes to fixing faults in your Go code. Learn how to log ✓ to the console ✓ to a file ✓ using a logging framework. - [Michal Zalecki](https://rollbar.com/?employee=michal-zalecki): ### Nacif's Story with Rollbar > Comprising a team of skilled software engineers, designers, and project managers, they have successfully developed multiple web applications for clients on all 6 continents. Leveraging technologies such as NodeJS, Ruby, Docker, and AWS, they emphasize rapid, high-quality, and efficient software development. The team believes in the combined strength of individual expertise and collaborative effort. They offer tailored solutions by understanding a client's business needs and are open to new collaborations. - Published: 2023-10-02 - Modified: 2024-01-31 - URL: https://rollbar.com/blog/nacif-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Nacif is a software consultancy specializing in building next-generation digital products with over 11 years of expertise. Comprising a team of skilled software engineers, designers, and project managers, they have successfully developed multiple web applications for clients on all 6 continents. Leveraging technologies such as NodeJS, Ruby, Docker, and AWS, they emphasize rapid, high-quality, and efficient software development. The team believes in the combined strength of individual expertise and collaborative effort. They offer tailored solutions by understanding a client's business needs and are open to new collaborations. 1. What company do you work for (describe their product/service) and what projects are you working on there? I work at Nacif which is a dev shop focused on developing web applications and mobile apps. Currently we are working on a project called Enzo Custom https://enzocustom. com/, which is a retailer on the Man fashion industry. 2. What are you most passionate about in your current and/or past roles? I love to be a part of the development of technology and the internet. As a kid, I've always wanted to be able to build software and complex applications, and I'm glad I'm able to do that now. I'm also passionate about the people I work with, I love to be able to help them grow and learn new things. 3. Is there anything in particular about Rollbar that has kept you a loyal user? Rollbar interface makes it very easy to spot the latest exceptions on the application, and when I need to... --- - [Mehak Garg](https://rollbar.com/?employee=mehak-garg): - [Helaine de Tomasi](https://rollbar.com/?employee=helaine-de-tomasi): ### PLUM's Story with Rollbar > At PLUM, we focus on crafting custom software solutions tailored to specific needs. Our projects range from helping startups launch their initial products to assisting established enterprises in scaling and enhancing their software infrastructure. - Published: 2023-10-02 - Modified: 2024-01-31 - URL: https://rollbar.com/blog/plum-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories PLUM is a software company that specializes in creating tailored solutions We believe in teamwork, innovation, and delivering top-notch results. Our dedicated team is passionate about helping businesses grow with exceptional software. 1. What company do you work for (describe their product/service) and what projects are you working on there? At PLUM, we focus on crafting custom software solutions tailored to specific needs. Our projects range from helping startups launch their initial products to assisting established enterprises in scaling and enhancing their software infrastructure. 2. What are you most passionate about in your current and/or past roles? What I'm most passionate about in my role at PLUM is the opportunity to innovate and collaborate. Every project presents a unique challenge, and finding the best solution through teamwork and creativity is incredibly rewarding. I take pride in seeing our clients succeed and grow, knowing that our software played a part in that journey. 3. Is there anything in particular about Rollbar that has kept you a loyal user? Rollbar has been an invaluable tool for us. Its real-time error tracking and detailed insights allow us to catch and fix issues before they escalate. The ease of integration and the clarity it provides into our applications' health have made it an essential part of our development process. The proactive approach to error management that Rollbar offers ensures that we deliver the best quality software to our clients. Visit Plum's LinkedIn Page Visit WebSite --- - [How to Fix TypeError Exceptions in Python](https://rollbar.com/blog/python-typeerror/): The Python TypeError is an exception that occurs when the data type of an object in an operation is inappropriate. Learn how to fix it. - [How to Fix ImportError: Cannot Import Name in Python](https://rollbar.com/blog/python-importerror-cannot-import-name/): The Python ImportError: cannot import name error occurs when an imported class is not accessible or is in a circular dependency. Learn how to fix it. - [Lotanna Nwose](https://rollbar.com/?employee=lotanna-nwose): - [How to Handle the MemoryError in Python](https://rollbar.com/blog/python-memoryerror/): A MemoryError is an error encountered in Python when there is no memory available for allocation. Learn two ways to solve this. ### Saved Views > We are introducing the ability to store a collection of applied filters as a named Saved View, so that users can quickly switch between different configured views of their items. - Published: 2023-09-27 - Modified: 2023-09-27 - URL: https://rollbar.com/blog/saved-views/ - Categories: product Saved Views On the new item list page, for Advanced and Enterprise customers we are introducing the ability to store a collection of applied filters as a named Saved View, so that users can quickly switch between different configured views of their items. For users with a large number of projects, switching between the different views of the data they are interested in can be a time-consuming manual process. To help resolve this, and to assist users in building up views of the data they are interested in, we have created the concept of a Saved View. When a combination of filters has been applied, a user can store that as a named Saved View. A particular view can be reapplied when a user wishes to see a specific view of the data again. Saved views are stored at the user level, so users can create and quickly switch between multiple views of the data that they find useful. Users can create, rename, update and delete Saved Views as required. --- - [Michael Davis](https://rollbar.com/?employee=michael-davis): - [How to Fix TypeError: Cannot Read Property Length of Undefined in JavaScript](https://rollbar.com/blog/javascript-typeerror-cannot-read-property-length-of-undefined-in-javascript/): The JavaScript TypeError: Cannot read property 'length' of undefined occurs when the length property is read on an undefined variable. - [How to Fix TypeError: Null is Not an Object in JavaScript](https://rollbar.com/blog/javascript-typeerror-null-is-not-an-object/): The JavaScript error TypeError: null is not an object occurs when a property is accessed or a method is called on a null value within Safari. - [Ivan Gomez](https://rollbar.com/?employee=ivan-gomez): - [How to Fix The Format Flags Conversion Mismatch Exception in Java](https://rollbar.com/blog/java-formatflagsconversionmismatchexception/): The FormatFlagsConversionMismatchException in Java is thrown when a conversion and a flag are incompatible in the source code. ### How to Rotate Your Tokens > Before we dive into the specifics, let's understand what regenerating a token means. When you regenerate a token, you maintain the same scope(s), rate limits, and names. What changes is the access key and the created at date. We have added this to the name column so that you can quickly tell which access tokens are new. This will allow you to swiftly rotate tokens without going through the process of creating a new one. - Published: 2023-09-15 - Modified: 2025-04-22 - URL: https://rollbar.com/blog/rotate-tokens/ - Categories: product How to Rotate Your Tokens We take your data security seriously, and as some of you may be aware, we recently had a data breach affecting 'read' and 'write' scoped tokens. As a precaution, we've expired these tokens. Here's how you can regenerate them without breaking a sweat. What is Token Regeneration? Before we dive into the specifics, let's understand what regenerating a token means. When regenerating a token, you maintain the same scope(s), rate limits, and names. What changes are the access key and the created at date. We have added this to the name column so that you can quickly tell which access tokens are new. This will allow you to swiftly rotate tokens without going through the process of creating a new one. Regenerate Tokens on the Project Page Since we have expired all read and write tokens, we developed an easier way for you to regenerate your expired read and write tokens. When you navigate to your project's access token page, you'll find a banner informing you about the compromised tokens. Below the banner, you'll find two lists: one displaying your active tokens and another listing your expired tokens. To regenerate all expired tokens for that specific project, click "Regenerate All Tokens. " This action will not only regenerate all the expired tokens but also delete them. If you'd prefer to regenerate a specific expired token, just click on the "Regenerate Token" button next to it. Doing so will regenerate that token and remove it from... --- - [Julie Jones](https://rollbar.com/?employee=julie-jones): - [How to Fix The Service Configuration Error in Java](https://rollbar.com/blog/java-serviceconfigurationerror/): The ServiceConfigurationError occurs in Java when there is a failure in loading or locating a service provider. - [How to Handle the Argument Null Exception in C#](https://rollbar.com/blog/csharp-argumentnullexception/): The ArgumentNullException occurs in C# when null arguments are passed to a method in that expects non-null values. - [Derick Chung](https://rollbar.com/?employee=derick-chung): - [Resolving the Boto3 NoCredentialsError in Python](https://rollbar.com/blog/python-boto3-nocredentialserror/): NoCredentialsError is raised while using Boto3 to access AWS in Python, when a credentials file is invalid or cannot be located. - [How to Fix the OperationalError in Python](https://rollbar.com/blog/python-operationalerror/): The OperationalError in Python is encountered when using the Psycopg library to indicate that incorrect database information was provided - [Alex Moraca](https://rollbar.com/?employee=alex-moraca): - [How to Fix ReferenceError: Event is Not Defined in JavaScript](https://rollbar.com/blog/javascript-referenceerror-event-is-not-defined/): JavaScript's ReferenceError: Event is Not Defined occurs if the event parameter is not declared correctly when using an event handler. ### Next.js vs. React Performance > This performance comparison looks at rendering, static site generation, code splitting, and SEO. Make an informed choice for your frontend framework. - Published: 2023-09-12 - Modified: 2024-02-15 - URL: https://rollbar.com/blog/next-js-vs-react-performance/ - Categories: topics - Tags: next, react In the early days of the web, the idea of performance was relatively straightforward. Pages were static, and the most dynamic thing you might encounter was a blinking banner ad. But as the web evolved, so did our ambitions. Today it's not just about building web pages anymore; it's about crafting experiences. Load speed time and search engine optimization (SEO) matter just as much as the content on the page. Thus, the choice between React and Next. js is an important one, with real-world implications. Let's explore how the rendering techniques of these two frameworks impact performance, user experience, and SEO and crown a winner. Next. js vs. React Rendering Comparison When a user goes to your website, their browser has to wait for your server to send a bundle of code that their browser will then render. In a traditional React app, this process leans heavily on Client-Side Rendering. The server sends a minimal HTML structure with links to JavaScript files. The bulk of the rendering responsibility lies with the user’s browser, which fetches, interprets, and then displays the content. This can lead to a noticeable delay before the user sees the full, interactive page. Contrast this with Next. js, which emphasizes Server-Side Rendering. Here, the server does most of the heavy lifting. When a user requests a page, the content is “pre-rendered” on the server, resulting in a fully formed HTML page being sent to the browser. This means the user sees the content faster, although not yet... --- - [How to Handle the Psycopg2 UniqueViolation Error in Python](https://rollbar.com/blog/python-psycopg2-errors-uniqueviolation/): Thrown by the psycopg2 library when a user attempts to insert a duplicate key value in a SQL or SQL-like library. - [How to Handle the FileNotFoundException in C#](https://rollbar.com/blog/csharp-filenotfoundexception/): The FileNotFoundException occurs in C# when the system is unable to locate a file when the program is executed. Learn how to handle it here. - [Jesse Gibbs](https://rollbar.com/?employee=jesse-gibbs): - [How to Fix the FileNotFoundException in Java.io](https://rollbar.com/blog/java-filenotfoundexception/): The FileNotFoundException is a checked exception in Java that occurs when an attempt to open a file denoted by a specified pathname fails. ### How to Fix “IndexError: List Assignment Index Out of Range” in Python > Think of it like trying to drop a letter into a non-existent mailbox. The index you are trying to use for assignment lies outside the valid index range of the list. - Published: 2023-09-06 - Modified: 2023-09-06 - URL: https://rollbar.com/blog/how-to-fix-indexerror-list-assignment-index-out-of-range-python/ - Categories: Code Tutorials, Python - Tags: Python The IndexError: List Assignment Index Out of Range error occurs when you assign a value to an index that is beyond the valid range of indices in the list. As Python uses zero-based indexing, when you try to access an element at an index less than 0 or greater than or equal to the list’s length, you trigger this error. It’s not as complicated as it sounds. Think of it this way: you have a row of ten mailboxes, numbered from 0 to 9. These mailboxes represent the list in Python. Now, if you try to put a letter into mailbox number 10, which doesn't exist, you'll face a problem. Similarly, if you try to put a letter into any negative number mailbox, you'll face the same issue because those mailboxes don't exist either. The IndexError: List Assignment Index Out of Range error in Python is like trying to put a letter into a mailbox that doesn't exist in our row of mailboxes. Just as you can't access a non-existent mailbox, you can't assign a value to an index in a list that doesn't exist. Let’s take a look at example code that raises this error and some strategies to prevent it from occurring in the first place. Example of “IndexError: List Assignment Index Out of Range” Remember, assigning a value at an index that is negative or out of bounds of the valid range of indices of the list raises the error. Example: my_list = my_list = 6 #... --- - [How to Fix the No Such Element Exception in Java](https://rollbar.com/blog/java-nosuchelementexception/): The NoSuchElementException in Java can be thrown by various accessor methods to indicate that the element being requested does not exist. - [Brian Rue](https://rollbar.com/?employee=brian-rue): - [Cory Virok](https://rollbar.com/?employee=cory-virok): - [Move Faster with Rollbar Improve](https://rollbar.com/blog/rollbar-improve-alpha/): Building software is complex and, at Rollbar, we believe it’s better to move quickly and manage risk intelligently rather than... - [Jason Skowronski](https://rollbar.com/?employee=jason-skowronski): - [How to Fix the Missing Resource Exception in Java](https://rollbar.com/blog/java-missingresourceexception/): The MissingResourceException occurs when a resource required by a Java program is not found within the specified filepath. ### How to Fix the “Variable Might Not Have Been Initialized“ Error in Java > This error occurs when a variable in Java is used without assigning a value to it. Learn how to resolve it. - Published: 2023-09-06 - Modified: 2023-09-06 - URL: https://rollbar.com/blog/how-to-fix-variable-might-not-have-been-initialized-error-java/ - Categories: Code Tutorials, Java - Tags: java Variables in Java should always be initialized and assigned a value before use, otherwise you’ll get the Variable Might Not Have Been Initialized error. Imagine walking into a coffee shop and ordering your favorite latte. The barista nods, grabs a cup, and then just stares at it. Confused, you ask, "What's the matter? " The barista replies, "Well, you didn't tell me how much sugar you want! " That's Java's quirky way of saying, "Hey, you forgot to initialize this variable! " Just like our barista refuses to make a drink without knowing the sugar content, Java refuses to run code when a variable hasn't been given a value. It's Java's way of avoiding any bitter (or overly sweet) surprises in your code. Let’s take a look at some common scenarios that raise this error and strategies for handling it. What causes the “Variable Might Not Have Been Initialized” error Using Uninitialized Variables: Accessing or using a variable before assigning a value to it raises this error. Example: public class Example { public static void main(String args) { int x; int ans = x + 10; //using an uninitialized variable System. out. println(ans); } } Output: java: variable x might not have been initialized Conditional Initialization: If a variable is only conditionally initialized within certain code paths, accessing it without ensuring its initialization can lead to an error. Example: public class Example { public static void main(String args) { int x; int val = 2; if(val%2! =0) { x =... --- - [How to Fix the Unknown Format Conversion Exception in Java](https://rollbar.com/blog/java-unknownformatconversionexception/): The UnknownFormatConversionException in Java is thrown when an unknown conversion occurs while formatting data. - [Craig Guillot](https://rollbar.com/?employee=craig-guillot): - [How to Fix the Missing Format Argument Exception in Java?](https://rollbar.com/blog/java-missingformatargument/): Java's MissingFormatArgumentException occurs if a format specifier does not have an argument/argument index points to a nonexistant argument. - [How to Fix the Input Mismatch Exception in Java?](https://rollbar.com/blog/java-inputmismatchexception/): Thrown by a Scanner to indicate that a retrieved token does not match the pattern for the expected type, or that the token is out of range. ### Item Detail Page Updates > We’ve been listening to all the great feedback we’ve received on the new item detail page, and we’re pushing changes to help make investigating and understanding Rollbar items easier, quicker, and more efficient.The most visible change is that the context graphs have been moved to a single full-width view on the desktop so that you can immediately see the patterns of when occurrences happened, helping to spot patterns in behavior that can give insights into causes. - Published: 2023-09-01 - Modified: 2023-09-01 - URL: https://rollbar.com/blog/item-detail-updates/ - Categories: product Making the Item Detail page quicker and easier to use Layout changes We’ve been listening to all the great feedback we’ve received on the new item detail page, and we’re pushing changes to help make investigating and understanding Rollbar items easier, quicker, and more efficient. The most visible change is that the context graphs have been moved to a single full-width view on the desktop so that you can immediately see the patterns of when occurrences happened, helping to spot patterns in behavior that can give insights into causes. This also means that the full-width stack trace is displayed directly beneath this in the Detail tab; we have also optimized the page load to make this appear quicker. After the Detail tab, the Summary tab displays summarized information from across the occurrences that make up an item to help investigate patterns within the occurrence data. Following the Summary tab, we will have the new Occurrences tab, which has moved away from being displayed in a slide over so that the individual occurrences can be investigated in detail if needed. We have aimed to reduce the vertical height of the page so that the graphs and stack trace are more visible - we have achieved this by moving the Service Links button to the top action bar and moving the context statistics to be displayed horizontally beneath the main header. We hope these changes make it easier for you to use the item detail page and resolve items more quickly. As... --- - [Tyler Cascade](https://rollbar.com/?employee=tyler-cascade): - [Java Guide: What is Heap Space & Dynamic Memory Allocation?](https://rollbar.com/blog/java-heap-space/): The heap space in Java is used for the dynamic memory allocation of Java objects and classes at runtime, i.e on the creation of a new object. - [Michael Auderer](https://rollbar.com/?employee=michael-auderer): - [How to Handle the Headless Exception in Java](https://rollbar.com/blog/java-headlessexception/): This exception is thrown when code that depends on a keyboard, display or mouse is called in an environment that does not support any of these ### New Item List > We are proud to announce that we are starting to roll out access to the new version of the item list page. The new page has been redesigned, refreshed and rebuilt from scratch; the fresh new look and feel is mobile friendly and also brings a number of immediate new benefits compared to the legacy page. - Published: 2023-08-22 - Modified: 2023-08-23 - URL: https://rollbar.com/blog/new-item-list/ - Categories: product Introducing the new item list page for all Rollbar users We are proud to announce that we are starting to roll out access to the new version of the item list page. The new page has been redesigned, refreshed and rebuilt from scratch; the fresh new look and feel is mobile friendly and also brings a number of immediate new benefits compared to the legacy page. Access will be available through a header to allow users to switch to the new page, with the ability to switch back to the legacy page if needed. New page designs Desktop The desktop view has been redesigned to have a cleaner, fresher feel with updated filters and more prominent time selector. Mobile The new item list page has been designed with mobile in mind, allowing users to view and manage items from any device. Benefits of the new item list page compared to legacy page The following features have been developed alongside the new page, which are not available on the legacy page Redesigned filters The filters have been reviewed and made clearer: When the filter sidebar is closed to allow more space to view items and their details, the applied filters can be viewed and removed from the applied filter list: Select multiple owners A new feature on the page is the ability to select multiple owners - on the legacy page it was only possible to select a single owner, now multiple individual owners can be selected in the filters, as... --- - [Java: List of Checked & Unchecked Exceptions](https://rollbar.com/blog/java-list-of-all-checked-unchecked-exceptions/): List of checked & unchecked Java exceptions with links to their corresponding guide. 1.InvocationTargetException 2.NoSuchMethodException.... - [Sadequl Hussain](https://rollbar.com/?employee=sadequl-hussain): - [What is a Java Stack Trace? How to Read & Analyze Traces](https://rollbar.com/blog/java-stack-trace/): Displayed when an error/exception occurs, stack traces in Java can be used to debug or troubleshoot issues encountered in code. - [Jaee Apte](https://rollbar.com/?employee=jaee-apte): - [How to Resolve an Uncaught Reference Error in Javascript](https://rollbar.com/blog/javascript-referenceerror/): The ReferenceError occurs when referencing a variable that does not exist or has not been initialized in the current scope. Learn how to solve it. - [PHP Nested Try-Catch](https://rollbar.com/blog/php-nested-try-catch/): In PHP, Try-catch blocks can be nested up to any desired levels and are handled in reverse order of appearance. Learn more now! ### Alfredo's story with Rollbar > One primary reason we utilize Rollbar is its ability to provide real-time feedback as soon as we deploy code to production. Aligned with the DevOps culture, we encourage our teams to deploy frequently, experiment, and embrace risks. Rollbar has proven invaluable in swiftly tracking errors in our production environment. Its feature allowing us to attach user identifiers empowers us to proactively reach out to affected customers once we've addressed bugs. Furthermore, Rollbar's ease of integration is unmatched, making it a seamless fit across all Audiense projects. - Published: 2023-08-17 - Modified: 2024-04-16 - URL: https://rollbar.com/blog/alfredos-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Alfredo Artiles Larralde Audiense Co-founder and CTO Alfredo has now been using Rollbar for 100 months! 1. What company do you work for (describe the product/service) and what projects are you working on there? I am the co-founder and CTO of Audiense, recognized as a leader in Audience Intelligence. Our software is enabling thousands of marketers and consumer researchers to be innovative and develop more relevant audience-centric strategies through proprietary social consumer segmentation, by providing insights on who consumers are and how to engage with them in the most meaningful way. Audiense unifies rich and varied social data to provide a better understanding of the unique cultures and changing social behaviors of consumer segments. Audiense makes it easier to rapidly understand and describe the real affinities and segments needed to define and deliver content and marketing to optimize engagement, campaign performance, and return on investment. 2. What are you most passionate about in your current and/or past roles? I've always been driven by the challenges and rewards that come with architecting scalable and resilient systems. Our distributed architecture, which manages high-volume transactions, is a testament to this. We've incorporated a robust stack that includes Scala, Spark, Node. js, Kafka, Clickhouse, Redis, MongoDB, RabbitMQ, Solr, and MySQL. Each technology was chosen meticulously to cater to specific demands, and seeing them work in harmony to handle real-time updates from over 2000 million social profiles is incredibly fulfilling. Moreover, we've embarked on refining our software development process, aligning with best practices such as... --- - [Megan Anderson](https://rollbar.com/?employee=megan-anderson): - [How to Handle the Syntax Error in Javascript](https://rollbar.com/blog/javascript-syntaxerror/): The Javascript SyntaxError is thrown when the engine comes across tokens or token orders with incorrect syntax when parsing code. - [Twain Taylor](https://rollbar.com/?employee=twain-taylor): - [How to Handle the Socket Exception in Java](https://rollbar.com/blog/java-socketexception/): The SocketException in Java is thrown to indicate that an error was encountered while creating or accessing a Socket. - [How to Handle the Unknown Host Exception in Java](https://rollbar.com/blog/java-unknownhostexception/): The UnknownHostException occurs when trying to connect to a remote host, but the IP address of the host could not be determined. ### Item Summarization > Our new item summarization feature introduces a more profound complexity accessible through two areas - the new summary tab and the typicality value found within the details tab. The summary data provides an overview of the data found within each parameter value, while the typicality value indicates how typical an individual occurrence’s parameter is within all the occurrences in the item. While these elements hold the potential for greater insight, the sheer volume of occurrences and the varying nature of parameters can create a maze of information. This may lead to missed patterns, incorrect interpretations, or extended investigation time. - Published: 2023-08-14 - Modified: 2023-08-14 - URL: https://rollbar.com/blog/item-summarization/ - Categories: product - Tags: Summarization Introducing Item Summarization We are happy to announce the release of item summarization - a powerful tool to help users understand and utilize the data contained within the occurrences that make up an item. Organizations and engineers often deal with many occurrences within an Item when investigating underlying causes. With such vast amounts of data, spotting patterns and insights can be incredibly challenging and time-consuming. Even with a comprehensive occurrences table, the specific details and typicality of individual occurrences can be difficult to interpret, leading to delays and potential confusion and delays in the investigation process. Our new item summarization feature introduces a more profound understanding of the complexity within the occurrence data, accessible through two areas - the new summary tab and the typicality value found within the details tab. The summary data provides an overview of the data found within each parameter value, while the typicality value indicates how typical an individual occurrence’s parameter is within all the occurrences in the item. While these elements hold the potential for greater insight, the sheer volume of occurrences and the varying nature of parameters can create a maze of information. This may lead to missed patterns, incorrect interpretations, or extended investigation time. Item summarization offers an elegant solution to make use of this maze of data. In the new summary tab, users can see the top 3 values within each summarized key:value pair and the proportion of occurrences with each particular value. By assisting in ruling in or out the... --- - [Rivkah Standig](https://rollbar.com/?employee=rivkah-standig): - [How to Implement Custom Exceptions in C++](https://rollbar.com/blog/cpp-custom-exceptions/): Custom exceptions in C++ provide relevant information about an error to the exception handling mechanism and customize the error message. - [How to Handle the Clone Not Supported Exception in Java](https://rollbar.com/blog/java-clonenotsupportedexception/): Thrown to indicate that Object.clone() was called to clone an object, but that object's class does not implement the Cloneable interface. - [Mike Smith](https://rollbar.com/?employee=mike-smith): ### React.js vs. Next.js: Which Framework is Better, and When? > In the ever-evolving world of web development, staying stagnant isn’t an option. Learn the pros and cons of these two giants of front-end frameworks. - Published: 2023-08-14 - Modified: 2024-02-15 - URL: https://rollbar.com/blog/react-js-vs-next-js/ - Categories: topics - Tags: JavaScript, next, react When React arrived on the scene in 2013, it quickly became the darling of developers by making everything about UI delightful and component-y. Yet as millions embraced React, they also demanded more than just delightful UI. Developers craved snappier performance and better search engine optimization (SEO). That's when Next. js waltzed in, whispered "server-side rendering," and changed the game. Next. js builds on React's legacy and takes it to new horizons. But what does this evolution mean for the everyday developer? How does one navigate the nuances between React and Next. js? And perhaps most importantly, when should you choose one over the other? These are not mere academic questions, but ones that have tangible implications for website performance, user experience, search engine rankings, and overall project success. In this article, we'll unpack the journey from React to Next. js, delve into the unique strengths each brings to the table, and provide insights to guide your next project decision. What is React? React is an open-source, front-end JavaScript library that was originally created at Facebook to address challenges that they had in building and maintaining complex user interfaces. Since open-sourcing it, React has grown immensely popular in the developer community thanks to its effective management of state and the creation of reusable UI components. React's virtual DOM speeds up rendering by updating only the user interface elements that have changed, making interactions faster and more fluid. Example: How to Create a Simple Counter App in React Create a React app... --- ### How to Integrate ChatGPT with React > Unlock the potential of AI in your React apps. From signing up to the OpenAI API to writing React code, our step-by-step tutorial has got you covered. - Published: 2023-08-14 - Modified: 2023-09-22 - URL: https://rollbar.com/blog/how-to-integrate-chatgpt-with-react/ - Categories: Code Tutorials, JavaScript - Tags: OpenAI, react If you're not thinking about integrating AI into your apps, you're missing out. In this tutorial, we will walk you through how to set up a React app that harnesses the vast knowledge of ChatGPT via the OpenAI API, allowing you to take your UI components to a whole new level. Step 1: Sign up for the OpenAI API To use the ChatGPT language model in a React app, first go to https://beta. openai. com/signup/ and sign up to get an API key that you will use to authenticate your requests. Sign up for the OpenAI API Step 2: Setup the development environment Create an empty folder, for instance ‘chat-gpt-app’, and open it in an IDE like VSCode. Now open the terminal in VSCode and type the below command to create a Vite app with a React template. npm create vite@latest app -- --template react The below folder structure will be created: Setup the ChatGPT development environment Now enter the following command in the VSCode console to access the app folder: cd app Run the npm install. npm install To build your chat interface, you'll also need to install the chatscope UI kit. npm install@chatscope/chat-ui-kit-react Step 3: Write React code to connect to the OpenAI API Now enter the following code into the App. jsx file located within the src folder: import { useState, useEffect } from 'react'; import '. /App. css'; import '@chatscope/chat-ui-kit-styles/dist/default/styles. min. css'; import { MainContainer, ChatContainer, MessageList, Message, MessageInput, TypingIndicator, } from '@chatscope/chat-ui-kit-react'; const API_KEY ="YOUR_API_KEY_HERE"... --- - [Phil Nash](https://rollbar.com/?employee=phil-nash): - [How to Resolve the Instantiation Exception in Java](https://rollbar.com/blog/how-to-resolve-the-instantiation-exception-in-java/): The InstantiationException in Java is thrown when the JVM cannot instantiate a Java type at runtime using the Class.newInstance() method. - [Derek Haynes](https://rollbar.com/?employee=derek-haynes): ### Diego's story with Rollbar > Having readily available, almost plug-and-play libraries to add Rollbar in our apps, and being rock solid for all these years it's what seals the deal for me. Also, the ability to easily connect Rollbar to our monitoring system and alerting is one of the most helpful things that it provides for us. - Published: 2023-08-09 - Modified: 2024-04-16 - URL: https://rollbar.com/blog/diegos-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Diego Fernández Engineering Manager Diego has now been using Rollbar for 100 months! 1. What company do you work for (describe the product/service) and what projects are you working on there? I work for BeBanjo, now part of MEDIAGENIX (https://www. mediagenix. tv/bebanjo/). We build products to help manage editorial and availability information for video-on-demand content. We offer our products as a service (SaaS) just like Rollbar, but we do plenty of integrations with our customer's systems or 3rd party services. I work as an Engineer Manager in the team in charge of such integrations, the Projects Team. 2. What are you most passionate about in your current and/or past roles? I'm in a manager position now, so my main focus is to help the development team perform in the best way possible. To do so it's imperative to provide guidance on how people can grow professionally, so I really like to mentor and foster a culture where people can feel that they are becoming better at their job while maintaining a healthy relationship with it. 3. Is there anything in particular about Rollbar that has kept you a loyal user all this time? Having readily available, almost plug-and-play libraries to add Rollbar in our apps, and being rock solid for all these years it's what seals the deal for me. Also, the ability to easily connect Rollbar to our monitoring system and alerting is one of the most helpful things that it provides for us. --- - [How to Fix the Empty Stack Exception in Java](https://rollbar.com/blog/java-emptystackexception/): The EmptyStackException is a runtime exception in Java that is thrown by methods in the Stack class to indicate that the stack is empty. - [Jennifer Marsh](https://rollbar.com/?employee=jennifer-marsh): - [How to Fix the Type Not Present Exception in Java](https://rollbar.com/blog/java-typenotpresentexception/): Java's TypeNotPresentException is thrown when the definition of a type, attempted to be accessed using a specified name, cannot be found. ### Sam's story with Rollbar > I've used Rollbar in all my apps for 10+ years. What is great about Rollbar is that it works just as well for a relatively simple web app like Addressable as it does for complex, enterprise web apps like ReadyTech. - Published: 2023-08-09 - Modified: 2024-04-16 - URL: https://rollbar.com/blog/sam-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Sam Giffney Chief Information Officer Sam has now been using Rollbar for 100 months! 1. What company do you work for (describe the product/service) and what projects are you working on there? I'm the CIO at ReadyTech www. readytech. com. au. ReadyTech make mission critical SaaS for people-centric businesses in vertical markets such as education, employment, and local government. I'm leading our cloud, information security and platform engineering teams. We're currently working on how we can leverage the latest in large language model technologies to provide copilot functionality for case managers in our return-to-work product. This is exciting as we believe we can add massive efficiencies that improve outcomes for many jobseekers. 2. What are you most passionate about in your current and/or past roles? At ReadyTech, we have many teams building many complex systems and are constantly growing. I enjoy the challenge of scaling a high performing technology organisation. I have always loved building software. My current role in leadership doesn't allow for much time on the tools but I do have some side projects which keep me hands on after hours. One is www. addressable. dev, which provides a simple RESTful API for address autocompletions in Australasia. 3. Is there anything in particular about Rollbar that has kept you a loyal user all this time? I've used Rollbar in all my apps for 10+ years. What is great about Rollbar is that it works just as well for a relatively simple web app like Addressable as it does... --- - [How to Resolve the Illegal Format Conversion Exception in Java](https://rollbar.com/blog/java-illegal-format-conversion-exception/): Java's IllegalFormatConversionException is an unchecked exception thrown when an incompatible type argument is passed to a format specifier. - [Ken Sheppardson](https://rollbar.com/?employee=ken-sheppardson): - [Reduce Debugging Time With Rollbar](https://rollbar.com/blog/reduce-debugging-time-with-rollbar/): Developers want to work on new features. They want to fix bugs that occur, but they don’t want to spend hours searching for the problem. ### How to Fix the “List Index Out of Range” Error in Python Split() > When accessing an index that does not exist within the valid range of entries in a list in Python, the "List Index Out of Range" exception is raised. - Published: 2023-08-04 - Modified: 2023-08-17 - URL: https://rollbar.com/blog/how-to-fix-list-index-out-of-range-in-python/ - Categories: Code Tutorials, Python - Tags: Python One of the most common operations in Python is splitting strings into lists based on a specified delimiter. However, when using split, you may encounter the error List Index Out of Range . This guide will unpack what this error means, why it occurs, and some common strategies to prevent it. What Causes the “List Index Out of Range” Error 1. Incorrect Index Usage This happens when using a negative index that exceeds the range of valid negative indices or trying to access an index greater than or equal to the length of the list of substrings. Example code: Incorrect Index Usage # Incorrect index usage causing the error sample_string = "apple,banana,mango" delimiter = ',' # Splitting the string into a list of substrings fruits = sample_string. split(delimiter) # Accessing an index greater than or equal to the length of the list print(fruits) In the above example, the sample_string is split using the delimiter , . As a result, the split method returns a 3-element list . Now, when accessing an element at index 5 in the list of fruits, it results in the List Index Out of Range error because index 5 exceeds the valid range of indices and causes the IndexError to be raised. Output: Traceback (most recent call last): File"C:\Users\name\AppData\Local\Programs\Python\Python311\check. py", line11, in print (fruits IndexError: list index out of range 2. Invalid or Missing Delimiter Using an invalid delimiter for the split operation leads to an incomplete or incorrect split, and if the delimiter doesn't exist,... --- - [Cuttlesoft](https://rollbar.com/?employee=cuttlesoft): - [Rollbar Certified for SOC 2 Type II and SOC 3](https://rollbar.com/blog/rollbar-certified-for-soc-2-type-ii-and-soc-3/): We are pleased to announce that an independent service auditor has certified that Rollbar meets SOC 2 Type II criteria... - [Slack Oauth 2.0 system is available for your projects](https://rollbar.com/blog/slack-oauth-2-0-system-is-available-for-your-projects/): NoSuchFieldError in Java is thrown when an application accesses or modifies a field of an object/class that no longer contains that field. - [How to Resolve the NoSuchFieldError in Java](https://rollbar.com/blog/java-nosuchfielderror/): NoSuchFieldError in Java is thrown when an application accesses or modifies a field of an object/class that no longer contains that field. - [How to Fix Unsupported major.minor Version 52.0 Error in Java](https://rollbar.com/blog/java-unsupported-major-minor-version-52-0/): Java's unsupported major.minor version error happens when a class is compiled using a higher version JDK but executed on a lower version JRE. ### Nicholas's story with Rollbar > Rollbar continues to be an invaluable tool in my day to day work at AppFolio. I have specifically enjoyed their responsiveness when I have encountered issues with the product. Recently, I was most impressed with Rollar's UI redesign as it showed a dedication to providing the best possible user experience. I often tell the story of when Rollbar first released the new UI that I encountered a bug and reported it on a Sunday to then have that bug fixed and in production the very next day! - Published: 2023-08-02 - Modified: 2024-04-16 - URL: https://rollbar.com/blog/nicholas-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Nicholas L. Staff Software Engineer Nicholas has now been using Rollbar for 100 months! 1. What company do you work for (describe the product/service) and what projects are you working on there? I currently work for AppFolio and I work specifically on the payment processing platform. 2. What are you most passionate about in your current and/or past roles? Working in payment processing is a uniquely challenging space in software development; It requires a level of attention to detail that is often far higher than most other spaces due to the precision required. This is the type of environment I thrive in as I am passionate about creating a consistent and dependable experience to the customer by developing a highly available, robust, and fault tolerant system. Using Rollbar, my team and I have been able to efficiently address issues in a timely manner as it is one of few irreplaceable tools we use to diagnose problems in real time. 3. Is there anything in particular about Rollbar that has kept you a loyal user all this time? Rollbar continues to be an invaluable tool in my day to day work at AppFolio. I have specifically enjoyed their responsiveness when I have encountered issues with the product. Recently, I was most impressed with Rollar's UI redesign as it showed a dedication to providing the best possible user experience. I often tell the story of when Rollbar first released the new UI that I encountered a bug and reported it on a... --- - [How to Resolve the SecurityException in Java](https://rollbar.com/blog/java-securityexception/): The SecurityException in Java is a runtime exception thrown by the security manager to indicate a security violation. - [Handling the ArithmeticException Runtime Exception in Java](https://rollbar.com/blog/java-arithmeticexception/): The ArithmeticException in Java is thrown by the JVM when an arithmetic operation creates an exceptional condition. - [Handling the ClassCastException Runtime Exception in Java](https://rollbar.com/blog/java-classcastexception/): The ClassCastException in Java happens when the JVM tries to cast an object to a class (or in some instances, an interface) and fails. ### André story with Rollbar > Most of our applications use Ruby. Adding Rollbar to an application and seeing errors on the UI or sending notifications to our Slack channels is plug-and-play. It just works. - Published: 2023-08-02 - Modified: 2024-04-16 - URL: https://rollbar.com/blog/andre-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories André Luis Leal Cardoso Junior Principal Software Engineer André has now been using Rollbar for 100 months! 1. What company do you work for (describe the product/service) and what projects are you working on there? I work at RD Station, one of the largest SaaS companies in Latin America. I spend most of the time working on RD Station Marketing. Which is a marketing automation tool. Our customers can manage Email Marketing campaigns, landing pages, analytics, leads, etc. We handle tons of processes and data from our customers. 2. What are you most passionate about in your current and/or past roles? I'm crazy about software health and architecture. How can we build something that will need to keep evolving fast, have new features, and will be available for a long time, while still being uncomplicated for new software engineers. 3. Is there anything in particular about Rollbar that has kept you a loyal user all this time? We started using Rollbar for its simplicity and price back when we used to host our services on Heroku. Most of our applications use Ruby. Adding Rollbar to an application and seeing errors on the UI or sending notifications to our Slack channels is plug-and-play. It just works. Over time we also had to learn some valuable lessons. For example, grouping and managing the volume of errors is a must. An application that throws thousands of exceptions without care may be a maintenance hell and hold a lot of technical debts. The service... --- - [How to Handle String Index Out Of Bounds Exception in Java](https://rollbar.com/blog/java-stringoutofboundsexception/): The StringOutOfBoundsException in Java that occurs when accessing a string at an index which is negative/greater than the string length. - [Elliott Spira](https://rollbar.com/?employee=elliott-spira): ## Job Titles - [How to Handle the NumberFormat Exception in Java](https://rollbar.com/blog/java-numberformatexception/): The NumberFormatException in Java is thrown when it is not possible to convert a string to a numeric type (e.g. int, float). ### Nick's story with Rollbar > I am able to quickly and easily see what is going wrong with the platform and trace the errors across multiple environments when needed. A quick glance at the dashboard or items list can tell me if a deploy went smoothly, if the system is having some broader issues, or if users may be experiencing a degraded experience. - Published: 2023-08-02 - Modified: 2024-04-16 - URL: https://rollbar.com/blog/nicks-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Nick Mathis Lead Software Architect Nick has now been using Rollbar for 100 months! 1. What company do you work for (describe the product/service) and what projects are you working on there? I've worked with a few companies and projects that have used Rollbar. The largest and longest project was a fintech product focused on modernizing check writing. That was a Ruby on Rails project with a 10+ year history. Currently I'm working for a local startup that is focused on a B2B application for an internal process. We're also using Rollbar and it's been helpful, even pre-launch, to see what errors are happening in remote environments. 2. What are you most passionate about in your current and/or past roles? I love making software, or helping others make software that solves users needs and is a joy to use. Not all software is solving exciting problems, but even the most mundane task should leave users with a sense of "this worked, I had no hurdles, and everything was easy", even if the task is inherently boring or not exciting. Seeing users as people. and not just a feature consumer, helps tremendously. 3. Is there anything in particular about Rollbar that has kept you a loyal user all this time? I am able to quickly and easily see what is going wrong with the platform and trace the errors across multiple environments when needed. A quick glance at the dashboard or items list can tell me if a deploy went smoothly,... --- - [Chief Product Officer](https://rollbar.com/?job_title=chief-product-officer): ### David's story with Rollbar > I've used Rollbar for over 5 years now, across different roles and when I switched positions, it was one of the first tools I set up. It's enabled us to move quickly, secure in the knowledge that if any errors occur we will be the second to know.We're big fans of the slack integration -- and our incident response team leverages that heavily. - Published: 2023-08-01 - Modified: 2024-04-16 - URL: https://rollbar.com/blog/davids-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories David Bell Senior Software Engineer David has now been using Rollbar for 100 months! 1. What company do you work for (describe the product/service) and what projects are you working on there? I'm a senior software developer who currently works for Bold Collective, who provide digital ad services. The main project I'm working on is our ad server, which serves millions of ad impressions and clicks a month. We also perform real time fraud detection and provide analytics on our traffic. 2. What are you most passionate about in your current and/or past roles? I'm most passionate about problem solving and, in my current role, ensuring that our traffic is flowing through correctly and quickly. 3. Is there anything in particular about Rollbar that has kept you a loyal user all this time? Rollbar is incredibly helpful in minimizing downtime, resolving errors, monitoring warnings and preventing disruption to our traffic flow, which is ultimately the most important thing for Bold. I've used Rollbar for over 5 years now, across different roles and when I switched positions, it was one of the first tools I set up. It's enabled us to move quickly, secure in the knowledge that if any errors occur we will be the second to know. We're big fans of the slack integration -- and our incident response team leverages that heavily. The different message levels are an incredibly useful tool, enabling us to zoom in on behaviour when necessary. --- - [How to Avoid the Concurrent Modification Exception in Java](https://rollbar.com/blog/java-concurrentmodificationexception/): The ConcurrentModificationException in Java occurs when an object is attempted to be modified concurrently without permission. - [Talent & Operations](https://rollbar.com/?job_title=talent-operations): - [Better together: Rollbar and Datadog](https://rollbar.com/blog/better-together-rollbar-and-datadog/): It just makes sense to use Rollbar for debugging and error monitoring and Datadog for observability. By taking a little time to integrate the two tools and have them work together you will reap additional benefits throughout your SDLC and also find synergies and features that you might not be making the most of right now. - [Co-founder and CTO](https://rollbar.com/?job_title=co-founder-and-cto): - [How to Handle the InterruptedException Checked Exception in Java](https://rollbar.com/blog/java-interruptedexception-checked-exception/): Java's InterruptedException is thrown when a thread is interrupted from waiting, sleeping, or when otherwise occupied. ### Sebastian's story with Rollbar > Over the years, Rollbar has been a progressive partner, constantly evolving and improving with new features and better UX. I love the way we're able to integrate Rollbar as part of our engineering processes and with our other tools, to streamline our operations. - Published: 2023-08-01 - Modified: 2024-04-16 - URL: https://rollbar.com/blog/sebastians-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Sebastian Wallin CTO and co-founder of Castle Sebastian has now been using Rollbar for 100 months! 1. What company do you work for (describe the product/service) and what projects are you working on there? I'm the CTO and co-founder of Castle (castle. io). I oversee our technical platform and work closely to our customers to make sure we develop our product in the right direction 2. What are you most passionate about in your current and/or past roles? I'm passionate about using technology and software to solve important problems and change the ways we work for the better. 3. Is there anything in particular about Rollbar that has kept you a loyal user all this time? Over the years, Rollbar has been a progressive partner, constantly evolving and improving with new features and better UX. I love the way we're able to integrate Rollbar as part of our engineering processes and with our other tools, to streamline our operations. --- - [How to Handle the UnsatisfiedLinkError Runtime Error in Java](https://rollbar.com/blog/java-unsatisfiedlinkerror-runtime-error/): The Java java.lang.UnsatisfiedLinkError is thrown when a program uses a native libaray but is unable to find it at runtime for some reason. - [CRO](https://rollbar.com/?job_title=cro): - [Sales](https://rollbar.com/?job_title=sales): - [How to Handle the Illegal Monitor State Exception in Java](https://rollbar.com/blog/java-illegalmonitorstateexception/): The IllegalMonitorStateException in Java occurs when a multithreaded application attempts to wait or notify a monitor that it does not own. ### When to Use Try-Except vs. Try-Catch > Python uses try-except, whereas languages like Java and C++ use try-catch. Here are the parallels and discrepancies you need to know to master both. - Published: 2023-07-31 - Modified: 2023-07-31 - URL: https://rollbar.com/blog/when-to-use-try-except-vs-try-catch/ - Categories: Code Tutorials, Java, Python - Tags: java, Python Are you confused when to use try-except versus try-catch? Both are popular mechanisms that gracefully handle unexpected situations. Both share a similar philosophy in syntax, where a block of code is 'tried,' and if an exception occurs, it's caught and handled in a designated way. There's one big difference between them though: try-except is for Python while try-catch is for Java. No matter what language you're more experienced in, here are the parallels and discrepancies you need to know to master both. How Are Try-Catch and Try-Except Blocks Similar? Both follow a similar syntactic pattern. You encase potentially error-prone code within a try block and then the catch and except blocks define actions to handle those errors. The syntax of the try-except block in Python is as follows: try: # some code here that might raise an exception except ExceptionType: # handle the exception here In Java, the syntax for the try-catch block is as follows: try { // some code here that might throw an exception } catch (ExceptionType e) { // handle the exception here } What Are the Differences Between Try-Catch and Try-Except? Besides the syntax difference in how you write each, there is also an additional else code block available in Python that is different. Python try: Code that might cause an exception. except: Code that handles the exception. else: Code that runs if the try block does not raise an exception. finally: Code that always runs, whether an exception occurred or not. Java try: Code... --- - [How to Handle the Negative Array Size Exception in Java](https://rollbar.com/blog/java-negativearraysizeexception/): The Negative Array Size Exception in Java occurs when an application attempts to create an array with a negative size. - [Engineering](https://rollbar.com/?job_title=engineering): - [How to Fix the Unsupported Class Version Runtime Error in Java](https://rollbar.com/blog/java-unsupportedclassversionerror/): The UnsupportedClassVersionError in Java occurs when the JVM attempts to read a malformed or otherwise erroneous class file. - [Operations](https://rollbar.com/?job_title=operations): - [How to Handle the Exception In Initializer Runtime Error in Java](https://rollbar.com/blog/java-exceptionininitializererror-runtime-error/): Java's ExceptionInInitializerError occurs when an unchecked exception takes place in a static initializer or static variable assignment. ### How to Resolve ChatGPT Rate Limit Errors > Bypass rate limit woes with our detailed guide. Discover how to monitor and manage your requests and troubleshoot issues without losing a beat in your tasks. - Published: 2023-07-31 - Modified: 2023-10-16 - URL: https://rollbar.com/blog/chatgpt-api-rate-limit-error/ - Categories: Code Tutorials, Java - Tags: java, OpenAI Ever get overwhelmed by a chatty best friend asking a lot of questions? That's what the ChatGPT API "Over the Rate Limit" error is like. It's telling you, "Woah, slow down! Let me take a sip of water before we continue. " In this guide, we will shed light on the rate limit and show you several ways to make your API requests more efficient to ensure you face as few interruptions as possible. What is the Rate Limit? ChatGPT’s API imposes a constraint on the number of times you can send requests or messages to the server within a given time period. This limitation is called the rate limit. There are actually two rate limits: RPM (requests per minute) TPM (tokens per minute) The below table showcases the default rate limits for ChatGPT’s API. Text & Embedding Chat Edit Image Audio Free trial users 3 RPM 150,000 TPM 3 RPM 40,000 TPM 3 RPM 150,000 TPM 5 images / min 3 RPM Pay-as-you-go users (first 48 hours) 60 RPM 250,000 TPM 60 RPM 60,000 TPM 20 RPM 150,000 TPM 50 images / min 50 RPM Pay-as-you-go users (after 48 hours) 3,500 RPM 350,000 TPM 3,500 RPM 90,000 TPM 20 RPM 150,000 TPM 50 images / min 50 RPM However, there is also an option to fill out the OpenAI API Rate Limit Increase Request form in order to increase your limit, in case you have higher rate limit requirements. What causes the “Over the Rate Limit” error? Simply put,... --- - [How to Fix ArrayStoreException in Java](https://rollbar.com/blog/arraystoreexception-in-java/): The ArrayStoreException in Java is a runtime exception that occurs when an incorrect type of object is stored into an array of objects. - [How to Handle the Incompatible Types Error in Java](https://rollbar.com/blog/how-to-handle-the-incompatible-types-error-in-java/): The Java incompatible types error happens when a value assigned to a variable or returned by a method is incompatible with the one declared. - [Product Design](https://rollbar.com/?job_title=product-design): - [How to Handle the Unclosed String Literal Error in Java](https://rollbar.com/blog/java-unclosed-string-literal-error/): Python unclosed string literal error refers to the Java compiler failing to interpret a string literal due to the missing of a double quote. ### How to Use the ChatGPT API with Java > Today we're taking a deep dive into the fusion of two giants: the revolutionary ChatGPT and the long-standing warhorse of programming, Java. - Published: 2023-07-26 - Modified: 2023-08-18 - URL: https://rollbar.com/blog/how-to-use-chatgpt-api-with-java/ - Categories: Code Tutorials, Java - Tags: java, OpenAI Imagine harnessing the power of ChatGPT's human-like responses right from your Java code! It'd be like adding a supercharger to your already powerful engine. This step-by-step, hands-on guide (with full example code at the end) will show you exactly how to integrate, interact, and leverage this union so you can build smarter applications. Before you know it, you'll have Java and ChatGPT playing nice to deliver a user experience that's nothing short of mind-blowing. Step 1: Set up the development environment Install the Java Development Kit (JDK) if not already installed. Set up a Java project using your favorite IDE or command-line tools. Step 2: Sign up for the OpenAI API Go to https://beta. openai. com/signup/ and sign up to get an API key that you will use to authenticate your requests. Sign up for OpenAI API Step 3: Write Java code to connect to the OpenAI API Import necessary Java classes: Import the required classes for handling HTTP connections and I/O operations. Create a class named ChatGPTAPIExample: The main class where the integration code is written. Define the ChatGPT method: The method takes the user prompt as input and returns the response from ChatGPT. It sends the request to the ChatGPT API endpoint and then extracts the response. Define the necessary parameters: URL: The URL for the ChatGPT API endpoint. OpenAI API key: The OpenAI API key which is obtained in step 2. Model: The ChatGPT model that will be used. For example, gpt-3. 5-turbo . Create an HTTP... --- - [The Ultimate Guide to Logging in Python](https://rollbar.com/blog/logging-in-python/): Logging in Python allows you to track, tag, and assign severity levels to events that happen when an application runs. - [How to Fix Method/Constructor X in Class Y Cannot be Applied to Given Types in Java](https://rollbar.com/blog/how-to-fix-method-constructor-in-class-cannot-be-applied-to-given-types-in-java/): Java "Method/Constructor in Class Cannot Be Applied To Given Types" happens when formal parameters and the actual parameters differ. - [Finance](https://rollbar.com/?job_title=finance): - [Talent](https://rollbar.com/?job_title=talent): ### How to Use the ChatGPT API with Golang > This guide will take you step-by-step on how to bring together the text-generating wizardry of ChatGPT with the simplicity and efficiency of Golang. - Published: 2023-07-26 - Modified: 2023-08-18 - URL: https://rollbar.com/blog/how-to-use-chatgpt-api-with-golang/ - Categories: Code Tutorials, GoLang - Tags: golang, OpenAI ChatGPT is like that cool, incredibly talented artist every band wants to collaborate with. When you need something extra, something that will give your application a bit of zing, that's where ChatGPT comes in. It's got that rhythm that gets feet tapping. This guide will take you step-by-step on how to bring together the text-generating wizardry of ChatGPT with the simplicity and efficiency of Golang, opening up exciting new possibilities for crafting more intelligent applications. Before getting in the weeds with the steps though, here is the complete code block to call ChatGPT within Golang and get a response. package main import ( "encoding/json" "fmt" "log" "github. com/go-resty/resty/v2" ) const ( apiEndpoint = "https://api. openai. com/v1/chat/completions" ) func main { // Use your API KEY here apiKey := "YOUR API KEY HERE" client := resty. New response, err := client. R. SetAuthToken(apiKey). SetHeader("Content-Type", "application/json"). SetBody(mapinterface{}{ "model": "gpt-3. 5-turbo", "messages": interface{}{mapinterface{}{"role": "system", "content": "Hi can you tell me what is the factorial of 10? "}}, "max_tokens": 50, }). Post(apiEndpoint) if err ! = nil { log. Fatalf("Error while sending send the request: %v", err) } body := response. Body var data mapinterface{} err = json. Unmarshal(body, &data) if err ! = nil { fmt. Println("Error while decoding JSON response:", err) return } // Extract the content from the JSON response content := data. (interface{}). (mapinterface{}). (mapinterface{}). (string) fmt. Println(content) } Output: PS D: \chatgpt go> go run chatgpt. go Yes, the factorial of 10 is calculated as follows: 10! = 10... --- - [Country Manager, Hungary](https://rollbar.com/?job_title=country-manager-hungary): - [Marketing](https://rollbar.com/?job_title=marketing): ### Usage Notifications > We're thrilled to announce the launch of Rollbar's latest initiative to provide greater transparency and control over your occurrences. Our team has worked hard to address customers' feedback and concerns based on your occurrences and overages. We are excited to introduce a new level of observability to our platform. - Published: 2023-07-25 - Modified: 2023-07-26 - URL: https://rollbar.com/blog/account-usage-notifications/ - Categories: product - Tags: Usage Notifications Introducing Rollbar’s Usage Notifications Email and Slack Integration We are pleased to announce the latest upgrade to Rollbar’s usage visibility tools - a comprehensive notification system. Following our commitment to continuous improvement, this new feature will provide immediate alerts about usage milestones via email and Slack. The newly added 'Notifications' button can be found at the top right corner of the Rollbar usage page. It is the link to a slide-out panel with two distinct tabs, 'Email' and 'Slack. ' These sections enable account owners to customize and manage alerts, strengthening awareness and control over the usage status. Notably, notifications are triggered when usage hits critical milestones: 80%, 90%, 95%, and 100% of the account’s occurrence allotment. Users will find that the account owner's email is pre-set to receive notifications within the' Email' tab. However, the system is flexible to accommodate additional recipients. Up to ten more emails can be added simply by entering each address into the input field and selecting 'Add. ' Importantly, these additional emails are not required to be linked with other Rollbar account users. If the need arises to remove an email from the list, the process is straightforward: identify the email and click the adjacent red 'x' button. On the other hand, the 'Slack' tab caters to managing notifications sent via Slack. Before setting this up, ensuring that your Rollbar account is connected to your Slack workspace is crucial. After confirming that the Rollbar Slack bot is a member of the selected channel, you... --- - [Rollbar Log4J CVE-2021-44228 (“Log4Shell”) Community Update](https://rollbar.com/blog/log4j-zero-day-2021-log4shell/): TLDR; Your data is safe with Rollbar. A zero day in the Java ecosystem was discovered that could exploit Apache’s... - [Product](https://rollbar.com/?job_title=product): - [Co-founder and CEO](https://rollbar.com/?job_title=co-founder-and-ceo): - [How to Catch Multiple Exceptions in Python](https://rollbar.com/blog/python-catching-multiple-exceptions/): Python try-except blocks can be used to catch/respond to processes that raises more than one possible exception, with a single except clause. ### Alison's story with Rollbar > Rollbar fulfills an important need for us with its grouping of items, so that we can track over long periods of time. This allows us to see trends, when issues started, how many of our customers are affected. We also find the integrations very helpful with slack messages of new items and ability to create jira issues with all the details from rollbar automatically included. - Published: 2023-07-24 - Modified: 2024-04-16 - URL: https://rollbar.com/blog/alisons-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Alison Gianotto Founder / Chief Mohawk Officer Alison has now been using Rollbar for 100 months! 1. What company do you work for (describe the product/service) and what projects are you working on there? I am the founder, lead developer and CEO of Grokability, Inc. We make the open source IT asset management software Snipe-IT (https://snipeitapp. com), and the email address validation system GoodForms (https://goodforms. com). Snipe-IT has been around for 10 years, and aims to provide a low-cost IT asset management platform that you don't have to be a rocket surgeon to use, but is flexible enough to customize to your own bespoke IT needs via our powerful REST API. You can download and run Snipe-IT yourself for free, or you can sign up for a hosted version where we take the hassle out of maintaining yet another server. GoodForms is an email address validation and certification platform that allows websites that contain email address forms ensure that the emails they collect are actually deliverable. With one line of javascript, you can be sure that the email addresses submitted are real, which prevents accidental typos (because who among us hasn't fat-fingered their own email before) and also protects your IP address reputation. 2. What are you most passionate about in your current and/or past roles? Open source is critical to Grokability, so I'm very passionate about open sourcing everything we can while building an ethical, compassionate company. I've been a contributor in open source for over 25 years and... --- - [How to Handle Unhashable Type List Exceptions in Python](https://rollbar.com/blog/handling-unhashable-type-list-exceptions/): The Python TypeError: Unhashable Type: 'list' happens when a mutable list, instead of an immutable tuple, is used as a hash argument. - [Customer Success](https://rollbar.com/?job_title=customer-success): - [Revenue Operations](https://rollbar.com/?job_title=revenue-operations): - [Developer Advocate](https://rollbar.com/?job_title=developer-advocate): ## Customers ### Cameron's story with Rollbar > Rollbar fulfills an important need for us with its grouping of items, so that we can track over long periods of time. This allows us to see trends, when issues started, how many of our customers are affected. We also find the integrations very helpful with slack messages of new items and ability to create jira issues with all the details from rollbar automatically included. - Published: 2023-07-21 - Modified: 2024-04-16 - URL: https://rollbar.com/blog/camerons-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Cameron Priem Chief Technology Office (CTO) Cameron has now been using Rollbar for 100 months! 1. What company do you work for (describe the product/service) and what projects are you working on there? I work for Pet Loyalty, we produce easy-to-use software that simplifies animal shelter operations. We are used by animal welfare organizations world wide to assist them in caring for animals at their shelter, fostering animals, adopting them out online and helping lost pet find their way back to their owner. We also include some people management tools such as volunteer management, donor management and foster parent coordination. One of our flagship products is ShelterBuddy that animal welfare organizations use as their management tool and we use ShelterBuddy with Rollbar. 2. What are you most passionate about in your current and/or past roles? We are all very passionate about animal welfare, and we are very proud to be working for a company that helps to make a difference in saving animals lives. Many of our team members have pets of their own, but we also foster animals while they need some time to find their "furever" home, volunteering at our own local shelters and assisting in rescuing wildlife animals in need. 3. Is there anything in particular about Rollbar that has kept you a loyal user all this time? Rollbar fulfills an important need for us with its grouping of items, so that we can track over long periods of time. This allows us to see trends, when... --- ### Albert's story with Rollbar > The availability or Rollbar libraries with all of our apps and environments makes it easy to have efficient and accurate error reporting at all times. We couldn't be happier with the features Rollbar has implemented and continues to implement. - Published: 2023-07-21 - Modified: 2024-04-16 - URL: https://rollbar.com/blog/alberts-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Albert Leao Founder Albert has now been using Rollbar for 100 months! 1. What company do you work for (describe the product/service) and what projects are you working on there? My name is Albert Leao I'm the founder of homesync. com, a social media management company that primarily helps real estate agents market their business online. We integrate with various social media platforms and offer content publishing tools, analytics, and ad-management. 2. What are you most passionate about in your current and/or past roles? With the advent of A. I. , we've been focused on providing high quality content generation and more advanced scheduling options. These new tools allow our clients to easily have first-rate, original, and converting content generated that is scheduled at the click of a button. When it comes to social media marketing we work closely with real estate agents, so we feel their pain when it comes to trying to market online. It's a full-time job to just keep up with the changes in social media (and recently there's been quite a lot of changes! ) so we work hard to make sure that not only do we simplify the process but that we deliver the smoothest possible experience. 3. Is there anything in particular about Rollbar that has kept you a loyal user all this time? One of the difficulties of depending on so many 3rd party applications is having to deal with issues that may arise unexpectedly. Rollbar has been our most powerful tool... --- - [How to Solve the Chunk Load Error in JavaScript](https://rollbar.com/blog/javascript-chunk-load-error/): Whenever there’s an error observed in dynamically fetching helper JavaScript files known as Chunks, a ChunkLoad Error is thrown. ### Arthur's story with Rollbar > It's always been a straightforward service to implement thanks to its integration with the Laravel framework. It is also one of my pinned tabs that I always have open and refer to multiple times a day. On the odd occasion, we have a customer-facing bug I usually find that me or the team is rolling out a fix before the customer has even gotten in contact.It's also a nice product to use, the integration with GitHub usually means the problem is displayed alongside the error message. - Published: 2023-07-21 - Modified: 2024-04-16 - URL: https://rollbar.com/blog/arthurs-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Arthur Guy Head of Engineering Arthur has now been using Rollbar for 109 months! 1. What company do you work for (describe the product/service) and what projects are you working on there? I am the head of engineering at Vestd (www. vestd. com) and lead our engineering teams. We specialise in building share scheme and equity management solutions for companies allowing businesses to easily and safely issue shares and equity to their team and investors. Our products are complex with a lot of business rules and restrictions that come into play at various stages. We are currently working on some exciting new tools for our larger users to help them manage more things in one place. 2. What are you most passionate about in your current and/or past roles? It's probably a cliché but I enjoy the challenge of building systems that solve problems. I really try and get to the underlying domain representation when designing a system, the better I can manage this, the more flexible and long-lasting the solutions tend to be. Over the years this has morphed from tackling small problems on my own to guiding engineering teams to solve problems for big businesses and thousands of users, however, the approach has always been the same. At Vestd we are solving some really big problems and doing so in a way that hasn't been done before so we are having to forge our own path. This can be frustrating as others in this space approach things a... --- - [How to Resolve The Non-static Variable/Method X Cannot be Referenced from a Static Context Error in Java](https://rollbar.com/blog/java-non-static-variable-method-x-cannot-be-referenced-from-a-static-context/): Attempting to access a non-static variable/method from a static context without a class instance creates ambiguity. - [eCommerce](https://rollbar.com/customers/ecommerce/): - [E_ERRORs in PHP: What You Need to Know](https://rollbar.com/blog/e_errors-in-php/): PHP E_ERRORs occures when a major, irrecoverable issue arises during runtime. Lesser errors are recoverable and PHP would continue to run. - [Plexus](https://rollbar.com/customers/plexus/): ### How to Handle the ChatGPT “Model is Overloaded” Error - Published: 2023-07-21 - Modified: 2023-08-18 - URL: https://rollbar.com/blog/chatgpt-model-is-overloaded-error/ - Categories: Code Tutorials, Java - Tags: OpenAI ChatGPT is a champ, but sometimes, it needs a breather. Here's what you need to know about the Model is Overloaded error and how to give it that breather. What does the "Model is Overloaded" error mean? The Model is overloaded with other requests error occurs when the OpenAI API is under a lot of stress from concurrently high user demand. In such a scenario, the model may struggle to produce timely and accurate responses, leading to this error message. What causes the “Model is Overloaded” error? There are a few potential root causes of the model overloaded error: Increased user traffic: The model may get overloaded whenever there is a rapid increase in user traffic or a large number of concurrent requests. This happens when the model is being used by an excessive number of users at once, stressing its processing power. Complex or lengthy prompts: The model might struggle to process lengthy or complex user requests, which would increase computational work and possibly overburden the system. Hardware or infrastructure limitations: OpenAI splits traffic between servers located in different regions. You may have landed on a server that currently has resource restrictions. Due to insufficient CPU or RAM, the model may become overloaded, resulting in the error. System maintenance: There may be scheduled or unscheduled maintenance on their servers. You could check the status page for any announcements. Example: “Model is Overloaded” error The below Java code makes HTTP requests to the OpenAI GPT-3. 5 API endpoint to send... --- - [Resolving TypeError: "X" is Not a Constructor in JavaScript](https://rollbar.com/blog/javascript-typeerror-x-is-not-a-constructor/): JavaScript "TypeError: "x" is not a constructor" errors occur when invalid objects or a variable is erroneously used as a constructor. - [JavaScript Constructors: What You Need to Know](https://rollbar.com/blog/javascript-constructors/): JavaScript constructors are special functions that creates and initializes an object instance of a class when created using the "new" keyword. - [Introducing Adaptive Alerts: Detect application-level error trends](https://rollbar.com/blog/introducing-adaptive-alerts-detect-application-level-trends-with-greater-accuracy/): Adaptive Alerts is a new feature from Rollbar that adds to our reliable, informative and actionable alerts about unexpected issues in monitored applications and services. Adaptive Alerts uses anomaly detection to learn the standard behavior of enterprise applications, and alerts developers about atypical exception rates, reducing unwanted noise. ### How to Deal with ChatGPT's Prompt Too Long Error > Are you getting an openai.error.InvalidRequestError about exceeding the maximum context length? Explore 5 techniques for managing prompt length. - Published: 2023-07-17 - Modified: 2023-08-18 - URL: https://rollbar.com/blog/chatgpt-prompt-too-long-error/ - Categories: Code Tutorials, Python - Tags: OpenAI Are you tired of the Prompt too Long error interrupting your flow with ChatGPT? Let's crack this nut together and learn how to keep your prompts lean, mean, and error-free. How Long is Too Long to Trigger the Error? A prompt contains a question or query that sets the context for the AI's response. The token limit of the prompt in GPT-4, for example, is 8,000 tokens, which applies to the prompt as well as the output. These tokens include characters, numbers, words, subwords, etc. One token generally corresponds to about 4 characters of text for common English text. When a developer gets the error message Prompt too Long, it indicates that the prompt's length is longer than the permitted threshold of the tokens. The token limits of OpenAI’s API may vary according to the model you use. It is important to note that any prompts reaching this limit or exceeding it may be shortened by the AI, leading to inaccurate and partial responses or the Prompt too Long error. Let’s take a look at an example. Example: Prompt Too Long Error The below Python script interacts with the OpenAI API, generating the Prompt too Long error: import openai openai. api_key = 'YOUR API KEY' def generate_text(prompt): try: response = openai. Completion. create( engine='text-davinci-003', prompt=prompt, max_tokens=1000 ) return response. choices. text. strip except openai. error. APIError as e: print(f"Error: {e}") # Generate a long prompt long_prompt = "This is a very long prompt that exceeds the maximum limit of the... --- - [Shortcut](https://rollbar.com/customers/shortcut/): - [How to Resolve The Cannot Find Symbol Error in Java](https://rollbar.com/blog/how-to-resolve-the-cannot-find-symbol-error-in-java/): The cannot find symbol error refers to a situation where the Java compiler is unable to find the symbol associated with a given identifier. - [How to Handle the <Identifier> Expected Error in Java](https://rollbar.com/blog/how-to-handle-the-identifier-expected-error-in-java/): The expected error in Java occurs when an expression statement is written outside of a constructor/method/instance initialization block. - [Spring vs. Spring Boot: Whats the Difference](https://rollbar.com/blog/spring-vs-spring-boot-whats-the-difference/): Spring Boot was introduced as a Spring Framework as the latter has become increasingly complex because of added functionalities. - [Everplans](https://rollbar.com/customers/everplans/): - [How to Fix Unreachable Statement Errors in Java](https://rollbar.com/blog/handling-the-unreachable-statement-error-in-java/): The “Unreachable Statement” error in Java arises when the compiler detects a statement that's never executable in the program's control flow. ### Hubert's story with Rollbar > I love Rollbar because of its incredibly powerful features, its freemium pricing model (which makes it really easy to start new projects with error tracking baked in from day 1, setting a good foundation from beginning rather than having to be distracted and set it up later on). - Published: 2023-07-12 - Modified: 2024-04-16 - URL: https://rollbar.com/blog/rollbar-story-hubert/ - Categories: company, User Stories - Tags: User Stories Hubert Liu Co-Founder & CTO Hubert has now been using Rollbar for 109 months! 1. What company do you work for (describe the product/service) and what projects are you working on there? I'm co-founder and CTO of Grayscale, https://grayscaleapp. com/ - we are a frontline engagement platform that helps talent acquisition and HR teams effectively communicate with their frontline workers. While we aim to reduce repetitive tasks or follow-ups through automation, we do want to keep the "human" in HR, but make it scalable for larger workforces. I work throughout the technology stack in all facets of the business, from R&D in emerging technologies to new features in our platform. 2. What are you most passionate about in your current and/or past roles? Grayscale aims to help a segment of the market that is typically underrepresented by technology. Frontline workers make up a large portion of our customers' workforce, so we want to make it easy to communicate with them, no matter what environment they work in. "Deskless" workers don't have consistent access to a desk with a computer, and therefore email is a less effective form of communication. It's a unique challenge to step into these workflows and help solve the problems they have in communication, and that's exciting. 3. Is there anything in particular about Rollbar that has kept you a loyal user all this time? I've used Rollbar across 3 organizations now in the last 9 years. Access to important information is critical to solving problems faster,... --- - [Coding Java Applications the Serverless Way](https://rollbar.com/blog/guide-to-going-serverless-with-java/): Advantages, disadvantages, and use cases of going serverless with Java. Build ✓on-demand, ✓high-availability apps without tedious server management! - [FinTech](https://rollbar.com/customers/fintech/): - [What Are Cloud Native Java Applications & Architectures](https://rollbar.com/blog/what-is-cloud-native-java/): Cloud-native Java is an approach to building and running a Java application that provides organizations with greater elasticity, resiliency, and portability. - [Quarkus vs Spring Boot: Which Framework is Right for You](https://rollbar.com/blog/quarkus-vs-spring-boot/): If you’re vacillating between the extremely popular Quarkus and Spring Boot microservices frameworks for building cloud-native Java apps, we’re here to help. - [Greenhouse](https://rollbar.com/customers/greenhouse/): ### Jonathan's story with Rollbar > I love Rollbar because of its incredibly powerful features, its freemium pricing model (which makes it really easy to start new projects with error tracking baked in from day 1, setting a good foundation from beginning rather than having to be distracted and set it up later on). - Published: 2023-07-11 - Modified: 2024-04-16 - URL: https://rollbar.com/blog/rollbar-story-jonathan/ - Categories: company, User Stories - Tags: User Stories Jonathan Tsai (jontsai) Software Ninja Geektrepreneur, Empowering Engineers Jonathan has now been using Rollbar for 127 months! 1. What company do you work for (describe the product/service) and what projects are you working on there? Currently, my day job is at EasyPost (www. easypost. com), and I've been there for 4+ working on a variety of projects, mainly building and scaling integrations with hundreds of carriers around the world. Sadly, at EasyPost, they were integrated with Sentry since before I joined, and did not seem to want to switch. Having used all of Sentry, New Relic, and Rollbar professionally at various engineering shops, I highly prefer Rollbar over the others. Also, in a former life, I was co-founder/CTO of Talentral. com which spun off a separate app/product called ZippyApp. com that is still up and running to this day. It's managed to carve out a niche for itself and is self-sustaining, and managed by a small, but mighty team. And I still consult for them as a part-time CTO. I'm also a mentor and entrepreneur, so I usually have no fewer than 3-5 side projects that I'm running concurrently. One of my longer-running side projects is Hacktoolkit (https://www. hacktoolkit. com/), which is an open-source tech community and a collection of various kinds of open-source code. My largest and most successful open-source project is django-htk (https://github. com/hacktoolkit/django-htk), and it has Rollbar baked-in, coupled very tightly, for application error tracking and reporting. It's so opinionated that it's impossible to inject any other... --- - [Scary Developer Stories to Tell in The Dark](https://rollbar.com/blog/developer-horror-stories-2021/): We've all heard developer horror stories. Here are some that you submitted to Rollbar. Make sure to turn on the light and read on with caution! - [How to Throw & Handle Scala Exceptions](https://rollbar.com/blog/how-to-throw-handle-scala-exceptions/): Here's how to respond to and investigate the cause of exceptions in Scala: 1. Try/Catch → 2. Finally Clauses → 3. Custom Exceptions. - [CircleCI](https://rollbar.com/customers/circleci/): ### Nat's story with Rollbar > I first encountered Rollbar in my day job when I worked for PatientsLikeMe. We switched from a competitor because Rollbar made it much easier to track exceptions across programming languages (not just on our Ruby backend) and made it easy to attach additional details to exception reports as needed. - Published: 2023-07-11 - Modified: 2024-04-16 - URL: https://rollbar.com/blog/rollbar-story-nat/ - Categories: company, User Stories - Tags: User Stories Nat Budin Staff Software Engineer Nat has now been using Rollbar for 108 months! NEIL is a small organization with a small budget and relatively low traffic. Rollbar has long maintained a pricing structure that scales down to the level we can afford, while offering higher-capacity plans for enterprises. This is a sharp contrast to most of Rollbar’s competitors, who have a larger minimum monthly price that typically exceeds our entire web budget. 1. What company do you work for (describe the product/service) and what projects are you working on there? I volunteer for New England Interactive Literature, a non-profit that runs Intercon, one of the largest and oldest live action roleplaying game conventions in the world. I developed their open source convention management platform, Intercode, and I help maintain NEIL Hosting, which hosts other conventions’ sites on our instance of Intercode. 2. What are you most passionate about in your current and/or past roles? Our attendees are extremely passionate about practically every aspect of the convention, and as a result, I get a lot of direct feedback from users. It’s very important to me that attendees have a good experience with our web site. Rollbar has been invaluable in helping me catch issues before attendees raise them to us, and helping me quickly find the root cause of issues that attendees have raised. 3. Is there anything in particular about Rollbar that has kept you a loyal user all this time? I first encountered Rollbar in my day job... --- - [6 Ways Artificial Intelligence Improves Software Development](https://rollbar.com/blog/6-ways-artificial-intelligence-improves-software-development/): Artificial intelligence is transforming software development. From the code to the deployment, AI is slowly but surely upping its game... - [CVENT](https://rollbar.com/customers/cvent/): - [What is the Quickest Way to Show All PHP Errors](https://rollbar.com/blog/what-is-the-quickest-way-to-show-all-php-errors/): Viewing PHP errors is critical for developers to troubleshoot an application. Learn how to show all PHP errors and warning notifications. - [.NET Error Logging Best Practices](https://rollbar.com/blog/dotnet-error-logging-best-practices/): Following .Net error logging best practices helps make sure they contain the right information when needed. - [Twilio](https://rollbar.com/customers/twilio/): ## Changelogs - [Monolithic vs Microservices Architecture](https://rollbar.com/blog/monolithic-vs-microservices-architecture/): We look at the key differences between using a monolithic and microservices architecture as well as their inherent strengths and weaknesses. - [How to Make a Build vs. Buy Decision for a Software Solution](https://rollbar.com/blog/build-vs-buy-software-solution/): Sourcing the perfect product for your engineering team? Buying software is often the answer, but there is a lot you need to consider first. - [Automate Secure Access Management With Rollbar + Okta](https://rollbar.com/blog/automate-secure-access-management-with-rollbar-okta/): At Rollbar, we know security matters. Our customers represent the leading technology companies in the world today, and keeping their... ### Free Plan Changes > We are standardizing our free plans to align with our current structure and ensure we can continue offering quality services to all our users. - Published: 2023-07-10 - Modified: 2023-07-12 - URL: https://rollbar.com/blog/free-plan-changes-2023/ - Categories: Uncategorized Changes to our Free plans What is changing? Rollbar is sunsetting our legacy Free 25K plans and standardizing all free plans to 5,000 occurrences per month starting August 15, 2023. Our paid plans start at $12. 50/month; you keep your occurrences limits and enjoy added features. Why is Rollbar changing the free plan occurrence limit? We are standardizing our free plans to align with our current structure and ensure we can continue offering quality services to all our users. What happens if I do not switch to the Essentials Plan within 30 days? If you choose to remain on our free plan after 30 days, your occurrence limit will be adjusted to 5,000 occurrences per month. How will this change affect my current projects? This change won't affect your projects if your monthly occurrences are consistently below 5,000. However, if you regularly exceed this limit, consider our Essential or Advanced Plans to avoid any service disruption. Visit our pricing page for more information. What are the differences between Free, Essentials and Advanced Plans? Please visit our pricing page to view the side by side comparisons of the different plan options. How do I switch to the Essentials or Advanced Plan Plan? We've made the transition as easy as possible. You can upgrade your plan directly from your account navigation by clicking the upgrade button. Our customer support team is also here to assist you in making this transition (email us at support@rollbar. com). Will the Essentials Plan rate ever increase?... --- - [Improve Error Detection and Speed Up Resolution in Selenium Tests](https://rollbar.com/blog/improve-error-detection-and-speed-up-resolution-in-selenium-tests/): Reducing errors in production is critical for all engineering teams. The earlier the error is detected, the cheaper it is... - [Rollbar is removing old grouping versions to improve fingerprinting in July](https://rollbar.com/development-updates/rollbar-is-removing-old-grouping-versions-to-improve-fingerprinting-in-july/): Seamless grouping is the concept of making sure that when we roll out new grouping versions, already grouped items won’t... - [Can Constructors Throw Exceptions in Java](https://rollbar.com/blog/can-constructors-throw-exceptions-in-java/): The short answer is yes! Of course, properly implementing exceptions in your constructors is essential to getting the best results. Learn how here. ### Account Observability > We're thrilled to announce the launch of Rollbar's latest initiative to provide greater transparency and control over your occurrences. Our team has worked hard to address customers' feedback and concerns based on your occurrences and overages. We are excited to introduce a new level of observability to our platform. - Published: 2023-06-14 - Modified: 2023-07-26 - URL: https://rollbar.com/blog/account-observability/ - Categories: product - Tags: Usage Notifications Introducing Rollbar's Enhanced Usage Visibility Gain Control Over Your Occurrences We're thrilled to announce the launch of Rollbar's latest initiative to provide greater transparency and control over your occurrences. Our team has worked hard to address customers' feedback and concerns based on your occurrences and overages. We are excited to introduce a new level of observability to our platform. At Rollbar, we understand that having clear visibility into how your occurrences are utilized is crucial for making informed decisions and effectively managing your projects and account. Our goal with this initiative is to empower you, the account owners, with the tools and insights you need to take control of your data and leverage Rollbar's platform to its fullest potential. The primary focus of this release is to enhance your usage page, providing you with comprehensive information about your occurrences across all projects and throughout your contract period. With this new feature, you can track your occurrences over time, gaining valuable insights into your consumption patterns and making alt="" width="2116" height="1394" /> Project-level Breakdown: Understand your consumption of Rollbar occurrences for individual projects. We've introduced a new text-based table layout that provides a clear overview of your project's usage. Additionally, we're exploring options for incorporating graphs in future phases to enhance the visual representation of your data. Contextual Insights: Get detailed visibility into how your projects consume occurrences, enabling you to optimize your tracking and allocate your budget more effectively. This launch marks the first phase of our ongoing efforts to... --- - [How to Solve the Most Common Runtime Errors in Java](https://rollbar.com/blog/most-common-java-runtime-errors/): A runtime error in Java is an application error that occurs during the execution of a program. Learn how to solve the most common runtime errors in Java. - [Rollbar is removing old grouping versions to improve fingerprinting in April](https://rollbar.com/development-updates/rollbar-is-removing-old-grouping-versions-to-improve-fingerprinting/): Seamless grouping ensures that when we roll out new grouping versions, items that are already grouped won’t change. When we... - [Introducing the New Rollbar Integration for GitHub Enterprise Server](https://rollbar.com/blog/introducing-the-new-rollbar-integration-for-github-enterprise-server/): We’re excited to launch our new integration with GitHub that supports GitHub Enterprise Server customers. This allows companies using GitHub… - [Accelerating Code Quality with DORA Metrics](https://rollbar.com/blog/accelerating-code-quality-with-dora-metrics/): DORA metrics help DevOps teams make data-driven decisions to continuously improve practices, deliver software faster, and ensure that it remains reliable. ### A Web Developer's Guide to Common Website Error Codes > From the infamous 404 to the more elusive 500, this guide is your compass to troubleshoot, decode, and resolve these digital stumbling blocks. - Published: 2023-06-13 - Modified: 2023-06-13 - URL: https://rollbar.com/blog/common-website-error-codes/ - Categories: topics - Tags: Top Errors To err is not only human but also a fairly common occurrence on the world wide web. From misconfigured servers to mistyped URLs, three-digit error codes can turn an otherwise smooth browsing experience into a frustrating detour. From the infamous 404 to the more elusive 500, this guide is your compass to troubleshoot, decode, and resolve these digital stumbling blocks. 1. 404 Not Found “404 Not Found” is one of the most common website errors. It indicates that the server was unable to find the requested resource. This could be due to a broken link, a mistyped URL, or the resource being removed or relocated. Example of error code 404 Ways to resolve a 404 error: Examine any broken links. It's possible that a website has broken links that are to blame for the issue. To find any broken links the programmer or the website owner can use tools like Google Search Console or a link checker, and then fix them by changing the URL or eliminating the link entirely. Redirect the URL: The programmer can redirect the URL to another page on the website if the user is attempting to visit an outdated page. This can ensure that consumers can still obtain the information they need without getting a 404 error. Ask the user to delete their cache and cookies: A 404 error occasionally results from a cached copy of a website that is no longer available. The users can make sure the most recent version of the page... --- - [New, updated Software Development Kits are available](https://rollbar.com/development-updates/new-updated-software-development-kits-are-available/): We are pleased to announce new and updated software development kits (SDKs) and capabilities. These SDKs keep Rollbar current on... - [Handling Node.js Exceptions](https://rollbar.com/blog/handling-node-js-exceptions/): Debugging errors is the hardest part of programming. Errors can appear in your code in a variety of ways, whether as syntax errors, errors… - [April 2022 Grouping Update](https://rollbar.com/development-updates/april-2022-grouping-update/): We are pleased to announce our new Grouping Update which introduces patterns for Elixir and Scala. Both recently supported SDKs... - [How to Throw Exceptions in Python](https://rollbar.com/blog/throwing-exceptions-in-python/): This guide is the ultimate resource for Python developers who want to design, implement, and maintain applications that can deal with errors properly. ### How to Resolve TypeError: ‘NoneType’ object is not subscriptable in Python > When you try to access an index or key of a variable that is of a NoneType sort, Python throws a NoneType error. Learn several solutions to fix this. - Published: 2023-06-12 - Modified: 2025-03-17 - URL: https://rollbar.com/blog/python-typeerror-nonetype-object-not-subscriptable/ - Categories: Code Tutorials, Python - Tags: Python When working with Python, attempting to access an index or slice of an object that has the value None may result in TypeError: 'NoneType' object is not subscriptable. Let’s delve into why this TypeError occurs and how to resolve it. None is a unique constant in Python that stands in for the lack of a value. It is employed to show that a variable or expression does not possess a value. The Python built-in class NoneType has an object called None that belongs to it. An instance of NoneType is assigned to a variable when None is assigned to it. For Example: my_var = None print(type(my_var)) Output: What Causes TypeError: ‘NoneType’ And How to Fix this Error Working with NoneType objects frequently results in the 'NoneType' object is not subscriptable error. The issue arises when you try to use the index or key of a NoneType object as if it were a list or dictionary. Python raises this error because NoneType objects do not support indexing or key access, preventing the programmer from doing an invalid operation. The following are some typical situations that may result in this issue and the solutions to fix them: 1. Forgetting to Assign a Value to a Variable If you forget to assign a value to a variable, it will default to a NoneType object. If you then try to access an index or a key of that variable, Python will raise the 'NoneType' object is not subscriptable error. Example One my_list = None... --- - [Most Common Java Exceptions](https://rollbar.com/blog/most-common-java-exceptions/): We take a look at how Java handles exceptions, checked vs. unchecked exceptions, and then the ten most common exceptions you’ll face in Java. - [Slack Oauth 2.0 system is available for your Rollbar projects](https://rollbar.com/development-updates/slack-oauth-2-0-system-is-available-for-your-rollbar-projects/): Rollbar is adopting the updated Oauth 2. 0 flow created by Slack. Slack has revised their access tokens and now... - [Spring Boot Logging](https://rollbar.com/blog/spring-boot-logging/): Logging in Spring Boot is very flexible and easy to configure. Spring Boot supports various logging providers. Learn more about Spring Boot logging here. - [How to Solve ClassCastException in Java](https://rollbar.com/blog/how-to-solve-classcastexception-in-java/): When your code attempts to cast an object to another class of which the original object is not an instance, a ClassCastException is thrown. Learn how to fix it. ### Error Resolution Unveiled > Introduce a new enhancement to our Improve package – the Mean Time to Resolution (MTTR) metric. Unlike other tools, our MTTR metric measures the time from when an issue begins in production to when it gets resolved, not from a ticket opening or alert trigger. This distinctive feature makes the Rollbar MTTR more accurate and reliable. - Published: 2023-06-07 - Modified: 2023-06-07 - URL: https://rollbar.com/blog/improve-mttr-metric/ - Categories: product - Tags: mttr Error Resolution Unveiled Unlock Insights with the new Improve MTTR Metric In today's fast-paced tech environment, swiftly and efficiently resolving software errors is essential to maintain the seamless operation of your application. A prominent problem for engineering leaders is they often need help tracking and effectively understanding their error resolution performance over time. With a comprehensive, real-time visualization of this data, making informed decisions, setting performance benchmarks, and optimizing resources become easier. Today, we are excited to introduce a new enhancement to our Improve package – the Mean Time to Resolution (MTTR) metric. Unlike other tools, our MTTR metric measures the time from when an issue begins in production to when it gets resolved, not from a ticket opening or alert trigger. This distinctive feature makes the Rollbar MTTR more accurate and reliable. The MTTR graph lets you view your resolved errors over set time periods. Whether these issues were manually resolved by a user or auto-resolved by our intelligent system, you can track your performance and gain valuable insights. Our intuitive MTTR graph is a sophisticated tool that dynamically monitors your application’s error resolution times. It diligently compiles data, transforming it into an interactive graphical format accessible at your convenience. We don't limit ourselves to just a part of the application; instead, we take a comprehensive view by looking at resolved errors across the entire application. This includes errors corrected manually in the UI, those resolved automatically on deployment, inactive items that auto-resolve themselves, and errors managed via API.... --- - [January 2022 Grouping Update](https://rollbar.com/development-updates/january-2022-grouping-update/): This month we are excited to roll out a new January Grouping Update which significantly improves Grouping quality for some... - [How to Resolve InvocationTargetException in Java](https://rollbar.com/blog/how-to-resolve-invocationtargetexception-in-java/): The InvocationTargetException wraps an exception thrown by an invoked method or constructor. Learn how to handle it. - [How to Fix java.lang.NoSuchMethodError in Java](https://rollbar.com/blog/how-to-fix-java-lang-nosuchmethoderror-in-java/): A java.lang.NoSuchMethodError is a runtime error which occurs when a method is called that exists at compile time, but does not exist at runtime. Let's fix it. ### How to Use CreateError for Crafting Custom Error Classes in Node.js > Unlock the full potential of JavaScript error handling with CreateError. Learn how to create custom error classes, pass additional error data, and more. - Published: 2023-06-05 - Modified: 2023-06-05 - URL: https://rollbar.com/blog/nodejs-error-handling-using-createerror/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript The npm createerror package is a helper that allows you to easily create custom error classes in Node. js. It provides a simple API to define and extend error classes with customizable properties and methods. CreateError Installation Node. js and npm should be installed before using the createerror package. To install createerror, the following command should be run: npm install createerror CreateError Example Here’s a simple example on how to use createerror in Node. js: var createError = require('createerror'); var MyError = createError({ name: 'MyError', message: 'Message describing the error' }); In the above example, the createerror package is used to create an error called MyError that has the name and message properties. How to Throw Errors Using CreateError After a custom error has been created using the createerror package, an instance of it can be thrown using the JavaScript throw keyword. Any instances of the error can also contain extra data about the error. Here’s an example that throws an instance of the MyError error created above: try { throw new MyError({ message: "My message", data: {restrictedIds: } }); } catch(e) { console. error(e. data); } Here, the MyError instance created in the try block contains a property called data that contains a set of restrictedIds. The error is caught in the catch block and the output is logged to the console with the error’s data property: { restrictedIds: } Track, Analyze and Manage Errors With Rollbar As you can see, creating custom errors can provide more detailed and... --- - [Update regarding Log4j Java vulnerabilities](https://rollbar.com/development-updates/update-regarding-log4j-java-vulnerabilities/): Rollbar is aware of the Log4j Java vulnerabilities (CVE-2021-44228 and CVE-2021-45046) and we have updated all the potentially impacted infrastructure... - [How to Fix OutOfMemoryError: Permgen Space Exceptions in Java](https://rollbar.com/blog/how-to-fix-java-lang-outofmemoryerror-permgen-space-exceptions-in-java/): Is your permanent generation area in memory exhausted? Here's how to adjust the maximum size of the PermGen area and find out what caused this Java error. - [December 2021 Grouping Update](https://rollbar.com/development-updates/december-2021-grouping-update/): We are pleased to announce our December 2021 Grouping Update that significantly improves grouping coverage and quality for some of... ## Events ### How to Fix AbortError in JavaScript > The JavaScript AbortError occurs when an operation is aborted before it completes. Learn three ways to handle it. - Published: 2023-05-29 - Modified: 2023-05-29 - URL: https://rollbar.com/blog/fix-aborterror-in-javascript/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript The JavaScript AbortError occurs when an operation is aborted before it completes, such as when an AbortController object cancels a fetch request in progress. What Causes AbortError In JavaScript, an AbortError is thrown when an operation is stopped or canceled before it completes. For example, when using the JavaScript fetch function, an AbortError is thrown if the abort function is called on the associated AbortController before the fetch operation completes. The AbortError is thrown only if the operation is canceled while it is actively in progress. If the operation completed successfully or failed for another reason, an AbortError will not be thrown. AbortError Example Here’s an example of an AbortError thrown when the AbortController. abort function is called while a fetch operation is in progress: const controller = new AbortController; const signal = controller. signal; fetch('https://example. com', { signal }); controller. abort; In the above example, the AbortController is used to create an AbortSignal object, which is passed as an option to the fetch request. When the AbortController. abort function is called while the fetch request is in progress, the request is canceled and an AbortError is thrown: Uncaught (in promise) DOMException: The user aborted a request. How to Fix AbortError Here are a few approaches to handle and fix an AbortError depending on the use case: Use try-catch blocks An AbortError can be caught and handled appropriately using a try-catch block. For example, the error can be caught in the catch block and handled with a message displayed to... --- - [We’ve partnered with the team over at Vue School to bring you Vue.js Forge Episode 4 for FREE!](https://rollbar.com/event/big-news-weve-partnered-with-the-team-over-at-vue-school-to-bring-you-vue-js-forge-episode-4-for-free/): ### 10 Best Practices When Logging in Python > Harness the full power of Python's logging module. From best practices to advanced error tracking with Rollbar, learn everything you need to squash bugs. - Published: 2023-05-16 - Modified: 2023-05-16 - URL: https://rollbar.com/blog/10-best-practices-when-logging-in-python/ - Categories: Code Tutorials, Python - Tags: Python In the eternal hunt for elusive bugs, logging is an indispensable aid. By recording the events and messages that occur during the execution of your program, logging opens the door to unparalleled debugging and performance monitoring capabilities. It all starts with Python’s built-in logging module. However, the true power of Python logging is unlocked not merely by using it, but by mastering it. Keep reading to learn the fundamentals of logging in Python, get up to speed with best practices, and how one advanced error logging tool, Rollbar, can help you discover, predict, and resolve errors in real-time. The basics of logging in Python: words you should knowBefore we dive into the code, let's cover some basic concepts related to logging in Python: Logger: An object named a logger represents a named channel for message logging. You can add several loggers to your program, each with a unique name and set of configurations. The name of the logger you want to use is specified when you log a message. Handler: An entity that receives and processes logged messages is referred to as a handler. Each handler can have its own configuration, including a file name, a format string, and a level threshold. A logger may have one or more handlers. All of the handlers connected to the logger receive a message when it is logged. Formatter: A formatter is an object that transforms the logged messages into a string that can be read by humans. This can include placeholders for... --- - [Webinar: Technical Intro to Improve: Release](https://rollbar.com/event/webinar-technical-intro-to-improverelease/): ### How to Solve an Undefined Variable NameError in Python > A Python NameError is raised when the program attempts to use a variable that has not been defined. Learn how to fix it. - Published: 2023-05-16 - Modified: 2025-03-17 - URL: https://rollbar.com/blog/undefined-variable-nameerror-python/ - Categories: Code Tutorials, Python - Tags: Python In Python, a NameError: name 'x' is not defined error is raised when the program attempts to access or use a variable that has not been defined or assigned a value. This can happen if the variable is spelled incorrectly, or if it is accessed before it has been defined. What Causes Undefined Variable In Python, a variable is not created until a value is assigned to it. If an attempt is made to use a variable before it is defined, a NameError: name 'x' is not defined error is thrown. The error message typically includes the name of the variable that is causing the problem and the line of code where the error occurred. Python Undefined Variable Example Here’s an example of a Python NameError: name 'x' is not defined thrown when using an undefined variable: for i in range(x): print(i) In this example, an undefined variable x is used in the range function, throwing the NameError: name 'x' is not defined error: Traceback (most recent call last): File "test. py", line 1, in for i in range(x): NameError: name 'x' is not defined How to Solve Undefined Variable in Python To solve the NameError: name 'x' is not defined error in Python, you need to make sure that the variable is properly defined and assigned a value before it is used. The variable should also be referenced correctly, with the correct case and spelling. The earlier example can be updated to define the variable before it is used:... --- - [Webinar: Introduction to Improve:Release](https://rollbar.com/event/webinar-introduction-to-improverelease/): - [Webinar: Accelerating Code Quality with the DORA Metrics](https://rollbar.com/event/next-event/): - [Webinar: 99% DevOps Presents | The Anatomy of Observability](https://rollbar.com/event/title-lorem-ipsum-dolor-sit-amet-consectetur-adipi-scing-elit-sed-do-eiusmod-tempor-incididunt-ut-labore-et-dolore-magna-aliqua-3/): - [Conference: Developer Week Management 2021](https://rollbar.com/event/title-lorem-ipsum-dolor-sit-amet-consectetur-adipi-scing-elit-sed-do-eiusmod-tempor-incididunt-ut-labore-et-dolore-magna-aliqua-2/): ## News ### Error Logging: A Complete Guide for Beginners > No matter the programming language, learn the universal principles of what to include in error logs, where to save them and how to debug effectively. - Published: 2023-05-15 - Modified: 2023-05-15 - URL: https://rollbar.com/blog/error-logging-guide/ - Categories: topics - Tags: Top Errors Today's applications are incredibly intricate and interconnected, often relying on numerous third-party services and libraries. With this complexity comes an increased likelihood of things going wrong. However, an error doesn't usually announce itself with great fanfare and a detailed explanation. More often than not, it shows up as an unexplained crash, a suspicious slowdown, or a surprising output. Error logging shines a spotlight on these problems. Error logging is a mechanism for capturing and recording errors or issues that occur in your application, providing a crucial lifeline during the debugging process. Think of it like having surveillance cameras in every corner of your application. These logs provide a wealth of information, from the nature of the error and where it occurred, to the state of the system when it happened. This data can be the difference between solving a problem in minutes and struggling with it for days. While the specifics of logging errors may vary based on the application and the environment, this beginner’s guide will illuminate the universal principles that underpin this crucial development practice. We'll delve into what you should include in an error log, where to save these logs, and how to use logs as your secret weapon in the debugging process. What to Include in an Error Log Error logging is a technique that transcends specific programming languages or environments. Whether you're working with Python, Java, JavaScript, or other languages, there are always key pieces of information that should be included in every error log... --- - [Rollbar to improve code with new AI-assisted workflows and automation-grade grouping](https://rollbar.com/news/rollbar-to-improve-code-with-new-ai-assisted-workflows-and-automation-grade-grouping/): Rollbar wants to shift developers’ focus to continuously improving code, instead of having to continuously fix it. - [Rollbar powers AI-assisted workflows with new grouping engine](https://rollbar.com/news/rollbar-powers-ai-assisted-workflows-with-new-grouping-engine/): Rollbar, providers of the Continuous Code Improvement Platform, is introducing AI-assisted workflows powered by its new automation-grade grouping engine, enabling... - [Rollbar Lets Developers Focus on Continuously Improving Code with AI-Assisted Workflows and Automation-Grade Grouping](https://rollbar.com/news/rollbar-lets-developers-focus-on-continuously-improving-code-with-ai-assisted-workflows-and-automation-grade-grouping/): Rollbar, providers of the Continuous Code Improvement Platform, today announced AI-assisted workflows powered by its new automation-grade grouping engine. ### How to Use the ChatGPT API with JavaScript > Step into the world of AI with this step-by-step tutorial on integrating the OpenAI API with JavaScript. Transform your app's user experience today. - Published: 2023-05-11 - Modified: 2023-08-18 - URL: https://rollbar.com/blog/chatgpt-api-with-javascript/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript, OpenAI Eager to infuse your JavaScript app with state-of-the-art AI? This comprehensive tutorial will show you how to embed ChatGPT, the titan of large language models, into your JavaScript code. Get ready to revolutionize your app's interactivity with natural language processing capabilities. First, follow these steps to integrate ChatGPT into JavaScript To use the ChatGPT language model in JavaScript, you make use of the OpenAI API library. Here are the steps to follow: First, sign up for OpenAI API access at https://beta. openai. com/signup/. Once you’ve signed up, you’ll get an API key to use to authenticate your requests. Create an empty folder on your computer named "Demo" and open it in an editor like VS Code to create the initial package. json file in it by writing the below command in the VS Code terminal: npm init -y To use the OpenAI API in your JavaScript application, you have to install the openai package using the following command in the terminal: npm install openai Next, install the . env package, which is a zero-dependency module that loads environment variables from a . env file into process. env. It allows you to separate sensitive data from your code and store it in a file that is not tracked by version control systems. You will use this to store your OpenAI API key. Now create two files: index. js, where you’ll write your code, and an . env file, where you will store your API key. This is how your project structure... --- - [Rollbar Announced AI-Assisted Workflows](https://rollbar.com/news/rollbar-announced-ai-assisted-workflows/): Rollbar announced AI-assisted workflows powered by its new automation-grade grouping engine. - [Rollbar rolls out service to improve error detection for developers](https://rollbar.com/news/rollbar-rolls-out-service-to-improve-error-detection-for-developers/): Rollbar Inc. today updated its Continuous Code Improvement Platform with a new “automation-grade grouping engine”... ### Introducing Rollbar Analyze > Analyze is designed to deliver even more powerful insights to help your teams better understand your code and make data-driven decisions. By packaging the capabilities of RQL and Metrics API, we are equipping you with a robust solution that addresses your unique data needs. - Published: 2023-05-04 - Modified: 2023-05-05 - URL: https://rollbar.com/blog/introducing-rollbar-analyze/ - Categories: product Introducing Analyze Your Key to Enhanced Insights and Faster Error Resolution We are excited to announce the rollout of our new Rollbar Improve component, Analyze. As we strive to provide you with the best possible tools to monitor, understand, and improve your code, we've combined two powerful features, RQL and Metrics API, into one comprehensive package. Analyze is designed to deliver even more powerful insights to help your teams better understand your code and make /> *Rollbar Analyze - Includes RQL and Metrics API Package Changes What to Expect With the introduction of Analyze, we are changing our pricing packages. We understand these changes affect some of our customers and want to be transparent about the details. Moving forward, Analyze will be available as part of the Advanced package. For our other packages, we would like to outline our plan: Free and Essential Packages Free and Essentials package users will have limited access to RQL following a transitional grace period. Free users will continue to have access to RQL for 30 days after the launch of Analyze, while Essentials users will have access for 60 days. To make our Advanced package more accessible, we are also introducing two new pricing tiers: Advanced 25K for $29. 00 and Advanced 50K for $59. 00. We encourage our Free and Essential package users to consider upgrading to one of these plans to enjoy uninterrupted access to RQL and full access to our Metrics API. View Pricing and Packages Enterprise Package Enterprise customers will... --- - [Rollbar Acquires Hungary-Based Samebug](https://rollbar.com/news/rollbar-acquires-hungary-based-samebug/): Rollbar announced it has acquired Hungary-based Samebug - [Lolapps engineers launch Rollbar](https://rollbar.com/news/lolapps-engineers-launch-rollbar/): Brian Rue and Cory Virok launch an error tracking platform for developers. ## Tradeshows ## Webinars ### How to Fix ReferenceError: $ is Not Defined in JavaScript > This error occurs when the jQuery library is used but is not properly loaded or is not available in the current scope of the code. Learn how to fix it. - Published: 2023-04-24 - Modified: 2024-09-13 - URL: https://rollbar.com/blog/fix-reference-error-is-not-defined-in-javascript/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript The JavaScript ReferenceError: $ is not defined occurs when the jQuery library is used but is not properly loaded or is not available in the current scope of the code. In JavaScript, the $ symbol is often used as a shorthand alias for the jQuery library. This error indicates that the code is trying to use jQuery functionality by referencing the $ symbol, but the library is not available or has not been loaded correctly. What Causes Javascript ReferenceError: $ is Not Defined This error can occur for several reasons, such as: The jQuery library is not included in the script that references it. The library is included with a typo or error in the script The script is executed before the jQuery library is loaded, which can be caused by incorrect placement of the script tag in the HTML file. The code is running in a different scope or environment where the $ symbol is not defined or has a different meaning. ReferenceError: $ is Not Defined Example Here’s an example of a Javascript ReferenceError: $ is not defined thrown when jQuery is not properly loaded in a script that uses it: Example Click me In this example, the code is trying to use the jQuery library. Since jQuery is not included in the above script, running it throws the error: Uncaught ReferenceError: $ is not defined How to Fix ReferenceError: $ is Not Defined To fix the ReferenceError: $ is not defined error, jQuery should be properly loaded... --- - [Speeding Up Software Delivery: You're Only As Good As Your Weakest Link](https://rollbar.com/webinar/speeding-up-software-delivery-youre-only-as-good-as-your-weakest-link/): Learn about the trends in DevOps and modern application architectures, and the common challenges enterprises face as they try to... - [CircleCI and Rollbar on enabling Continuous Delivery](https://rollbar.com/webinar/circleci-and-rollbar-on-enabling-continuous-delivery/): Join CircleCI CTO Rob Zuber and Rollbar Co-founder and CTO Cory Virok as they discuss 9 questions about continuous delivery. - [Debugging Apex Applications with Error Monitoring](https://rollbar.com/webinar/debugging-apex-applications-with-error-monitoring/): Rollbar is the first company bringing the value of modern Error Monitoring and Debugging to the Apex ecosystem and to... - [Maximize Your Workflow Through the Clubhouse API](https://rollbar.com/webinar/maximize-your-workflow-through-the-clubhouse-api/): Learn how the Clubhouse API can give you a greater amount of control over your data and help automate your... - [Advanced Error Monitoring & Debugging With Rollbar](https://rollbar.com/webinar/advanced-error-monitoring-debugging-with-rollbar/): Rollbar helps developers deploy better software, faster, with solutions that identify, prioritize and resolve coding errors. Join Rollbar's product experts... ### How to Fix IndexError: string index out of range in Python > This error occurs when an index is attempted to be accessed in a string that is outside its range. Learn how to fix it. - Published: 2023-04-24 - Modified: 2023-07-10 - URL: https://rollbar.com/blog/python-indexerror-string-index-out-of-range/ - Categories: Code Tutorials, Python - Tags: Python The Python IndexError: string index out of range error occurs when an index is attempted to be accessed in a string that is outside its range. What Causes IndexError: string index out of range This error occurs when an attempt is made to access a character in a string at an index that does not exist in the string. The range of a string in Python is , where len(str) is the length of the string. When an attempt is made to access an item at an index outside this range, an IndexError: string index out of range error is thrown. Python IndexError: string index out of range Example Here’s an example of a Python IndexError: string index out of range thrown when trying to access a character outside the index range of a string: my_string = "hello" print(my_string) In the above example, since the string my_string contains 5 characters, its last index is 4. Trying to access a character at index 5 throws an IndexError: string index out of range: Traceback (most recent call last): File "test. py", line 2, in print(my_string) ~~~~~~~~~^^^ IndexError: string index out of range How to Handle IndexError: string index out of range in Python The Python IndexError: string index out of range can be fixed by making sure any characters accessed in a string are within the range of the string. This can be done by checking the length of the string before accessing an index. The len function can be used to... --- - [Smart Error Monitoring for Spring Developers](https://rollbar.com/webinar/smart-error-monitoring-for-spring-developers/): Nobody likes to find out about errors from the customers themselves. The ripple effect of churn from a single user... - [Best Practices for Moving from a Monolith to Microservices](https://rollbar.com/webinar/best-practices-for-moving-from-a-monolith-to-microservices/): Transitioning from a Monolith to a Microservices architecture can take years to complete. Companies are under more pressure than ever... --- # # Detailed Content ## Pages ### How to Handle Exceptions in Ruby with Rescue > Ruby provides a powerful error handling mechanism called Rescue. Learn how it works and common ways to use it to your advantage. - Published: 2023-04-24 - Modified: 2023-04-24 - URL: https://rollbar.com/blog/handle-exceptions-in-ruby-with-rescue/ - Categories: Code Tutorials, Ruby - Tags: ruby Ruby has a robust error handling mechanism called rescue. The way it works is the keyword rescue specifies an exception handler that will catch and handle any exceptions that are raised in the begin block, the code block preceding the rescue block that may cause an exception. Here’s how it looks: begin # code that may raise an exception rescue # code to handle the exception end When an exception occurs in the begin code block, Ruby transfers control to the rescue block and executes the code within it. And when no exception is raised, the rescue block is skipped and the program continues executing normally. Example: Using Rescue to Handle An Exception In this example, the divide method takes two arguments, a and b , and attempts to divide a by b . If b is zero, a ZeroDivisionError exception is raised. To handle this exception, we use a begin block followed by a rescue block. The rescue block catches the ZeroDivisionError exception and prints an error message to the console. It then sets the result to nil and returns it. def divide(a, b) begin result = a / b rescue ZeroDivisionError => e puts "Error: #{e. message}" result = nil end return result end puts divide(10, 2) # Output: 5 puts divide(10, 0) # Output: Error: divided by 0 # nil Output: 5 Error: divided by 0 The code block that might raise an exception is placed within the begin block, and the rescue block is used to... --- ### How to transform Rollbar payload in .NET Core 7 > Using Rollbar is great for Exceptions both handled and unhandled. But there is so much more you can get out of a solution like Rollbar.We often hear users asking us to log structured log data to Rollbar or that they have a custom Json object that they would like to store in Rollbar. - Published: 2023-04-12 - Modified: 2023-04-12 - URL: https://rollbar.com/blog/how-to-transform-rollbar-payload-net7/ - Categories: product - Tags: ai, chatai, ml Logging JSon data to Rollbar Using Rollbar is great for Exceptions both handled and unhandled. But there is so much more you can get out of a solution like Rollbar. We often hear users asking us to log structured log data to Rollbar or that they have a custom JSon object that they would like to store in Rollbar. If you just send in the Json object using Rollbar. Info(YOUROBJECT) you will find that it is placed in the message body as a string. This is fine but we can do a lot better. In my example below I want to use Rollbar to accept my logs from a . NET 7 API. I log everything to Rollbar not just exceptions. So I have created my own object that contains a set of properties and I would like to send that into Rollbar as something more than just a string message. Using Rollbar Payload Transformer Lets look atthe code example to use the Payload Transform function to modify the payload before it is sent to Rollbar. //Global Variables for access token and Environment const string rollbarAccessToken = "xxxxxxxxxxxxxxxxxxxxxx"; //Add your Server Side (Post) Rollbar Access Token string rollbarEnvironment = "production"; //Lets auto identify the Environment #if DEBUG // debug stuff goes here rollbarEnvironment = "development"; #else // release stuff goes here rollbarEnvironment = "production"; #endif //Send to Error Monitoring Solution RollbarLoggerConfig rollbarConfig = new RollbarLoggerConfig(rollbarAccessToken, rollbarEnvironment); RollbarLocator. RollbarInstance. Configure(rollbarConfig); //Lets send in a custom JSon Object butplace it into the... --- ### How to Fix TypeError: Int Object Is Not Iterable in Python > The Python TypeError: Int Object Is Not Iterable is an exception that occurs when trying to loop through an integer value. Learn how to fix it. - Published: 2023-04-11 - Modified: 2023-04-11 - URL: https://rollbar.com/blog/python-typeerror-int-object-not-iterable/ - Categories: Code Tutorials, Python - Tags: Python The Python TypeError: 'int' object is not iterable is an exception that occurs when trying to loop through an integer value. In Python, looping through an object requires the object to be “iterable”. Since integers are not iterable objects, looping over an integer raises the TypeError: 'int' object is not iterable exception. Python TypeError: Int Object Is Not Iterable Example Here’s an example of a Python TypeError: 'int' object is not iterable thrown when trying iterate over an integer value: myint = 10 for i in myint: print(i) In the above example, myint is attempted to be iterated over. Since myint is an integer and not an iterable object, iterating over it raises a TypeError: 'int' object is not iterable: File "test. py", line 3, in for i in myint: TypeError: 'int' object is not iterable How to Fix TypeError: Int Object Is Not Iterable In the above example, myint cannot be iterated over since it is an integer value. The Python range function can be used here to get an iterable object that contains a sequence of numbers starting from 0 and stopping before the specified number. Updating the above example to use the range function in the for loop fixes the error: myint = 10 for i in range(myint): print(i) Running the above code produces the following output as expected: 0 1 2 3 4 5 6 7 8 9 How to Avoid TypeError: Int Object Is Not Iterable The Python TypeError: 'int' object is not iterable error... --- ### How to Handle TypeError: Unhashable Type ‘Dict’ Exception in Python > The Python Unhashable Type ‘Dict’ exception usually occurs when trying to hash an unhashable object like a dictionary. Learn how to fix it. - Published: 2023-04-11 - Modified: 2023-04-11 - URL: https://rollbar.com/blog/python-typeerror-unhashable-type-dict-exception/ - Categories: Code Tutorials, Python - Tags: Python The Python TypeError: unhashable type: 'dict' usually occurs when trying to hash a dictionary, which is an unhashable object. For example, using a dictionary as a key in another dictionary will cause this error. This is because dictionaries only accept hashable data types as a key. Only immutable objects such as strings, integers and tuples are hashable since they have a single unique value that never changes. Hashing such objects always produces the same result, so they can be used as keys for dictionaries. TypeError: Unhashable Type: 'Dict' Example Here’s an example of a Python TypeError: unhashable type: 'dict'thrown when a dictionary is used as the key for another dictionary: my_dict = {1: 'A', {2: 'B', 3: 'C'}: 'D'} print(my_dict) Since a dictionary is not hashable, running the above code produces the following error: File "test. py", line 1, in my_dict = {1: 'A', {2: 'B', 3: 'C'}: 'D'} TypeError: unhashable type: 'dict' How to Fix TypeError: Unhashable Type: 'Dict' The Python TypeError: unhashable type: 'dict' can be fixed by casting a dictionary to a hashable object such as tuple before using it as a key in another dictionary: my_dict = {1: 'A', tuple({2: 'B', 3: 'C'}): 'D'} print(my_dict) In the example above, the tuple function is used to convert the dictionary to a tuple. The above code runs successfully and produces the correct output: {1: 'A', (2, 3): 'D'} Track, Analyze and Manage Errors With Rollbar Managing errors and exceptions in your code is challenging. It can make deploying... --- ### How to Handle TypeError: Cannot Unpack Non-iterable Nonetype Objects in Python > The TypeError:cannot unpack non-iterable nonetype objects occurs when we try to unpack a ‘None’ value as if it were an iterable object. Learn how to fix it. - Published: 2023-04-11 - Modified: 2023-04-11 - URL: https://rollbar.com/blog/python-typeerror-cannot-unpack-noniterable-nonetype-objects/ - Categories: Code Tutorials, Python - Tags: Python The Python error message cannot unpack non-iterable NoneType object typically occurs when we try to unpack a None value as if it were an iterable object. In this guide, we'll explore what this error means, why it occurs, and how to fix it. Let's take a closer look at the error message: TypeError: cannot unpack non-iterable NoneType object The first part of the message tells us that we've encountered a TypeError, which is an error that occurs when we try to perform an operation on a value of the wrong type. The second part of the message tells us that we're trying to unpack a non-iterable NoneType object. In Python, an iterable is an object that can be looped over, such as a list, tuple, or dictionary. And unpacking refers to extracting values from an iterable object and assigning them to individual variables. Example: Unpacking in Python In this example, we have defined a tuple my_tuple that contains three values. We then unpack the tuple into variables a,b, and c using the assignment statement. Each value in the tuple is assigned to a separate variable, which we can then use in our program. my_tuple = (1, 2, 3) a, b, c = my_tuple print(a) # Output: 1 print(b) # Output: 2 print(c) # Output: 3 The NoneType object is a special type in Python that represents the absence of a value. It is used to indicate that a variable or expression does not have a value or has an undefined... --- ### 10 Best PHP Frameworks For Savvy Web Devs In 2023 > The most popular PHP frameworks used by the industry's most seasoned and savvy web developers are → ✓Larvel ✓Symfony ✓CodeIgniter ✓CakePHP... - Published: 2023-04-06 - Modified: 2023-04-20 - URL: https://rollbar.com/blog/10-best-php-frameworks/ - Categories: Code Tutorials, PHP - Tags: PHP What is a PHP framework? A PHP framework is a platform to build PHP web applications. PHP frameworks provide libraries for commonly used functions, which helps to cut down on the amount of original code developers need to write from scratch. A PHP framework provides a basic foundation for the development of web applications in PHP. Frameworks are useful because they speed up and standardize the development process, reducing doubts about how to start building an application. Why use a PHP framework? There are several reasons for using PHP frameworks compared to coding from scratch: Faster development - The time required for development is much less because of built-in libraries and tools. Better performance - Since frameworks are thoroughly tested for quality and performance, using PHP frameworks helps businesses meet their performance needs. Less code - The need to write original code is reduced when using functions built-in to frameworks. Libraries for common operations - Many tasks that developers need to perform when building applications can be repetitive e. g. validation, data cleaning and CRUD operations. Frameworks allow performing such common tasks using built-in functions. Following best practices - PHP frameworks usually follow best-practices e. g. they organize code in a clean and maintainable way and follow good naming conventions. More secure - Using PHP frameworks minimizes chances of exploits such as cross-site scripting and SQL injection. Good PHP frameworks have built-in defenses against such common threats. Enable teamwork - Using frameworks sets clear rules for projects, enabling developers to... --- ### Rollbar Apple SDK 3.0.0 Released - Published: 2023-04-04 - Modified: 2023-04-04 - URL: https://rollbar.com/blog/new-apple-error-tracking-sdk/ - Categories: product - Tags: ai, chatai, ml Rollbar Apple SDK 3. 0. 0 Released We are excited to announce the latest release of our Rollbar SDK for Apple, version 3. 0. 0. This release includes several new features and enhancements to improve the functionality and performance of our error tracking and debugging platform. Complete rewrite of the crash reporting functionality The crash reporting functionality in the SDK has been completely rewritten. Crash reports now include the full crash stack trace, a meaningful description of what triggered the crash, and additional diagnostic information to make it easier to determine the root cause of the crash. Here are some of the key features and improvements included in this release: Improved Performance: We have made several performance enhancements to reduce the impact of the SDK on your application's runtime. This means that you can use Rollbar to track errors and exceptions without worrying about any impact on your app's performance. Custom Logging: With this new release, you can now log custom data to Rollbar using the SDK. This makes it easier to track and debug issues in your application by providing additional context around the error or exception. Support for SwiftUI: We have added support for SwiftUI, Apple's latest UI framework, to the Rollbar SDK. This means that you can now use Rollbar to track errors and exceptions in your SwiftUI-based apps. Improved Crash Reporting: We have made several improvements to our crash reporting capabilities, making it easier to identify and resolve issues in your application. Support for iOS 15:... --- ### Most Popular Java Backend Frameworks for 2023 - Published: 2023-03-28 - Modified: 2023-04-20 - URL: https://rollbar.com/blog/most-popular-java-backend-frameworks/ - Categories: topics - Tags: java An intuitive user interface is a hallmark of any decent business. But in order for the frontend of applications to work smoothly, you must also consider the backend. Backend development, also called server-side development, handles the behind-the-scenes functions of web development – things like interactions with databases, authorizing users and routing URLs. As the most popular programming language for over 20 years, Java has a whole host of backend frameworks, but their reliability and versatility vary widely. Today’s most popular Java backend frameworks are: Spring Framework Struts Hibernate This list is based on usage from Hotframework. com's Java ranking and several other sources including blog posts and GitHub download numbers. All three of these frameworks have a strong programmer community surrounding them, but each brings its own strengths and weaknesses to the table. Java Backend Frameworks – Quick Comparison Strengths Weaknesses Spring Framework 1. Many ready-made components that are helpful for web apps 2. DI and IoC create flexible configurations 3. Easy to expose RESTful services 1. Many dependencies 2. The wealth of options can lead to confusion 3. Learning curve since it can do so much Struts 1. A good starting point for beginners 2. Provides great flexibility with its unique MVC model 3. Less development time and easier to maintain 1. Not as many resources are available as compared to others 2. Less transparency means that apps using Struts are harder to optimize Hibernate 1. Data-focused 2. Its use of abstraction layers makes data configuration much easier 3.... --- ### What Are the Different Types of Python Errors? – and How to Handle Them > Understanding error types is an essential part of crafting effective Python apps. Each type denotes a distinct problem within the code. These 7 are typical. - Published: 2023-03-21 - Modified: 2023-05-16 - URL: https://rollbar.com/blog/python-errors-and-how-to-handle-them/ - Categories: Code Tutorials, Python - Tags: Python There are several types of errors that can occur in Python. Each type indicates a different kind of problem in the code, and comprehending these error types is crucial in creating effective Python applications. The most common types of errors you'll encounter in Python are syntax errors, runtime errors, logical errors, name errors, type errors, index errors, and attribute errors. Let's go through each with examples. How Do I Know What Type of Error I Have? When Python encounters an error, it typically stops the program and displays an error message that indicates the type of error and the line number where the error occurred. 1. Syntax Errors A syntax error occurs in Python when the interpreter is unable to parse the code due to the code violating Python language rules, such as inappropriate indentation, erroneous keyword usage, or incorrect operator use. Syntax errors prohibit the code from running, and the interpreter displays an error message that specifies the problem and where it occurred in the code. Here's an example of a Python syntax error: x = 10 if x == 10 print("x is 10") When the above code is executed in an IDE, we get the following output message that describes the error and the location in the code where it occurred: File "c:\Users\name\OneDrive\Desktop\demo. py", line 2 If x == 10 ^ SyntaxError: expected ':' It shows that there is a SyntaxError on line 2 of the file demo. py. Solution The SyntaxError occurs on line 2 because the... --- ### What Makes a Company Attractive to Candidates? > In today’s competitive talent marketplace, making your company attractive to potential candidates is a must. In this case study, we covered how one of our favorite partners, Rollbar, achieves a great employer brand during the recruitment process. - Published: 2023-03-16 - Modified: 2023-03-16 - URL: https://rollbar.com/blog/what-makes-a-company-attractive-to-candidates/ - Categories: Uncategorized - Tags: business-impact, employee, recruiting Original Post Can be Found here: iseeq BLOG A recruitment case study with Rollbar As a recruitment agency, we (iseeq) can confidently say that we value the partners our candidates love the most – lucky for us, Rollbar is one of those clients in our current portfolio. Since establishing our partnership with them we successfully placed several outstanding individuals into their teams. What makes Rollbar so attractive for our candidates during the selection process and beyond that? What could other tech companies learn from them? We Interviewed Zita Lőrinczi, the company’s Business & People Operations Manager and we have answers! A mission that candidates are eager to contribute to Visions, missions, and values are not just must-haves or buzzwords to use at company presentations. Used wisely, they are key elements of the company’s everyday life and the building blocks of the culture. Occasionally they might even come in handy when it comes to attracting talent. Rollbar’s mission is to help developers build software quickly and painlessly. Needless to say, this statement is pretty attractive to their target audience in the job market. We would recommend every company that stays true to its core statements like vision, mission, or values to communicate those from the early stages of the recruitment process for like-minded candidates to be more engaged. Well-thought-out positions with clear requirements Gaining hundreds of applicants for an open position is all fun and games until companies find out that their witty texts are not just attractive to potential candidates,... --- ### Using Rollbar for Performance Monitoring > Rollbar allows you to gain real-time visibility into exceptions and crashes in your applications and act on them quickly and easily. An important piece of any application is knowing if transactions are executing slower or below a certain threshold. - Published: 2023-03-15 - Modified: 2023-03-15 - URL: https://rollbar.com/blog/how-to-use-rollbar-for-performance-monitoring/ - Categories: product - Tags: ai, chatai, ml How to capture performance issues with Rollbar Rollbar allows you to gain real-time visibility into exceptions and crashes in your applications and act on them quickly and easily. An important piece of any application is knowing if transactions are executing slower or below a certain threshold. Rollbar provides an easy method to send this data to be processed quickly and easily inside your existing Rollbar project. First we need to understand what data and metrics we need to capture to help understand slow responses and understand the root cause of these. Let’s take a look at a Python application where we want to track slow responses as a Rollbar item. Here is what we recommend to ensure an easy way to use this data: We recommend sending events as warnings/errors based on thresholds. For example, "Request over 10s: project/index". Send the detailed timing information as a custom parameter. Include your standard Rollbar metadata like request, server, person, custom, etc. How will this performance data look inside Rollbar? Below is an example of API calls that have been logged in Rollbar where the request was over the set threshold (set in seconds). Python code to capture slow requests Let’s create the functions to help capture and log these slow transactions in our Python application. Sample Python code for a context manager to report slow code paths: import time import rollbar import logging log = logging. getLogger(__name__) class ReportIfSlow(object): default_thresholds = { 'error': 30, 'warning': 10, 'info': 2 } def __init__(self, message,... --- ### How to add context to errors with custom tags > One of the hardest tasks for software engineers is often having to stop what you are doing and look into a software bug (error), find the root cause and fix it quickly. This is hard because you may have never seen the affected code (someone else wrote it), it could be code you wrote a long time ago or just the context switching from what you are working on right now. - Published: 2023-03-13 - Modified: 2023-03-15 - URL: https://rollbar.com/blog/tag-errors-with-custom-tags/ - Categories: product - Tags: ai, chatai, ml How to add context to errors with custom tags An important component of understanding the root cause of an error, and the importance of an error to the business is having additional contextual information about the error. The specific additional data that is important for your errors will be unique for your application and possibly the category of the error. Rollbar provides an easy way to tag your error data with additional custom tags. There are 2 main ways of doing this. The first way to do it is to add the tags when Rollbar is initialized in your application or web page these tags will be sent with each error sent to Rollbar. The second way to do it is to add the tag in the context of a specific error or group of errors Custom tags included with the error can be either single string value or hierarchical key value data. For example Javascript JSON data , or Python dictionaries of dictionaries. For certain Rollbar SDKs additional custom data tags can be added for a specific context When triaging your errors in Rollbar, custom tags are displayed as table columns. Using the Rollbar Query Language (RQL) you can easily analyze and filter your error data by your custom data tags using familiar SQL style syntax. This is a powerful solution to help you to quickly understand the business impact and root cause of your errors. Track, Analyze and Manage Errors at Scale Managing errors and exceptions in your... --- ### How to Debug Code Using ChatGPT > ChatGPT can help you debug quickly and efficiently. Follow these 6 steps to engineer prompts that give the best results. - Published: 2023-03-13 - Modified: 2023-07-21 - URL: https://rollbar.com/blog/how-to-debug-code-using-chatgpt/ - Categories: topics - Tags: debug, OpenAI Unlike traditional debugging tools, which can be complex and require specific knowledge of the programming language, ChatGPT is accessible to programmers of all levels and works in any language. Simply ask ChatGPT specific questions about error messages or unexpected behavior and you’ll get a reply with relevant information that can help you identify and fix the issue. While every interaction with ChatGPT will be different (it is a chatbot afterall), there are some common steps to follow that will help you engineer prompts that give the best results. This blog post will walk through these steps and share examples. Step 1: Identify the Problem The first step in debugging is to identify the problem. This can be the most challenging part of the process, as the problem may not always be obvious. You may have to look for clues, such as error messages or unexpected behavior, to pinpoint the problem. You can ask ChatGPT questions about the error messages or the behavior you are seeing to get a better idea of what is causing the problem. Step 2: Isolate the Problem Once we have identified the problem, the next step is to isolate it. This involves finding the exact line or lines of code that are causing the problem. You can ask ChatGPT for help in determining which lines of code are causing the issue. Step 3: Reproduce the Problem In order to debug the problem, it's essential to reproduce it consistently. You can ask ChatGPT for guidance on how... --- ### Introducing our new Item Detail page - Published: 2023-03-09 - Modified: 2023-03-09 - URL: https://rollbar.com/blog/introducing-our-new-item-detail-page/ - Categories: product We’re excited to share a significant update to all Rollbar plans in the next few weeks. We’ve redesigned our item detail page with a new mobile layout, prioritized important error context, display occurrence details more clearly, and put all actions at your fingertips. With our new UI, we are confident you will work more efficiently, so you can resolve errors quickly and get back to your essential work. Error resolutions on the goFirst, our most requested design change. We understand you won’t always be at your laptop, but you want to manage your errors and resolve them as quickly as possible. Our new Item Detail page will allow you to check on all your errors from any mobile device, no matter where you are. We included easy-to-read views, collapsible panels to reduce scrolling, and new slide-over panels to reduce loading times. And we even built a new action panel that gives you access to all commands from anywhere on the page. Reduced scrolling We wanted to ensure you had the most crucial actions at the top of the page and that you could resolve your error as quickly as possible. You’ll always have access to update the error’s status. From muting or unmuting notifications, assigning ownership, or creating tickets, our action header gives you access from anywhere on the page. View Item Context detailsOur new context panel provides summarized data across all the occurrences within the Item. Now you can get important information about how your errors impact your users,... --- ### Item Detail Page Update Details - Published: 2023-03-09 - Modified: 2023-03-09 - URL: https://rollbar.com/blog/item-detail-page-update-details/ - Categories: product We have introduced a new design for the Item Detail page - as well as helping to investigate & resolve Items more quickly, the layout provides a framework for adding future improvements and also introduces a new style that will roll out across the Rollbar website in future. Updated Look & Feel The new design aims to bring a cleaner layout to the Item Detail page. The new design and layout will be gradually rolled out across the whole Rollbar site as we continue to update all pages. It also provides a structure for future improvements that we will be introducing to the Item Detail page. Some key elements include A fixed Action Header accessible from wherever you are in the Item Detail page An Item Header providing details about the Item itself, breadcrumbs for navigation and a clear section for Service Links Contextual information about the Item, giving an overview of the details across all the Occurrences grouped together in the Item Details of the individual Occurrence, such as the Stack Trace, Params & Telemetry Slideover panels to investigate Occurrences, IPs & People More prominent placement of the Item History panel to enable discussions with teammates We will discuss these sections in more detail below. Mobile Friendly Design The new Item Detail page is now optimized for use on mobile devices, enabling investigation and handling on the smaller viewport. The new layout provides a clear view of overview statistics, an easier ability to perform actions via the new header,... --- ### How to Fix RecursionError in Python > The Python RecursionError is an exception that occurs when the maximum recursion depth is exceeded. Learn how to fix it. - Published: 2023-03-08 - Modified: 2023-03-08 - URL: https://rollbar.com/blog/python-recursionerror/ - Categories: Code Tutorials, Python - Tags: Python The Python RecursionError is an exception that occurs when the maximum recursion depth is exceeded. This typically occurs when a function calls itself recursively, and the recursion doesn't have a proper stopping condition (base case). What Causes RecursionError A RecursionError in Python is caused by a function calling itself recursively without a proper base case. Python has a limit on the number of times a function can call itself recursively. This is to ensure that the function does not execute indefinitely. If this limit is exceeded by a recursive function, a RecursionError is raised. Python RecursionError Example Here’s an example of a Python RecursionError thrown when calling a recursive function that does not have a base case: def func: func func Since the recursive function func does not have a terminating condition, calling it creates an infinite loop as the function keeps calling itself over and over again until the RecursionError: maximum recursion depth exceeded error occurs: Traceback (most recent call last): File "test. py", line 4, in func File "test. py", line 2, in func func File "test. py", line 2, in func func File "test. py", line 2, in func func RecursionError: maximum recursion depth exceeded How to Fix RecursionError in Python Here are some approaches to fix a recursion error in Python: Adding a base case: The most common cause of a recursion error is that the function does not have a base case to stop the recursion. In such cases, a base case can be added... --- ### How to Fix ZeroDivisionError in Python > The Python ZeroDivisionError is an exception that occurs when a number is attempted to be divided by zero. Learn how to fix it. - Published: 2023-03-08 - Modified: 2023-03-08 - URL: https://rollbar.com/blog/python-zerodivisionerror/ - Categories: Code Tutorials, Python - Tags: Python In Python, a ZeroDivisionError is raised when a division or modulo operation is attempted with a denominator or divisor of 0. What Causes ZeroDivisionError A ZeroDivisionError occurs in Python when a number is attempted to be divided by zero. Since division by zero is not allowed in mathematics, attempting this in Python code raises a ZeroDivisionError. Python ZeroDivisionError Example Here’s an example of a Python ZeroDivisionError thrown due to division by zero: a = 10 b = 0 print(a/b) In this example, a number a is attempted to be divided by another number b, whose value is zero, leading to a ZeroDivisionError: File "test. py", line 3, in print(a/b) ZeroDivisionError: division by zero How to Fix ZeroDivisionError in Python The ZeroDivisionError can be avoided using a conditional statement to check for a denominator or divisor of 0 before performing the operation. The code in the earlier example can be updated to use an if statement to check if the denominator is 0: a = 10 b = 0 if b == 0: print("Cannot divide by zero") else: print(a/b) Running the above code produces the correct output as expected: Cannot divide by zero A try-except block can also be used to catch and handle this error if the value of the denominator is not known beforehand: try: a = 10 b = 0 print(a/b) except ZeroDivisionError as e: print("Error: Cannot divide by zero") Surrounding the code in try-except blocks like the above allows the program to continue execution after the exception... --- ### How to Integrate ChatGPT into Your Python Script > Want to add some cutting-edge AI magic to your code? Buckle up as we show you how to use ChatGPT in your Python script. - Published: 2023-03-04 - Modified: 2023-08-18 - URL: https://rollbar.com/blog/how-to-integrate-chatgpt-into-your-python-script/ - Categories: Code Tutorials, Python - Tags: OpenAI, Python Want to add some cutting-edge AI magic to your code? That's right, we're talking about integrating ChatGPT - the powerhouse of large language models - into your Python scripts. With ChatGPT, your code will be able to understand natural language and generate human-like responses, revolutionizing the way users interact with your applications. How to use ChatGPT in a Python script To use the ChatGPT language model in a Python script, you’ll make use of the OpenAI Python library. Here are the steps to follow: First, sign up for OpenAI API access at https://beta. openai. com/signup/ to get an API key.   Use pip to install the Python OpenAI API client library by entering the following line in the terminal: pip install openai Create an environment variable named OPENAI_API_KEY and put your API key as its value to configure your API key. Add the next line to your Python code to import the OpenAI API client: import openai Initialize the OpenAI API client by adding the following lines to your Python code: openai. api_key = "YOUR_API_KEY_HERE" model_engine = "gpt-3. 5-turbo" # This specifies which GPT model to use, as there are several models available, each with different capabilities and performance characteristics. Now call the openai. Completion. create function to generate text using the ChatGPT language model. Here's an example of how to generate a response to a given prompt. Note there is an initial "system" prompt, followed by the user's question: response = openai. ChatCompletion. create( model='gpt-3. 5-turbo', messages=) message =... --- ### Reducing noise in Stack Traces by collapsing non-project frames > Reducing noise in Stack Traces by collapsing non-project frames - Published: 2023-03-02 - Modified: 2023-03-03 - URL: https://rollbar.com/blog/reducing-noise-in-stack-traces-by-collapsing-non-project-frames/ - Categories: Engineering, Java, product, Python - Tags: java, non-project frames, Python Stack Traces What are Stack Traces? Debugging errors in your software often requires browsing stack traces (also called as backtraces or tracebacks). A stack trace is a sequence of stack frames which represents the chain of methods calling each other in your software. Rollbar collects your stack trace at the time a crash occurs – this way you will be able to know which pieces of code were active when an issue happened. You can find how to read stack traces in our previous blog post. In this post, we will show how we are making it easier and quicker for our users to investigate errors and resolve underlying issues. A Python traceback How many Stack Traces does Rollbar receive? Rollbar processes more than 70 million stack traces on an average day, coming from tens of thousands of software projects. We prepare stack traces to be more useful for debugging by organizing and linking them to other data sources. Adding code context to stack frames with SCM integrations like GitHub, and grouping duplicates into single items are just a couple of the processing pipelines stack traces go through to assist users. Lately we also aimed to reduce noise in the way we present stack traces in the Item Detail page. How do Stack Traces vary across languages? A typical stack trace from one programming language can differ from a stack trace from another programming language in many aspects. For example, in Python the convention is to show the most recent... --- ### How to Fix EvalError in JavaScript > The JavaScript EvalError occurs when the global eval() function is used in a way that is not allowed. Learn more about it here. - Published: 2023-02-16 - Modified: 2023-02-17 - URL: https://rollbar.com/blog/javascript-evalerror/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript The JavaScript EvalError occurs when the global eval function is used in a way that is not allowed. This exception is not thrown by the latest versions of JavaScript, however the object remains for compatibility. What Causes EvalError Since EvalError is not used in the current ECMAScript specification, it is not thrown by the runtime. However, the EvalError object itself remains for backwards compatibility with earlier versions of the specification. Newer versions of JavaScript do not throw the error. EvalError Syntax new EvalError new EvalError(message) EvalError Example Here’s an example on how to create an EvalError in JavaScript: try { throw new EvalError("An EvalError occurred"); } catch (e) { console. log(e. stack); } In the above example, an EvalError is thrown in the try block. It is caught in the catch block and its stack trace is printed to the console. When the above code is executed, the following output is produced: EvalError: An EvalError occurred at test. js:2:9 How to Fix EvalError The EvalError is not thrown in the latest versions of JavaScript. However, other errors such as SyntaxError or TypeError can potentially be thrown when using the eval function incorrectly. In modern versions of JavaScript, the eval function is considered a legacy feature and its use is discouraged. Instead of using eval, more modern and secure alternatives, such as the Function constructor or the vm module should be used. Here’s an example on how to use Function instead of eval: let code = 'return x * 2'; let... --- ### Caching Database Queries in SQLAlchemy - Part 1/2 > How to cache database ORM queries using Python's SQLAlchemy v1.3 library - Published: 2023-02-15 - Modified: 2025-02-19 - URL: https://rollbar.com/blog/caching-database-queries-in-sqlalchemy-part-1-2/ - Categories: Engineering, Python - Tags: Caching, Database, Python, SQLAlchemy The database is one of the most critical components here at Rollbar and its performance ripples across most of our SLOs. One of our goals last months has been to remove unnecessary or repetitive load from it as much as possible. Caching queries is the 101 solution whenever you need to keep scaling up while maintaining, or even reducing, database costs (very relevant these days). Here’s an example of how just one query has been drastically reduced thanks to caching. This is the first entry of a two-part blog explaining how we cache database ORM queries using Python's SQLAlchemy v1. 3 library inside Rollbar. Note the version we’re using, it’s important because the mechanism for intercepting SQLAlchemy queries has changed a bit between versions 1. 3 and 1. 4. In this first blog post we will talk about: Caching challenges at Rollbar Caching strategy Serialization format Caching with SQLAlchemy Intercepting SQLAlchemy queries Passing options to queries with Mapper Options Part two, which will be a following blog post, will describe how we make usage in Rollbar system of the caching strateggies we discussed in this part one Caching challenges at Rollbar Caching is a hard problem. Among all the things you must consider is cache invalidation, not invalidation as in: “I’m ok with eventual consistency” but as in: “I have refactored my code and my new model representation is incompatible with cached values, so I better don’t read stale data from cache or my application will be failing until TTL... --- ### Take control of monitoring and responding to your production Frontend Javascript errors > We are very lucky on the Rollbar Customer Engineering Team because we get to work with many many development teams. Each team develops, tests, and deploys their applications in their own way. They have chosen different languages and frameworks to solve their particular problem. We learn from each team that we work with, and share these learnings to our Product Design team. - Published: 2023-02-13 - Modified: 2023-02-13 - URL: https://rollbar.com/blog/responding-to-frontend-javascript-errors/ - Categories: Code Tutorials, JavaScript - Tags: error-handling, error-monitoring, JavaScript Take control of monitoring and responding to Errors We are very lucky on the Rollbar Customer Engineering Team because we get to work with many many development teams. Each team develops, tests, and deploys their applications in their own way. They have chosen different languages and frameworks to solve their particular problem. We learn from each team that we work with, and share these learnings to our Product Design team. Javascript development teams contact Rollbar because they want to to build a real-time error monitoring and response process primarily for 3 reasons: They don’t know what errors their end-users are experiencing They want to give their end users a higher quality experience They want to find and fix errors in their code efficiently We see one big difference between Javascript teams we help and teams that develop in other languages: For applications developed in other languages, the teams generally already has logging and some form of application performance monitoring in place for their Production environment. For Javascript applications, the teams generally have zero visibility into errors that their end users are experiencing. In some ways this makes perfect sense: The browser developer tools make debugging errors in pre-production too easy. Developing formal observability processes for application errors isn’t prioritized early in the life of a Javascript application. Client-side errors are typically not the responsibility of SRE teams. Since development teams are so busy, an observability and error monitoring solution just hasn’t been built Javascript errors can be noisy and teams... --- ### Can ChatGPT speed up software error resolution? > One of the hardest tasks for software engineers is often having to stop what you are doing and look into a software bug (error), find the root cause and fix it quickly. This is hard because you may have never seen the affected code (someone else wrote it), it could be code you wrote a long time ago or just the context switching from what you are working on right now. - Published: 2023-02-10 - Modified: 2023-07-21 - URL: https://rollbar.com/blog/chatai-for-software-error-resolution/ - Categories: product, topics - Tags: ai, ml, OpenAI Can ChatGPT speed up software debugging and error resolution? One of the hardest tasks for software engineers is often having to stop what you are doing and look into a software bug (error), find the root cause and fix it quickly. This is hard because you may have never seen the affected code (someone else wrote it), it could be code you wrote a long time ago or just the context switching from what you are working on right now. Our mission here at Rollbar is to help developers build software quickly and painlessly, so could AI and technologies like ChatGPT help move this forward? So let's explore some practical examples to see if this is true. Error detection / code quality scanning One of the potential uses of ChatGPT and indeed AI in general is to scan large amounts of data (code, files) and look into potential issues, errors and general poor implementation practices. We definitly see great value here that can out perform todays static and dynamic code analysis tools. What about error detection when code is running in production? This is best done by Error monitoring tools like Rollbar. Rollbar can detect an exception (handled or unhandled) in real-time capturing the full stack trace and data around the error that is key to understanding the root cause and ultimatly resolving the issue. This is where we think AI can be of great use! What if we can feed this real-time data to an AI solution that can... --- ### How to Fix Ruby Bundle Install Errors > Ruby’s "Bundle Install" command is used to install all the dependencies of a Ruby project. However, this command may fail for a variety of reasons. - Published: 2023-02-01 - Modified: 2023-02-16 - URL: https://rollbar.com/blog/ruby-bundle-install-errors/ - Categories: Code Tutorials, Ruby - Tags: ruby A bundle install command in Ruby is used to install all of a project's dependencies. But occasionally, this command could falter and issue an error. Numerous variables might be to blame for this issue, and fixing it might prove challenging. In this post, we’ll go through some of the typical reasons for bundle install errors in Ruby along with solutions. What Causes the Bundle Install Error? There could be a few different reasons for this error when running bundle install in a Ruby project. Some common causes include: 1. Outdated/Missing RubyGems One of the most common causes of bundle install errors is a missing or outdated version of the RubyGems package manager. RubyGems is a package manager for the Ruby programming language that is used to manage the installation and updating of Ruby libraries, also known as gems. If the version of RubyGems is outdated or missing, it may lead to errors when running bundle install. Solution: To fix this issue, we can update RubyGems to the latest version by running the command: gem update --system 2. Outdated/Missing BundlerGem Another common cause of bundle install errors is a missing or outdated version of the Bundler gem. Bundler is a gem that is used to manage dependencies in a Ruby project. If the version of Bundler is outdated or missing, it may lead to errors when running bundle install. Solution: To fix this issue, we can install or update the Bundler gem by running the command: gem install bundler 3. Conflicting... --- ### How to Handle ActiveRecord:: RecordNotFound in Ruby > When an application is unable to find a record corresponding to the parameters in the database, a RecordNotFound error message appears in Ruby. - Published: 2023-02-01 - Modified: 2023-02-01 - URL: https://rollbar.com/blog/ruby-activerecord-recordnotfound/ - Categories: Code Tutorials, Ruby - Tags: ruby ActiveRecord::RecordNotFound in Ruby is an error that occurs when an application is unable to find a record in the database that corresponds to the provided parameters. ActiveRecord is a Ruby gem that is used to interact with databases in a Rails application. It provides an object-relational mapping (ORM) layer that allows us to work with database records as if they were Ruby objects. When a record is requested using ActiveRecord, the gem will query the database and return the corresponding record if it exists. However, if the record cannot be found, Active Record will raise an ActiveRecord::RecordNotFound error. When does ActiveRecord::RecordNotFound error occur? The ActiveRecord::RecordNotFound error can occur in a number of ways. One common cause is when an application attempts to find a record by its ID and the provided ID does not exist in the database. For example, if an application attempts to find a user with an ID of 100 but there is no user with that ID in the database, Active Record will raise a RecordNotFound error. Another common cause of this error is when an application attempts to find a record using a query that returns no results. For example, if an application attempts to find a user with a specific email address and there is no user with that email address in the database, Active Record will raise an ActiveRecord::RecordNotFound error. Example 1 - ActiveRecord::RecordNotFound Error ActiveRecord::RecordNotFound in Ruby can be demonstrated with a simple example. Let's say we have a Rails application with... --- ### How to Implement Try Catch Finally Blocks in PHP > Using try-catch-finally blocks can help you write more robust and reliable code by handling exceptions in a controlled manner. Learn how! - Published: 2023-02-01 - Modified: 2023-02-01 - URL: https://rollbar.com/blog/php-try-catch-finally/ - Categories: Code Tutorials, PHP - Tags: PHP In PHP, try-catch-finally blocks are used to handle exceptions, which are runtime errors that occur during the execution of a script. Using try-catch-finally blocks can help write more robust and reliable code by allowing developers to handle exceptions in a controlled manner. Using Try Catch Finally Blocks Try-catch-finally blocks can be used in PHP to handle exceptions in the following way: The try block should contain code that can throw an exception. The catch block should contain code to handle the exception. The finally block should contain code that is always executed, regardless of whether an exception is thrown or not. Try Catch Finally Syntax Here is the basic syntax for implementing the try, catch and finally blocks in PHP to handle a single exception: try { // Code that can throw an exception } catch (ExceptionType $e) { // Code to handle the exception } finally { // Code that is always executed } Try Catch Finally Flow Control The following is the order in which exceptions are handled in PHP using try-catch-finally blocks: If an exception is thrown in the try block, script execution is halted and control is passed to the catch block. If no exception is thrown, script execution continues and the catch block is skipped. The catch block catches and handles the exception if one occurs. It must specify an exception type to catch, and also include a variable to store the exception object. This object can be used to get information about the exception,... --- ### Heroku Deploy App Webhook Support - Published: 2023-01-25 - Modified: 2023-01-25 - URL: https://rollbar.com/blog/heroku-deploy-app-webhook/ - Categories: company, product Heroku Deploy Hook Changes Starting October 17, 2022, Heroku will stop accepting new deploy hooks. Existing hooks will continue working until the product is sunset on February 17, 2023, Heroku encourages you to migrate your hooks as soon as possible. Read more here about the Heroku Deploy Hooks Sunset announcement. Rollbar has now implemented a receiver for the new Heroku App Webhooks in order to continue providing deploy tracking for the Heroku platform for all Rollbar users. Setup Instructions We created the following instructions for all users to migrate to the new deploy method. Read the detailed setup guide for Heroku Deployments to Rollbar Start using Rollbar via Heroku We have made it easy to start using Rollbar in every Heroku project by adding in Rollbar to your new project or existing project. View the Heroku Add-on here --- ### How to Handle the Unpermitted Parameters Error in Ruby > The Unpermitted Parameters error is raised when the given parameter is not expected in an update, create or user-defined action. Learn more. - Published: 2023-01-22 - Modified: 2023-01-22 - URL: https://rollbar.com/blog/ruby-unpermitted-parameters-error/ - Categories: Code Tutorials, Ruby The ActionController::UnpermittedParameters error occurs when a parameter that has been passed is not permitted in a create, an update, or a user-defined action. In older versions of Rails, information about the unpermitted keys was provided in the logs only when an unpermitted parameter was found in a request. This did not provide enough information for the developers to understand which controller and action received the unpermitted parameters. Raising the Unpermitted Parameters Error Makes for Easier Debugging Let's say we have a user who has a name, an email address, and a role attribute, and only the name and email attributes are permitted. requested_params = { user: { name: "Tony Stark", email: "tony@gmail. com", role: "admin" } } tempParams = ActionController::Parameters. new(requested_params) tempParams. permit(user: ) But in the log, we only get: Unpermitted parameter: :role As seen in the log, only information about the unpermitted key is provided, with no information about the controller or action that actually received the unpermitted parameter. If the log files don't specify which parameters are causing the problem, it will be very hard for a programmer to pinpoint the error when dealing with production-level code. How to Raise the Unpermitted Parameters Error in Ruby The two best ways to raise the Unpermitted Parameters error are as follows: 1. Modifying the Config File In order to raise the Unpermitted Parameters error, the ActionController::Parameters. action_on_unpermitted_parameters field should be set to :raise. We need to make changes in a config file development. rb by adding the below line... --- ### Runtime Errors in Ruby > A RuntimeError is a default exception raised when an invalid operation is performed. Let’s learn more about these errors with some examples. - Published: 2023-01-22 - Modified: 2023-01-22 - URL: https://rollbar.com/blog/ruby-runtime-errors/ - Categories: Code Tutorials, Ruby - Tags: ruby Exceptions are unintended events that take place when a program is being executed or during its runtime causing disruptions to the program's overall logic. In Ruby, a program is enclosed between the begin and end blocks and a rescue block is used to tell what types of exceptions are to be handled. When no class is specified, by default, a RuntimeError is raised by Kernel#raise. raise "an exception has occurred" This is equivalent to: raise RuntimeError, "an exception has occurred" Whenever these runtime exceptions occur, for example, a “divide by zero” error or an “index out of bounds” error, they stop the execution of the program completely, so it is good programming practice to handle them properly in our code. In the exception hierarchy, RuntimeError is a subclass of StandardError, which is a subclass of Exception. All Ruby exceptions are subclasses of the Exception class. Exception | |--> StandardError | |---> RuntimeError Example 1: How to Raise an Exception with a Message In the below code, we raise an exception with a message; by default, Ruby will raise the generic exception RuntimeError. begin raise "Raising our exception" rescue StandardError => e puts "Exception class is #{e. class. name}" puts "Exception message is #{e. message}" puts "Exception backtrace is #{ e. backtrace}" end Output of Example 1 Exception class is RuntimeError Exception message is Raising our exception Exception backtrace is Example 2: How to Raise a Generic Exception In the below code, a Runtime Exception (a generic exception) will be raised.... --- ### How to Fix HTTPError in Python > An HTTPError is raised when an HTTP request returns a status code that represents an error. Learn how to fix it. - Published: 2023-01-19 - Modified: 2023-01-19 - URL: https://rollbar.com/blog/python-httperror/ - Categories: Code Tutorials, Python - Tags: Python The urllib. error. HTTPError is a class in the Python urllib library that represents an HTTP error. An HTTPError is raised when an HTTP request returns a status code that represents an error, such as 4xx (client error) or 5xx (server error). HTTPError Attributes The urllib. error. HTTPError class has the following attributes: code: The HTTP status code of the error. reason: The human-readable reason phrase associated with the status code. headers: The HTTP response headers for the request that caused the HTTPError. What Causes HTTPError Here are some common reasons why an HTTPError might be raised: Invalid or malformed request URL. Invalid or malformed request parameters or body. Invalid or missing authentication credentials. Server internal error or malfunction. Server temporarily unavailable due to maintenance or overload. Python HTTPError Examples Here are a few examples of HTTP errors in Python: 404 Not Found import urllib. request import urllib. error try: response = urllib. request. urlopen('http://httpbin. org/status/404') except urllib. error. HTTPError as err: print(f'A HTTPError was thrown: {err. code} {err. reason}') In the above example, an invalid URL is attempted to be opened using the urllib. request. urlopen function. Running the above code raises an HTTPError with code 404: A HTTPError was thrown: 404 NOT FOUND 400 Bad Request import urllib. request try: response = urllib. request. urlopen('http://httpbin. org/status/400') except urllib. error. HTTPError as err: if err. code == 400: print('Bad request! ') else: print(f'An HTTP error occurred: {err}') In the above example, a bad request is sent to the server.... --- ### How to use Try Catch Throw in JavaScript > How to use Javascript Try Catch Throw to handle exceptions. - Published: 2023-01-17 - Modified: 2023-01-19 - URL: https://rollbar.com/blog/exception-handling-in-javascript-try-catch-throw/ - Categories: JavaScript - Tags: JavaScript How Javascript exception handling works. Try Catch Throw Throw, and Try... Catch... Finally The try statement defines a code block to run (to try). The catch statement defines a code block to handle any error. The finally statement defines a code block to run regardless of the result. The throw statement defines a custom error. Example Javascript exceptionExample Javascript exception In this example we misspelled "alert" as "allert" to deliberately produce an error: try { allert("Welcome to this test! "); } catch(err) { document. getElementById("pDemo"). innerHTML = err. message; } Implementing the Rollbar Javascript SDK helps speed up the error resolution flow. Here is the code example: try { allert("Welcome to this test! "); } catch(err) { Rollbar. error(err); document. getElementById("pDemo"). innerHTML = err. message; } Track, Analyze and Manage Errors With Rollbar Managing errors and exceptions in your code is challenging. It can make deploying production code an unnerving experience. Being able to track, analyze, and manage errors in real-time can help you to proceed with more confidence. Rollbar automates error monitoring and triaging, making fixing Javascript errors easier than ever. Try it today! --- ### How to Handle io.netty.handler.timeout.ReadTimeout Exception in Java > This exception is thrown when no data is read within a certain period of time when using the Netty framework. Learn how to handle it. - Published: 2023-01-10 - Modified: 2024-07-24 - URL: https://rollbar.com/blog/java-io-netty-handler-timeout-readtimeoutexception/ - Categories: Code Tutorials, Java - Tags: java The io. netty. handler. timeout. ReadTimeoutException is a runtime exception in Java that is thrown when no data is read within a certain period of time when using the Netty framework. Since the io. netty. handler. timeout. ReadTimeoutException is thrown at runtime, it does not need to be declared in the throws clause of a method or constructor. What Causes io. netty. handler. timeout. ReadTimeoutException The io. netty. handler. timeout. ReadTimeoutException is thrown when a read operation times out. This exception is typically thrown by the ReadTimeoutHandler in the Netty network application framework. Here are a few scenarios where a read operation might take longer than the timeout value: The server takes too long to process the request and send a response. A network issue causes delays in the transmission of data. The client takes too long to process data received from the server. io. netty. handler. timeout. ReadTimeoutException Example Here’s an example of an io. netty. handler. timeout. ReadTimeoutException thrown when the server takes too long to send a response. Three Java classes are created in this example to demonstrate how the exception can occur: SlowServer - A Netty server that is slow to respond to the client. SlowServerHandler - A handler for SlowServer that sleeps for 10 seconds before sending the response to the client. Client - A Netty client that tries to connect to SlowServer and read the response. SlowServer. java: import io. netty. bootstrap. ServerBootstrap; import io. netty. channel. ChannelFuture; import io. netty. channel. ChannelInitializer; import... --- ### How to Fix Runtime Errors in Python > A runtime error is a type of error that occurs during program execution. Learn how to fix them. - Published: 2023-01-10 - Modified: 2023-07-10 - URL: https://rollbar.com/blog/python-runtime-error/ - Categories: Code Tutorials, Python - Tags: Python A runtime error is a type of error that occurs during program execution. The Python interpreter executes a script if it is syntactically correct. However, if it encounters an issue at runtime, which is not detected when the script is parsed, script execution may halt unexpectedly. What Causes Runtime Errors Some of the most common examples of runtime errors in Python are: Division by zero. Using an undefined variable or function name. Performing an operation on incompatible types. Accessing a list element, dictionary key or object attribute that does not exist. Accessing a file that does not exist. Python Runtime Error Examples Here’s a few examples of runtime errors in Python: Division by zero If a number is divided by zero in Python, a runtime error is raised: print(100/0) In the above example, a number is attempted to be divided by zero. Running the above code raises a ZeroDivisionError: Traceback (most recent call last): File "main. py", line 1, in print(100/0) ZeroDivisionError: division by zero Using an undefined variable or function name A runtime error is raised if an attempt is made to access an identifier, such as a variable or function name, that is not declared previously: print(myString) In the above example, an undefined identifier myString is attempted to be accessed. Running the above code raises a NameError: Traceback (most recent call last): File "main. py", line 1, in print(myString) NameError: name 'myString' is not defined Performing an operation on incompatible types If an operation, such as addition, multiplication... --- ### How to Avoid java.util.concurrent.TimeoutException > The java.util.concurrent.TimeoutException is thrown when a blocking operation times out. Learn how to avoid it. - Published: 2022-12-23 - Modified: 2024-07-24 - URL: https://rollbar.com/blog/java-timeoutexception/ - Categories: Code Tutorials, Java - Tags: java The java. util. concurrent. TimeoutException is a checked exception in Java that is thrown when a blocking operation times out. Since java. util. concurrent. TimeoutException is a checked exception, it must be explicitly handled in methods which can throw this exception - either by using a try-catch block or by throwing it using the throws clause. What Causes java. util. concurrent. TimeoutException Blocking operations in Java that have a specified timeout require a way to indicate that the timeout has occurred. For many such operations, it is possible to return a value that indicates timeout. When this is not possible or desirable, TimeoutException should be thrown. java. util. concurrent. TimeoutException Example Here is an example of a TimeoutException thrown when a thread awaits at a barrier until the specified timeout elapses: import java. util. concurrent. BrokenBarrierException; import java. util. concurrent. CyclicBarrier; import java. util. concurrent. TimeUnit; import java. util. concurrent. TimeoutException; class TimeoutExceptionExample { public static void main(String args) throws TimeoutException, InterruptedException, BrokenBarrierException { CyclicBarrier barrier = new CyclicBarrier(2); barrier. await(10, TimeUnit. MILLISECONDS); } } In the above example, the main thread invokes the await method on an instance of CyclicBarrier with a specified timeout of 10 milliseconds. When the barrier is not reached by other threads within the specified timeout, a TimeoutException is thrown: Exception in thread "main" java. util. concurrent. TimeoutException at java. base/java. util. concurrent. CyclicBarrier. dowait(CyclicBarrier. java:257) at java. base/java. util. concurrent. CyclicBarrier. await(CyclicBarrier. java:435) at TimeoutExceptionExample. main(TimeoutExceptionExample. java:9) How to Avoid java. util. concurrent. TimeoutException... --- ### Guide to Frontend Error Handling > Discover the secrets to effective error handling and how to track errors in real-time. Don't miss out on the essential tips in this must-read guide. - Published: 2022-12-12 - Modified: 2022-12-12 - URL: https://rollbar.com/blog/guide-to-frontend-error-handling/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript To enhance user experience, avoid data loss, and guard against security vulnerabilities, frontend errors must be handled properly. In this post, we'll cover the most common types of frontend errors and best practices for handling them. We'll also explore how to use the popular error monitoring platform Rollbar to track and manage errors. Common types of frontend errors There are several types of frontend errors that can occur. The most common are: JavaScript runtime errors These occur when the JavaScript code in your application is executed in the browser and something goes wrong. Examples include syntax errors (e. g. a missing semicolon in your code) and reference errors (e. g. using a variable that has not been defined). Network errors These occur when there is a problem with the network connection between the browser and your application's server. Examples include failed HTTP requests (e. g. when the server is down or the request times out) and DNS errors (e. g. when the domain name cannot be resolved). User input errors These occur when users provide invalid or incomplete input to your application. Examples include validation errors (e. g. entering an invalid email address) and required field errors (e. g. forgetting to fill out a required form field). Best practices for frontend error handling To effectively handle frontend errors, follow these best practices: Display user-friendly error messages When an error occurs, always provide a clear and helpful error message. This helps users understand what went wrong and potentially guide them towards... --- - [How to Detect Memory Leaks in Java: Causes, Types, & Tools](https://rollbar.com/blog/how-to-detect-memory-leaks-in-java-causes-types-tools/): If memory leaks are not handled, your application can eventually run out of memory and terminate. Learn what causes memory leaks in Java and how to handle it. - [How to Debug Java Code Faster with Eclipse](https://rollbar.com/blog/how-to-debug-java-code-faster-with-eclipse/): Modern IDEs like Eclipse provide debugging tools that make it easier for developers to walk through their code interactively. Learn all the best practices here. ### What is E_WARNING in PHP? > PHP run-time warnings are non-fatal errors that do not halt script execution. Learn more about them here. - Published: 2022-12-12 - Modified: 2022-12-21 - URL: https://rollbar.com/blog/php-e-warning/ - Categories: Code Tutorials, PHP - Tags: PHP The PHP E_WARNING constant refers to run-time warnings. Warnings are non-fatal errors in PHP that do not halt script execution. What Causes E_WARNING PHP Warnings are errors that are issued when something unexpected or unwanted occurs in code. They are usually triggered because of minor mistakes such as: Referring to a file that does not exist. Wrong or missing arguments for inbuilt function calls. Sending HTTP headers after sending HTTP body output. It is considered good practice to fix warnings as they can potentially lead to serious issues over time. How to Enable E_WARNING It is best practice to enable E_WARNING during development since it warns developers about possible bugs in code. This can help with issues such as missing inbuilt function arguments and saves time when debugging. E_WARNING can be enabled using the error_reporting function: error_reporting(E_WARNING); This will show only E_WARNING errors. However, it is recommended to show all errors during development. This can be done by enabling E_ALL: error_reporting(E_ALL); E_WARNING Example Here's an example of a PHP E_WARNING issued when calling an inbuilt function with a missing parameter: When the above script is executed, a Warning is generated since the var_dump function expects an argument: PHP Warning: var_dump expects at least 1 parameter, 0 given in main. php on line 3 How to Fix E_WARNING PHP Warnings can be identified by inspecting the warning message and the line numbers in code where the issue exists. The issue can then be fixed in code to resolve the Warning. In... --- - [Announcing the Rollbar Terraform Provider For Managing Rollbar Automatically](https://rollbar.com/blog/announcing-the-rollbar-terraform-provider-for-managing-rollbar-automatically/): It can be really exciting when your development team is growing fast! But then you soon realize that managing all... ### What is Migration in Rails? > Migration in Rails makes it easy to change an application's database schema consistently, but occasionally it trips up. Learn what steps you can take. - Published: 2022-12-05 - Modified: 2022-12-05 - URL: https://rollbar.com/blog/migration-in-rails/ - Categories: Code Tutorials, Ruby - Tags: ruby Migration in Rails is a tool that allows the developer to use Ruby to change an application's database schema. Instead of using SQL scripts, we use Ruby code, which is database independent, so it is easy to move the application to a completely new platform. We define these database changes in domain-specific language (DSL), and these migrations can be rolled back and managed along with the application source code. In Ruby, the db/migrate folder contains all the migrations in the form of files. The name of the file is in the form YYYYMMDDHHMMSS_name_of_migration. rb, which is the UTC timestamp followed by the name of the migration. One important point to remember here is that the migration class name should match the later part of the file name. For instance, 20220906120001_add_details_to_orders. rb should define the class AddDetailsToOrders (CamelCased). Using migration, we can create tables, add indexes on columns, and add or remove columns. Example of Migration in Rails Let's see an example to understand migration better: rails generate migration CreateEvents department:string The above command creates a migration that creates table events in our database. And a timestamped Ruby file, 20221119103635_create_events. rb, is also created in the db/migrate directory. A Ruby file would have the following contents: class CreateEvents < ActiveRecord::Migration def change create_table :events do |t| t. string :department t. timestamps end end end Let's examine the code shown above: The migration file class CreateEvents inherits from superclass ActiveRecord::Migration. 5. 7 describes the Rails version here. Then we have the method... --- - [Infographic: The State of Software Code](https://rollbar.com/blog/infographic-the-state-of-software-code/): We surveyed nearly 1,000 developers across the U. S. to uncover key development trends and insights. Today’s businesses are software... - [Announcing The 2021 State of Software Code Report](https://rollbar.com/blog/announcing-the-2021-state-of-software-code-report/): When Cory Virok and I started Rollbar in 2012, we knew something was lacking in how software was being built.... - [Spring Boot vs Spring MVC: How do They Compare?](https://rollbar.com/blog/spring-boot-vs-spring-mvc-how-do-they-compare/): It’s common to confuse Spring Boot and Spring MVC. They both, after all, include the word “Spring” and are used... ### How to Resolve NameError: Uninitialized Constant in Ruby > The NameError: Uninitialized Constant error in Ruby is often raised when a given variable or constant is undefined or invalid. Learn how to handle it. - Published: 2022-12-05 - Modified: 2022-12-05 - URL: https://rollbar.com/blog/ruby-nameerror/ - Categories: Code Tutorials, Ruby - Tags: ruby A NameError is raised when a referenced variable or a constant, such as a module, a class, or a constant variable, isn't defined or is invalid. The Uninitialized Constant error is a variation of the NameError exception class and has several reasons to occur. NameError: uninitialized constant Object::Something When this error occurs, several class names appear in place of Something. What causes an Uninitialized Constant Error? Let’s look at the most common reasons why NameError: Uninitialized Constant occurs: Whenever a class or module is referred to in code that can't be found, this error occurs. This often happens because the require method is missing, which is used to load another file and import all classes and method definitions from that file. Methods and variables in Ruby start with lowercase letters, whereas class names begin with uppercase letters. So in the code, if this distinction is missing, we'll get an Uninitialized Constant exception. Ruby is case-sensitive, so if there is any typo in the code, this error pops up. One small example of that is: X = 20; Y = 50; SUM = X+Y; print "Sum of x + y = ", sum; When the above code is executed, we get the following output: undefined local variable or method 'sum' for main:Object (NameError) If the code contains rubygems, which all new versions of Ruby disapprove of. Example of NameError: Uninitialized Constant Class Let’s examine and analyze one of the causes of Uninitialized Constant errors. This one occurs when the configuration of... --- - [Introducing AI-Assisted Workflows and Automation-Grade Grouping](https://rollbar.com/blog/introducing-ai-assisted-workflows-and-automation-grade-grouping/): Imagine you’ve been working on a new feature for weeks. Finally—after exhaustive QA and testing, and more late coding sessions... ### What is E_NOTICE in PHP? > Run-time notices indicate minor errors in PHP that do not halt script execution. Learn more about them here. - Published: 2022-12-01 - Modified: 2022-12-12 - URL: https://rollbar.com/blog/php-e-notice/ - Categories: PHP - Tags: PHP The PHP E_NOTICE constant refers to run-time notices. Notices indicate that the script encountered something that could indicate an error, but could also happen in the normal course of running a script. What Causes E_NOTICE Notices indicate minor errors in PHP that do not halt script execution. They are usually triggered because of minor mistakes in code such as: Using a variable before declaring it. Typos in variable names. Using an ambiguous array index. Notice messages are not serious and can often be ignored. However, it is generally considered good practice to fix them. How to Enable E_NOTICE It is best practice to enable E_NOTICE during development since it warns developers about possible bugs in code. This can help with issues such as unassigned values, typos etc. and saves time for debugging. E_NOTICE can be enabled using the error_reporting function: error_reporting(E_NOTICE); This will show only E_NOTICE errors. However, it is recommended to show all errors during development. This can be done by enabling E_ALL: error_reporting(E_ALL); E_NOTICE Example Here's an example of a PHP E_NOTICE issued when using an undeclared variable: When the above script is executed, a Notice is generated since $mystring is not declared: PHP Notice: Undefined variable: mystring in main. php on line 2 How to Fix E_NOTICE PHP Notices can be identified by inspecting the notice message and the line numbers in code where the issue exists. The issue can then be fixed in code to resolve the Notice. In the earlier example, the notice message can... --- - [Meet Continuous Code Improvement](https://rollbar.com/blog/meet-continuous-code-improvement/): If your experience as a developer is anything like mine, the best moments are those known as the "flow state.... - [Rollbar SDKs and the new Apple-Silicon Mac Platform](https://rollbar.com/blog/rollbar-sdks-and-the-new-apple-silicon-mac-platform/): Apple just introduced Apple M1, it’s new processor, along with their latest product versions. Back in June, when Apple had... - [10 Developer Horror Stories To Keep You Up at Night](https://rollbar.com/blog/10-developer-horror-stories-to-keep-you-up-at-night/): This is a guest post from our partners at LaunchDarkly. We software engineers like to think ourselves unflappable. Consider that... - [Introducing Versions API to Automate Error Response for New Code Versions](https://rollbar.com/blog/introducing-versions-api-to-automate-error-response-for-new-code-versions/): You know the feeling. You’ve just deployed a new version to production and are monitoring the Rollbar dashboard for any... - [Introducing our new Java Spring Error Monitoring SDK](https://rollbar.com/blog/introducing-our-new-java-spring-error-monitoring-sdk/): We’re excited to announce that we’ve strengthened our solution for Java Spring exception handling. Spring developers can now integrate Rollbar... - [5 Ways to Improve Your Dev Team Velocity](https://rollbar.com/blog/5-ways-to-improve-your-dev-team-velocity/): Velocity, much like the pulse rate of an individual, is a measure of health for your scrum team. Learn how to use velocity to ensure that throughput stays high. ### How to Fix E_WARNING: strpos(): Empty needle in PHP > This warning is issued if the substring being searched for using the strpos() function is an empty string. Learn how to fix it. - Published: 2022-11-17 - Modified: 2022-12-12 - URL: https://rollbar.com/blog/php-e-warning-strpos-empty-needle/ - Categories: PHP - Tags: PHP The PHP strpos($haystack, $needle, $offset) function is used to find the numeric position of the first occurrence of a substring in a string. The haystack parameter is the string to search in, and needle is the substring being searched for. The E_WARNING: strpos: Empty needle warning is issued if the needle substring is empty when calling the strpos function. E_WARNING: strpos: Empty needle Example Here’s an example of an E_WARNING: strpos: Empty needle issued when searching for an empty string using the strpos function: In the above example, since the needle parameter in the strpos function is an empty string, an E_WARNING: strpos: Empty needle is issued: PHP Warning: strpos: Empty needle in main. php on line 4 How to Fix E_WARNING: strpos: Empty needle The E_WARNING: strpos: Empty needle warning can be avoided by adding a check before calling the strpos function to ensure that the needle parameter is not an empty string. The function should only be called if the substring being searched for is not empty. The above approach can be applied to the previous example to avoid the warning: Here, a check is added to ensure that the strpos function is only called if the needle parameter is not an empty string. This avoids the E_WARNING: strpos: Empty needle warning, and the correct output is produced as expected: Continuing execution Track, Analyze and Manage Errors With Rollbar Managing errors and exceptions in your code is challenging. It can make deploying production code an unnerving experience. Being... --- - [How a Hackathon Led to 80% Fewer Rollbar Items](https://rollbar.com/blog/how-a-hackathon-led-to-80-fewer-rollbar-items/): Earlier this year, we were invited to Thredup’s wonderful office space in Oakland to be one of the presenters at... - [Introducing the Rollbar Deploy GitHub Action](https://rollbar.com/blog/introducing-the-rollbar-deploy-github-action/): We’re excited to announce our support for GitHub Actions with our new Rollbar Deploy GitHub Action. Teams using GitHub Actions... - [We Are Rollbar Support](https://rollbar.com/blog/we-are-rollbar-support/): Hello, we are Rollbar support! At Rollbar, support has many limbs. We receive all the communication sent to Rollbar via... ### How to Use errors.WithMessage() in Golang > The errors.WithMessage() method adds context to errors by annotating them with a new message which makes debugging easier. Learn more about it here. - Published: 2022-11-17 - Modified: 2024-07-24 - URL: https://rollbar.com/blog/golang-errors-withmessage/ - Categories: GoLang - Tags: golang In Golang, the WithMessage method allows you to annotate errors with an additional message. Often, error values by themselves don’t give enough context to be useful in debugging. Take, for example, Golang’s basic error handling technique: if err ! = nil { return err } In Golang, errors are treated as values, so err contains the error value. In this situation, a developer could make use of the error package to add context to the code along with the failure path without destroying the original value of the error. Syntax of WithMessage WithMessage annotates err with a new message. If err is nil, WithMessage returns nil. func WithMessage(err error, message string) error Example One In the below code, the errors package has been imported first, followed by an errors. New method is used and returns an error. Each call to New returns a distinct error value in the event that the content is indistinguishable. package main import ( "fmt" "github. com/pkg/errors" ) func main { cause := errors. New("What's the cause? ! ") err := errors. WithMessage(cause, "something unusual has occurred") fmt. Println(err) } Output something unusual has occurred: What's the cause? ! Example Two Let’s see another block of code to understand it even better. import ( "database/sql" "fmt" ) func second error { return sql. ErrNoRows } func first error { return second } func main { err := first if err == sql. ErrNoRows { fmt. Printf("Data error, %+v\n", err) return } } Output Executing the above... --- - [Apache Kafka Example: How Rollbar Removed Technical Debt - Part 2](https://rollbar.com/blog/apache-kafka-example-how-rollbar-removed-technical-debt-part-2/): In the first part of our series of blog posts on how we remove technical debt using Apache Kafka at... - [Rollbar Goes Remote - Recruiting From Home](https://rollbar.com/blog/rollbar-goes-remote-recruiting-from-home/): In the face of the coronavirus outbreak and sudden shift to working from home, Rollbar moved our entire recruiting process... ### How to Handle the NoMethodError in Ruby > The NoMethodError is raised when an object on which we are calling the method doesn't exist. Learn how to use method_missing() to handle it. - Published: 2022-11-08 - Modified: 2022-11-11 - URL: https://rollbar.com/blog/ruby-nomethoderror/ - Categories: Code Tutorials, Ruby - Tags: ruby The NoMethodError is the most common error encountered in Ruby. As the name suggests, a NoMethodError occurs when the object on which we are trying to call a method or an attribute is not defined. For example when you call a method on an object that is nil or that is not defined: message = "hello world" message. dummyMethod Output: undefined method `dummyMethod' for "hello world":String (NoMethodError) Let’s take a look at some more examples and how to define a method_missing method to gracefully handle such errors. Example 1: NoMethodError in Ruby In the code example that follows, we've built a calculator that can operate on two numbers. In order to do these activities, we created the class' objects and called the various methods. class User: def plus(a,b) puts "The sum is : #{a} + #{b} = #{a+b}" end def mul(a,b) puts "The product is : #{a} * #{b} = #{a*b}" end end user = User. new user. plus(3,4) user. mul(5,6) user. divide(4,5) Output: Example 1 When the above code is executed we get the following output: The sum is : 3 + 4 = 7 The product is : 5 * 6 = 30 undefined method `divide' for # (NoMethodError) You can see that for the first two methods our code gave the correct answer but for the divide method we got NoMethodError. This indicates that the method which we are calling using the object user isn’t defined. Use method_missing to Handle NoMethodError in Ruby When dealing with small... --- - [Apache Kafka Example: How Rollbar Removed Technical Debt - Part 1](https://rollbar.com/blog/apache-kafka-example-how-rollbar-removed-technical-debt-part-1/): In this two-part series of blog posts, we’ll explain how Kafka has helped us in removing parts of our architecture... ### How to Handle InvalidArgument Exception in PHP > The PHP InvalidArgumentException is an exception that is thrown when an inappropriate argument is passed to a function. Learn how to handle it. - Published: 2022-11-08 - Modified: 2022-12-12 - URL: https://rollbar.com/blog/php-invalidargumentexception/ - Categories: Code Tutorials, PHP - Tags: PHP The PHP InvalidArgumentException is an exception that is thrown when an inappropriate argument is passed to a function. This could be because of an unexpected data type or invalid data. What Causes InvalidArgumentException There are mainly two cases where an InvalidArgumentException can be thrown: When the strict_types flag is enabled and an unexpected data type is passed for an argument. When the data type of an argument is correct, but the data value is invalid. InvalidArgumentException Example Here’s an example of an InvalidArgumentException thrown when an inappropriate type is passed as an argument: In the above example, the multiply function expects two numbers as arguments. If either of the two arguments are not numbers, an InvalidArgumentException is thrown: PHP Fatal error: Uncaught InvalidArgumentException: Both arguments must be numbers in main. php:8 Stack trace: #0 main. php(13): multiply #1 {main} thrown in main. php on line 8 How to Handle InvalidArgumentException in PHP The following steps should be followed to handle an InvalidArgumentException: Inspect the exception stack trace and identify the lines of code that pass the invalid argument. Update the code to make sure that the passed argument is valid within the method that uses it. To catch the InvalidArgumentException, try-catch blocks can be used. Certain situations can be handled using a try-catch block such as asking for user input again instead of stopping execution when an invalid argument is encountered. Track, Analyze and Manage Errors With Rollbar Managing errors and exceptions in your code is challenging. It can make... --- - [Announcing our new $11M Series B funding](https://rollbar.com/blog/announcing-our-new-11m-series-b-funding/): Nearly eight years ago, Cory and I started on a journey to help developers build software quickly and painlessly. As... - [Introducing Notifications API to Automate Notification Settings Across Projects](https://rollbar.com/blog/introducing-notifications-api-to-automate-notification-settings-across-projects/): At Rollbar we love workflow automation. With our new Notifications API, you can automate setting up of custom notification rules... ### How to Handle an ActionController:: RoutingError in Ruby on Rails > The Rails version of the 404 error, ActionController::RoutingError occurs when a URL requested does not have a matching route. Learn how to catch them. - Published: 2022-11-08 - Modified: 2022-11-09 - URL: https://rollbar.com/blog/ruby-on-rails-routingerror/ - Categories: Code Tutorials, Ruby - Tags: ruby The ActionController::RoutingError is the most common error faced when working on a Ruby on Rails project - it’s equivalent to the classic 404 error in web applications. The ActionController::RoutingError indicates that there isn't a route in the application for the URL entered by the user in the browser. Wait, What is an ActionController? ActionController is the "C" in the Model-View-Controller software design pattern. It is made up of several actions that are carried out in response to a request and either redirects to another action or renders a template. It serves as an intermediary between views and models, and is the foundation for all web requests made using Rails. How to Handle an ActionController::Routing Error When the ActionController::RoutingError error occurs, a log record is created as follows: ActionController::RoutingError (No route matches "... . . "): It’s best to explicitly catch and throw the ActionController::RoutingError with a custom message. This is because they may go unnoticed in the log files. To do so, add the following code in your config/routes. rb file: Rails. application. routes. draw do # all your other routes match '*unmatched', to: 'application#not_found_method', via: :all end Now you need to add this not_found_method in your ApplicationController. class ApplicationController < ActionController::Base protect_from_forgery with::exception def not_found_method render file: Rails. public_path. join('404. html'), status: :not_found, layout: false end end This will serve your 404 page every time a user-provided URL lacks a suitable route. Keep in mind though that any route or engine that is mounted after the application loads won’t... --- - [Introducing Git Blame Support for GitHub Integration](https://rollbar.com/blog/introducing-git-blame-support-for-github-integration/): At Rollbar, we care about reducing the time it takes developers to find and fix errors. This is why we’re... ### How to Handle PDOException in PHP > The PHP PDOException is a runtime exception that occurs when something goes wrong while using the PDO class or its related extensions. Learn how to handle it. - Published: 2022-10-31 - Modified: 2022-12-12 - URL: https://rollbar.com/blog/php-pdoexception/ - Categories: Code Tutorials, PHP - Tags: PHP The PHP PDOException is a runtime exception that occurs when something goes wrong while using the PDO (PHP Data Objects) class or its related extensions. For example, this exception can occur while handling database connections or queries. What Causes PDOException PHP Data Objects (PDO) are a collection of APIs that are used to access and work with databases. The PDOException is thrown anytime an issue occurs while using the PDO interface. Common situations where this exception can occur are: Attempting to connect to a database e. g. entering an incorrect password for the database connection. Issuing an SQL statement e. g. missing database table, invalid SQL statement. PDOException Example Here’s an example of a PHP PDOException thrown when facing issues connecting to a database using the PDO interface: In the above example, the PDO class is used to establish a connection to a database. Since the database connection parameters are incorrect, running the above code throws a PDOException: PHP Fatal error: Uncaught PDOException: SQLSTATE Connection refused in main. php:2 Stack trace: #0 main. php(2): PDO->__construct('mysql:host=loca... ', 'user', 'pass') #1 {main} thrown in main. php on line 2 How to Handle PDOException The PDOException can be caught and handled using a try-catch block. The try block should contain the lines of code that can throw the exception and the catch block should catch and handle the PDOException appropriately. The message associated with the exception can be retrieved using the Exception::getMessage method on the PDOException object. Using the above approach, the previous... --- - [Best Practices for Moving from a Monolith to Microservices](https://rollbar.com/blog/best-practices-for-moving-from-a-monolith-to-microservices/): In the first post of this series, we looked at the state of your organization, how to tell if Microservices... - [Transforming Engineering at Rollbar](https://rollbar.com/blog/transforming-engineering-at-rollbar/): It's been a busy year at Rollbar! While many of the new features we built got all the needed attention... - [How to Catch (and Fix) JavaScript TypeErrors](https://rollbar.com/blog/how-to-catch-and-fix-javascript-typeerrors/): It's Friday afternoon and you decide to check on your web logs one last time before you go out for... - [Error Handling with Angular 8 - Tips and Best Practices](https://rollbar.com/blog/error-handling-with-angular-8-tips-and-best-practices/): Handling errors properly is essential in building a robust application in Angular. Error handlers provide an opportunity to present friendly... - [Introducing the New Rollbar UX](https://rollbar.com/blog/introducing-the-new-rollbar-ux/): Migrating to microservices is hard enough. Monitoring errors and debugging shouldn’t be. When we first built Rollbar, microservice architectures and... - [Monolith to Microservices: Is Your Organization Ready?](https://rollbar.com/blog/monolith-to-microservices-is-your-organization-ready/): Transitioning from a Monolith to a Microservices architecture can take years to complete. The internet is full of stories of... - [Announcing the First Error Monitoring Solution for Salesforce Apex](https://rollbar.com/blog/announcing-the-first-error-monitoring-solution-for-salesforce-apex/): We're very exited to bring all the error monitoring and debugging capabilities of Rollbar to Salesforce Apex applications. According to... - [Turbocharge QA with Pre-Production Monitoring](https://rollbar.com/blog/turbocharge-qa-with-pre-production-monitoring/): Traditionally, Quality Assurance (QA) has been a very manual process. Our QA teams do an amazing job running through test... ### Free Trial - Published: 2025-03-04 - Modified: 2025-03-05 - URL: https://rollbar.com/free-trial/sentry-survey/ --- - [Rollbar CTO, Cory Virok, Shares His Expertise on Creating an Enterprise Solution for Today’s Modern Software Company](https://rollbar.com/blog/rollbar-cto-cory-virok-shares-his-expertise-on-creating-an-enterprise-solution-for-todays-modern-software-company/): We sat down with Rollbar CTO, Cory Virok, for a Q&A on how his leadership role and industry expertise helped... ### Rollbar vs SmartBear Insight Hub | A Superior SmartBear Insight Hub Alternative for Error Monitoring - Published: 2025-01-14 - Modified: 2025-01-24 - URL: https://rollbar.com/vs/insight-hub/ --- - [Announcing Crash Monitoring for macOS with Rollbar](https://rollbar.com/blog/announcing-crash-monitoring-for-macos-with-rollbar/): What’s better than an SDK that supports iOS? One that also supports macOS! With the latest version of rollbar-ios (v1.... ### Rollbar vs New Relic | A Superior New Relic Alternative for Error Tracking - Published: 2024-12-23 - Modified: 2024-12-23 - URL: https://rollbar.com/vs/newrelic/ --- - [Introduction to Error Handling in Angular 7 Using Rollbar](https://rollbar.com/blog/introduction-to-error-handling-in-angular-7-using-rollbar/): In this tutorial, you will be introduced to errors tracking in Angular 7 using the errorHandler class and Rollbar. This... ### Rollbar vs DataDog | A Superior DataDog Alternative for Error Tracking - Published: 2024-12-19 - Modified: 2024-12-23 - URL: https://rollbar.com/vs/datadog/ --- - [New Integration - Create Microsoft Azure DevOps Work Items directly from Rollbar](https://rollbar.com/blog/new-integration-create-microsoft-azure-devops-work-items-directly-from-rollbar/): Does your team use Azure DevOps for tracking work? You’re going to love our latest integration if that’s the case.... ### Low Risk Continuous Delivery Guide > Rollbar can help you discover and fix errors faster across your development pipeline by uncovering and resolving them in real-time, before users complain. - Published: 2024-12-19 - Modified: 2024-12-20 - URL: https://rollbar.com/low-risk-continuous-delivery-guide/ --- - [Exception Monitoring Across Environments](https://rollbar.com/blog/exception-monitoring-across-environments/): Tools like Rollbar have changed the way development teams are recording and managing their exceptions. What used to be a... ### Rollbar vs Instabug | A Superior Instabug Alternative for Error Tracking - Published: 2024-12-04 - Modified: 2025-01-24 - URL: https://rollbar.com/vs/instabug/ --- - [Upload Source Maps to Rollbar](https://rollbar.com/blog/upload-source-maps-to-rollbar/): From https://michalzalecki. com/upload-source-maps-to-rollbar/ Upload source maps to Rollbar In production, the most important advantage of using a build tool like... - [Continuous Delivery with Jenkins and Rollbar](https://rollbar.com/blog/continuous-delivery-with-jenkins-and-rollbar/): Continuous delivery (CD) helps reduce the cost, time and risk of delivering changes by allowing for fast incremental updates to... ### Customers > Read what our customers have said about our tool and understand first-hand why a growing number of software teams are adopting Rollbar. - Published: 2024-11-18 - Modified: 2024-11-18 - URL: https://rollbar.com/customers/ --- - [How We’re Improving Error Grouping](https://rollbar.com/blog/how-were-improving-error-grouping/): Imagine that you are developing an application and there's an error in the code. When you release it to production,... ### 500 - Published: 2024-11-07 - Modified: 2024-11-07 - URL: https://rollbar.com/500-error/ ::CLOUDFLARE_ERROR_500S_BOX::If you need immediate assistance or wish to report an issue, please contact ourSupport Team  --- - [Welcoming Letania Ferreira](https://rollbar.com/blog/welcoming-letania-ferreira/): Letania is another new member of our support team and started as a Customer Service Engineer in December 2018. She’s... ### Rollbar vs Highlight.io | A Superior Highlight.io Alternative for Error Tracking > Have you had enough of these issues with Highlight.io? Complex Features, Endless Technical Glitches, Poor Support and Responsiveness, Steep Learning Curve, Complex Pricing Structure. Time to switch to Rollbar for the best error monitoring solution for frontend, backend and mobile applications. - Published: 2024-10-14 - Modified: 2025-01-24 - URL: https://rollbar.com/vs/highlight/ --- - [Introducing Interactive Slack Notifications](https://rollbar.com/blog/introducing-interactive-slack-notifications/): Quickly responding to new, reactivated, and otherwise important exceptions is a critical part of adopting continuous delivery and other DevOps... - [Introducing the Rollbar Pipe for Bitbucket Pipelines](https://rollbar.com/blog/introducing-the-rollbar-pipe-for-bitbucket-pipelines/): Automating your deployment process is a critical step towards adopting continuous delivery. For teams that use Bitbucket for hosting their... - [Welcoming Samebug to Rollbar](https://rollbar.com/blog/welcoming-samebug-to-rollbar/): Today we're announcing that we've acquired Hungary-based Samebug. This is an important moment for Rollbar and represents a big step... - [4 Reasons Why You Need Error Monitoring](https://rollbar.com/blog/4-reasons-why-you-need-error-monitoring/): Errors are a fact of life in web development, and even the world's greatest brands are not without fault. Errors... - [Reduce noise in error monitoring with Grouping Suggestions](https://rollbar.com/blog/reduce-noise-in-error-monitoring-with-grouping-suggestions/): One perennial problem we face in monitoring is dealing with noise. We don't want to miss important signals, but sorting... - [Error Monitoring In Zend 3](https://rollbar.com/blog/error-monitoring-in-zend-3/): Zend Framework 3 is a free and open-source PHP framework. It uses a model-view-controller (MVC) pattern which makes its structure... - [Error Handling with Angular 6 - Tips and Best Practices](https://rollbar.com/blog/error-handling-with-angular-6-tips-and-best-practices/): Handling errors properly is essential in building a robust application in Angular. Error handlers provide an opportunity to present friendly... ### Zipy > Send notifications to chatrooms so everyone on your team knows when an error needs to be resolved instantly.Unlock advanced error insights in Rollbar with Zipy session URLs for contextual debugging and efficient issue resolution. - Published: 2024-03-07 - Modified: 2024-03-07 - URL: https://rollbar.com/integrations/zipy/ --- ### Public Roadmap - Published: 2024-03-07 - Modified: 2024-03-07 - URL: https://rollbar.com/product/roadmap/ --- - [What we've shipped in 2018](https://rollbar.com/blog/what-weve-shipped-in-2018/): With 2018 almost coming to a close, let's take a look at all the product improvements we've shipped this year... - [Monitoring errors in Xamarin apps](https://rollbar.com/blog/monitoring-errors-in-xamarin-apps/): Xamarin is based on Mono, the open source implementation of Microsoft's . NET Standard. It allows us to create apps... ### Rust Error Tracking > Install our Rust SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2024-02-16 - Modified: 2024-02-16 - URL: https://rollbar.com/platforms/rust-error-tracking/ --- - [Win-Win Deployment Strategies for Modern Apps](https://rollbar.com/blog/win-win-deployment-strategies-for-modern-apps/): These days, the biggest change to software development is the frequency of deployments. Product teams deploy releases to production earlier... ### Rollbar Offer for YC Startups > Prioritize development and let us do the heavy lifting. We'll provide all the info regarding which errors are affecting customers, what IPs are affected, and more. - Published: 2024-01-10 - Modified: 2024-01-10 - URL: https://rollbar.com/solutions/yc-startups/ --- ### Bird Eats Bug > Send notifications to chatrooms so everyone on your team knows when an error needs to be resolved instantly. - Published: 2023-11-21 - Modified: 2023-11-27 - URL: https://rollbar.com/integrations/bird-eats-bug/ --- - [How to Show Errors in WordPress](https://rollbar.com/blog/monitoring-errors-in-wordpress/): WordPress is an open source blogging and website creation tool written in PHP and MySQL. It is a highly flexible... ### Flask Error Tracking with Rollbar > Install our Flask SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2023-10-12 - Modified: 2023-10-13 - URL: https://rollbar.com/platforms/flask-error-tracking-2/ --- ### FastAPI Error Tracking with Rollbar > Install our FastAPI SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2023-10-12 - Modified: 2024-11-05 - URL: https://rollbar.com/platforms/fastapi-error-tracking/ --- ### Features - Published: 2023-06-26 - Modified: 2023-06-26 - URL: https://rollbar.com/features/ --- - [Stacktrace Enhancements - Code Context in each Traceback Frame](https://rollbar.com/blog/stacktrace-enhancements-code-context-in-each-traceback-frame/): Rollbar item stacktrace has a new UI and this change was done to support the new and advanced stacktrace. Users... ### Local Variables / Arguments > You need to know what triggered an error before you can fix it. See the exact line of code and the timeline of browser events leading up to an error with Rollbar. - Published: 2023-06-26 - Modified: 2023-06-26 - URL: https://rollbar.com/features/local-variables/ --- ### Product - Published: 2023-06-26 - Modified: 2023-06-26 - URL: https://rollbar.com/product/ --- - [How to Monitor Errors in Magento 2 the Easy Way](https://rollbar.com/blog/how-to-monitor-errors-in-magento-2-the-easy-way/): Magento is the largest open-source eCommerce platform in the world, used by more than 250,000 merchants. While Magento makes setting... ### Rollbar Thank you - Published: 2023-05-22 - Modified: 2025-01-08 - URL: https://rollbar.com/events/rollbar-thank-you/ --- - [Enhancements to the Rollbar Deploy API](https://rollbar.com/blog/enhancements-to-the-rollbar-deploy-api/): Rollbar introduced Versions a few months ago, providing developers a way to easily see whether their most recently deployed code... ### Rollbar Offer for G2 Customers > Prioritize development and let us do the heavy lifting. We'll provide all the info regarding which errors are affecting customers, what IPs are affected, and more. - Published: 2023-04-06 - Modified: 2023-04-07 - URL: https://rollbar.com/solutions/g2-offer/ --- - [Error Monitoring in Symfony](https://rollbar.com/blog/error-monitoring-in-symfony/): Symfony is a PHP model-view-controller framework used to develop web applications. The main reasons Symfony has acclaimed fame among the... ### Software Agency > Prioritize development and let us do the heavy lifting. We'll provide all the info regarding which errors are affecting customers, what IPs are affected, and more. - Published: 2023-03-21 - Modified: 2025-02-25 - URL: https://rollbar.com/solutions/software-agency/ --- - [Error Handling in React Native](https://rollbar.com/blog/error-monitoring-in-react-native/): Learn how to catch unhandled exceptions in React Native, perform tasks to provide the best experience for users, and handle these errors using our SDK. ### Live Webinar: Rollbar Project Configuration Best Practices - Published: 2023-02-07 - Modified: 2023-03-01 - URL: https://rollbar.com/events/project-best-practices/ --- - [Introducing Versions](https://rollbar.com/blog/introducing-versions/): We built Versions for customers who are adopting software development practices like Continuous Delivery. One important habit to cultivate when... ### Jira > Create Jira tickets directly from Rollbar Errors with automatic creation and ticket resolution built-in. - Published: 2022-12-05 - Modified: 2023-03-23 - URL: https://rollbar.com/integrations/jira/ --- - [Introducing All Items View](https://rollbar.com/blog/introducing-all-items-view/): Increasingly more software teams - ourselves and our customers included - are adopting practices like microservices and/or Continuous Delivery. What... ### Slack > Send notifications to chatrooms so everyone on your team knows when an error needs to be resolved instantly. - Published: 2022-12-05 - Modified: 2023-03-23 - URL: https://rollbar.com/integrations/slack/ --- ### Real-time, production quality data as a guide > Monitor errors in all projects in one view. Rollbar groups similar errors together for you and also provides the option to manually merge errors to fit your needs. - Published: 2022-10-11 - Modified: 2023-01-11 - URL: https://rollbar.com/solutions/improve/ --- - [Error Monitoring in iOS](https://rollbar.com/blog/error-monitoring-in-ios/): In mobile apps, it’s important to monitor errors so you can understand your user’s experience. Your team should know quickly... ### Technical Intro to Improve: Release > Introducing Improve: Release from Rollbar. - Published: 2022-10-10 - Modified: 2022-11-15 - URL: https://rollbar.com/vs/tech-intro-to-improve-release/ --- - [Error tracking with Vue.js](https://rollbar.com/blog/error-tracking-with-vue-js/): Vue (pronounced /vjuː/, like view) is a progressive framework for building user interfaces on the web. Vue can power sophisticated... ### Intro to Rollbar - Published: 2022-09-23 - Modified: 2023-02-08 - URL: https://rollbar.com/events/intro-to-rollbar/ --- ### Intro to Improve: Release from Rollbar > Introducing Improve: Release from Rollbar. - Published: 2022-09-15 - Modified: 2022-09-30 - URL: https://rollbar.com/vs/intro-improve-release/ --- - [Top 10 PHP errors from 1,000+ projects (and how to avoid them)](https://rollbar.com/blog/top-10-php-errors-from-1000-projects-and-how-to-avoid-them/): To give back to our community of developers, we looked at our database of thousands of projects and found the... ### Introducing Improve: Release from Rollbar > Introducing Improve: Release from Rollbar. - Published: 2022-09-08 - Modified: 2022-09-23 - URL: https://rollbar.com/vs/introducing-improve-release/ --- - [Error monitoring in Golang](https://rollbar.com/blog/error-monitoring-in-golang/): Rollbar is proud to announce its error monitoring SDK for the Go language (aka Golang). It’s an open source programming... ### Angular > Rollbar for Angular. Find and fix errors quickly. - Published: 2022-09-07 - Modified: 2022-09-07 - URL: https://rollbar.com/vs/angular/ --- - [Errors on the world’s top 100 websites and how to avoid them](https://rollbar.com/blog/errors-on-the-worlds-top-100-websites-and-how-to-avoid-them/): When you think of the top 100 sites in the world, you think of high-traffic domains and pages coded to... ### Office Hours > Visit our conference booth and learn more about Rollbar. Find and fix errors quickly. - Published: 2022-08-29 - Modified: 2023-09-01 - URL: https://rollbar.com/vs/office-hours/ --- - [Data, Privacy, and Compliance - How We Prepared for GDPR](https://rollbar.com/blog/data-privacy-and-compliance-how-we-prepared-for-gdpr/): Over the past couple of months it has been very difficult not to overhear conversations about GDPR and its implications... ### Conference > Visit our conference booth and learn more about Rollbar. Find and fix errors quickly. - Published: 2022-08-29 - Modified: 2022-08-31 - URL: https://rollbar.com/vs/conference/ --- - [Monitoring Errors in Android Apps](https://rollbar.com/blog/monitoring-errors-in-android-apps/): When developing mobile apps it’s important to monitor errors so that you can understand your user’s experience. You need deeper... ### Rollbar vs Airbrake | A Superior Airbrake Alternative for Error Tracking - Published: 2022-08-22 - Modified: 2025-01-24 - URL: https://rollbar.com/vs/airbrake/ --- - [Top 10 errors from 1000+ Ruby on Rails projects (and how to avoid them)](https://rollbar.com/blog/top-10-errors-from-1000-ruby-on-rails-projects-and-how-to-avoid-them/): To give back to our community of developers, we looked at our database of thousands of projects and found the... - [5 Surprising and Sneaky Ways Errors Impact Your Business](https://rollbar.com/blog/5-surprising-and-sneaky-ways-errors-impact-your-business/): Every app is imperfect and generates errors, but do you know how errors affect your users and business? When you... ### Rollbar vs Raygun | A Superior Raygun Alternative for Error Tracking - Published: 2022-08-22 - Modified: 2025-01-24 - URL: https://rollbar.com/vs/raygun/ --- - [New Relic vs Scout: Which APM is right for you?](https://rollbar.com/blog/new-relic-vs-scout/): This is a guest post by Derek Haynes from Scout, an APM that integrates with Rollbar. When New Relic launched... ### Rollbar vs Bugsnag | A Superior Bugsnag Alternative for Error Monitoring - Published: 2022-08-22 - Modified: 2025-01-24 - URL: https://rollbar.com/vs/bugsnag/ --- - [Error monitoring in ASP.NET MVC](https://rollbar.com/blog/error-monitoring-in-asp-net-mvc/): ASP. NET MVC is a modern web development framework that combines the features of MVC (Model-View-Controller) architecture for better separation... ### Track and Debug Errors on Any Platform > Instrument any application with Rollbar error monitoring. Install our SDKs in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks - Published: 2022-03-20 - Modified: 2024-03-25 - URL: https://rollbar.com/platforms/ --- - [Send Rollbar Error Alerts to Cisco Spark](https://rollbar.com/blog/send-rollbar-error-alerts-to-cisco-spark/): Cisco Spark is a enterprise collaboration platform from Cisco that includes messaging, video conferencing, desk phones, and digital whiteboards to... - [Announcing Our New .NET Error Monitoring SDK](https://rollbar.com/blog/announcing-our-new-net-error-monitoring-sdk/): Rollbar is happy to announce our official . NET error monitoring SDK. This new . NET SDK is more rreliable,... ### Salesforce Apex Tracking with Rollbar > Install our Apex SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-20 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/apex-error-tracking/ --- - [New Integration - Auto-create Shortcut stories with error data from Rollbar](https://rollbar.com/blog/new-integration-auto-create-shortcut-stories-with-error-data-from-rollbar/): At Rollbar, we use Shortcut to manage our software projects. One of the many ways we use it is for... - [Introducing the Account Dashboard](https://rollbar.com/blog/introducing-the-account-dashboard/): {: . highlightbox} Update: As of Aug 1st, 2018 we've made Account Dashboard available to all users, including those on... ### Go Error Tracking with Rollbar > Install our Go SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-20 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/go-error-tracking/ --- - [Debugging JavaScript with Source Maps](https://rollbar.com/blog/debugging-javascript-with-source-maps/): Minified JavaScript code generates source maps that can help trace and debug problems back to the exact line of source code. - [Top 10 JavaScript errors from 1000+ projects (and how to avoid them)](https://rollbar.com/blog/top-10-javascript-errors-from-1000-projects-and-how-to-avoid-them/): To give back to our community of developers, we looked at our database of thousands of projects and found the... - [Monitoring tools for serverless environments and AWS Lambda](https://rollbar.com/blog/monitoring-tools-for-serverless-environments-and-aws-lambda/): Serverless computing platforms like AWS Lambda represent a new computing paradigm. Over the past decade, we’ve been trying to abstract... ### .NET Error Tracking with Rollbar > Install our .NET SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-20 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/dotnet-error-tracking/ --- - [What We Shipped in 2017](https://rollbar.com/blog/what-we-shipped-in-2017/): At Rollbar, 2017 has been a year of exciting growth and development for the product and the team. We've grown... - [Spring MVC Exception Handling and Monitoring](https://rollbar.com/blog/spring-mvc-exception-handling-and-monitoring/): The Spring Famework is the most popular framework for Java according to hotframeworks. com. It provides a model view controller... ### Swift Error Tracking with Rollbar > Install our Swift SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-20 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/swift-error-tracking/ --- - [Announcing Our New Java Error Monitoring SDK](https://rollbar.com/blog/announcing-our-new-java-error-monitoring-sdk/): Rollbar is proud to announce the first official 1. 0 release of our Java notifier SDK for error monitoring. Java... - [Laravel error reporting now available](https://rollbar.com/blog/laravel-error-reporting-now-available/): We're happy to introduce our latest error reporting SDK, for Laravel, which tracks and reports errors that happen in your... ### Flutter Error Tracking with Rollbar > Install our Flutter SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-20 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/flutter-error-tracking/ --- - [Custom error handling for Angular](https://rollbar.com/blog/custom-error-handling-for-angular/): Angular 2+ and AngularJS (version 1) are popular open-source JavaScript MVC frameworks that let you build highly structured, testable and... ### MacOS Error Tracking with Rollbar > Install our macOS SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-20 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/macos-error-tracking/ --- - [Error Boundaries in React 16](https://rollbar.com/blog/error-boundaries-in-react-16/): React recently announced the release of version 16 with long standing feature requests including error boundaries, fragments, improved server-side rendering... - [Quickly edit and merge many error items at once](https://rollbar.com/blog/quickly-edit-and-merge-many-error-items-at-once/): Rollbar just added a new feature that allows you to quickly edit and merge hundreds or thousands of items at... ### iOS Error Tracking with Rollbar > Install our iOS SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-20 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/ios-error-tracking/ --- - [Introducing AWS Lambda Support for Node.js and Python](https://rollbar.com/blog/introducing-aws-lambda-support-for-node-js-and-python/): We’ve just updated our Rollbar. js and Python libraries, making it easy for you to monitor errors on AWS Lambda.... - [Introducing JavaScript Telemetry](https://rollbar.com/blog/introducing-javascript-telemetry/): We're excited to introduce JavaScript telemetry, which provides a timeline of events in the browser leading up to when an... ### Apple Error Tracking with Rollbar > Install our Apple SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-20 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/apple-error-tracking/ --- - [Purpose-Built Error Monitoring Alternative to New Relic](https://rollbar.com/blog/purpose-built-error-monitoring-alternative-to-new-relic/): One of the more frequently asked questions we hear is: "Doesn't my existing Application Performance Management (APM) solution, such as... - [Security matters: Rollbar now offers advanced encryption at rest](https://rollbar.com/blog/security-matters-rollbar-now-offers-advanced-encryption-at-rest/): Are your services secure? In today’s world, you can hardly go a week without reading in the news about security... ### Scala Error Tracking with Rollbar > Install our Scala SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-20 - Modified: 2024-11-05 - URL: https://rollbar.com/platforms/scala-error-tracking/ --- - [Merging versus Custom Fingerprinting](https://rollbar.com/blog/merging-versus-custom-fingerprinting/): With the recent announcement of support for manual merging, there are now multiple ways to combine occurrences of errors into... - [Technical details and challenges of building Error Merging](https://rollbar.com/blog/technical-details-and-challenges-of-building-error-merging/): Hopefully you've had the chance to try out our latest feature, error merging. We've heard a lot of positive feedback... ### Spring Error Tracking with Rollbar > Install our Spring SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-20 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/spring-error-tracking/ --- - [How Shortcut uses Rollbar to monitor JavaScript errors](https://rollbar.com/blog/how-shortcut-uses-rollbar-to-monitor-javascript-errors/): I'm eager to share an insightful interview our friends at Changelog recently did with Andrew Childs, CTO at Shortcut and... - [Turning Errors Into Action: How and Why Resolving Errors Matters](https://rollbar.com/blog/turning-errors-into-action-how-and-why-resolving-errors-matters/): Why resolving errors matters? After fixing a bug, who is responsible for making sure if it really resolves the customer's... - [Introducing Error Merging ⎌](https://rollbar.com/blog/introducing-error-merging-%e2%8e%8c/): We're excited to introduce merging (and un-merging) of errors! Merging errors lets you combine multiple errors into one 'group' for... - [New and improved JavaScript notifier SDK - rollbar.js 2.0](https://rollbar.com/blog/new-and-improved-javascript-notifier-sdk-rollbar-js-2-0/): We are excited to announce a major update to our JavaScript notifier SDK in version 2. 0. This new version... ### Android Error Tracking with Rollbar > Install our Android SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-20 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/android-error-tracking/ --- - [Instacart, leader in grocery delivery, relies on Rollbar for production error monitoring](https://rollbar.com/blog/instacart-leader-in-grocery-delivery-relies-on-rollbar-for-production-error-monitoring/):   Instacart, a leader in the on-demand marketplace, provides one-hour grocery delivery to users of their app and employs thousands... ### Java Error Tracking with Rollbar > Install our Java SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-20 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/java-error-tracking/ --- ### Django Error Tracking with Rollbar > Install our Django SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-20 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/django-error-tracking/ --- - [Improved PHP error reporting with our latest rollbar-php 1.0 updates](https://rollbar.com/blog/improved-php-error-reporting-with-our-latest-rollbar-php-1-0-updates/): We are excited to announce a significant upgrade to our PHP notifier SDK. This new version will make it much... - [Introducing hassle-free, compliant SaaS error monitoring](https://rollbar.com/blog/introducing-hassle-free-compliant-saas-error-monitoring/): I'm very excited to announce that today, Rollbar is launching the first and only compliant SaaS error monitoring solution on... - [Major JavaScript source map updates](https://rollbar.com/blog/major-javascript-source-map-updates/): We’re excited to introduce a major update to JavaScript source map support in Rollbar! This update introduces several features unique... ### Flask Error Tracking with Rollbar > Install our Flask SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-20 - Modified: 2022-06-16 - URL: https://rollbar.com/platforms/flask-error-tracking/ --- - [Error alert notifications + how to use them for better monitoring](https://rollbar.com/blog/error-alert-notifications-how-to-use-them-for-better-monitoring/): Rollbar offers an impressive array of error alerting and notification options for you to choose from, which is awesome! But... - [Onboarding remote employees, on the other side of the world](https://rollbar.com/blog/onboarding-remote-employees-on-the-other-side-of-the-world/): When I first started full-time here at Rollbar, I was living in Malaysia for the month, starting a year-long journey... ### Python Error Tracking with Rollbar > Install our Python SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-20 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/python-error-tracking/ --- - [Building the IoT Rollbar error alarm](https://rollbar.com/blog/building-the-iot-rollbar-error-alarm/): Our friends at Losant wanted to share how they built an actual 'error-alarm' using the Rollbar and Losant API's. Enjoy!... ### Sinatra Error Tracking with Rollbar > Install our Sinatra SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-19 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/sinatra-error-tracking/ --- - [Up your incident management alerts game with Rollbar and VictorOps](https://rollbar.com/blog/up-your-incident-management-alerts-game-with-rollbar-and-victorops/): Resolving on-call errors can be faster and easier than ever before when you integrate VictorOps and Rollbar. VictorOps is a... ### Rails Error Tracking with Rollbar > Install our Rails SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-19 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/rails-error-tracking/ --- ### Ruby Error Tracking with Rollbar > Install our Ruby SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-19 - Modified: 2024-11-05 - URL: https://rollbar.com/platforms/ruby-error-tracking/ --- ### Laravel Error Tracking with Rollbar > Install our Laravel SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-14 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/laravel-error-tracking/ --- ### Symfony Error Tracking with Rollbar > Install our Wordpress SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-14 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/symfony-error-tracking/ --- ### Wordpress Error Tracking with Rollbar > Install our Wordpress SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-14 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/wordpress-error-tracking/ --- ### PHP Error Tracking with Rollbar > Install our PHP SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-09 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/php-error-tracking/ --- ### Vue Error Tracking with Rollbar > Install our Vue.js SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-09 - Modified: 2024-11-05 - URL: https://rollbar.com/platforms/vue-error-tracking/ --- ### React Native Error Tracking with Rollbar > Install our React SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-09 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/react-native-error-tracking/ --- ### React Error Tracking with Rollbar > Install our React SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-08 - Modified: 2024-11-05 - URL: https://rollbar.com/platforms/react-error-tracking/ --- ### Express Error Tracking with Rollbar > Install our Express SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-08 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/express-error-tracking/ --- ### Ember Error Tracking with Rollbar > Install our Ember SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-08 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/ember-error-tracking/ --- ### Angular Error Tracking with Rollbar > Install our Angular SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-08 - Modified: 2024-11-05 - URL: https://rollbar.com/platforms/angular-error-tracking/ --- ### Node.js Error Tracking with Rollbar > Install our Node.js SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-08 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/node-error-tracking/ --- ### Javascript Error Tracking with Rollbar > Install our JavaScript SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-08 - Modified: 2025-03-17 - URL: https://rollbar.com/platforms/javascript-error-tracking/ --- ### How to Wrap and Unwrap Errors in Golang > In Golang, wrapping errors entails giving them more context and in order to see what context has been introduced they must be unwrapped. Learn more. - Published: 2022-10-31 - Modified: 2022-11-09 - URL: https://rollbar.com/blog/golang-wrap-and-unwrap-error/ - Categories: Code Tutorials, GoLang - Tags: golang In Golang, wrapping errors means adding more contextual information to the error which has been returned. For example, the additional information could be the type of error, the cause of the error, or the name of the function where the error is raised. Wrapping is very useful for debugging since you can precisely and quickly locate the source of the problem. Golang supports wrapping and unwrapping errors as part of the standard library errors by using the errors. Unwrap and fmt. Errorf functions with the %w verb. Syntax for wrapping an error in Golang First we need to create a new error using errors. New followed by fmt. Errorf with the %w verb to wrap the error. var criticalError = errors. New("Serious error") ... . . wrap = fmt. Errorf("... %w... ",criticalError,... ) The wrapped error can be unwrapped using the errors. Unwrap function. func Unwrap(err error) error Example 1: How to Wrap An Error In the below code, we have added a function validationswhich takes a number and runs validations based on some conditions by again calling the check function. Whenever an error is encountered, it will wrap the error using fmt. Errorf and the %w verb to show that “run error” has occurred. The new error is then returned. package main import ( "errors" "fmt" ) var ( errUhOh = errors. New("oh critical error! ! ") ) func check(num int) error { if num == 1 { return fmt. Errorf("it's odd") } else if num == 2 {... --- ### Development Updates - Published: 2022-02-04 - Modified: 2022-02-12 - URL: https://rollbar.com/development-updates/ --- ### ProTips > Watch our Rollbar Tip of the Day videos where we share with you tips and tricks on how to get the most out of Rollbar. - Published: 2021-12-06 - Modified: 2023-01-25 - URL: https://rollbar.com/protips/ --- ### Blog - Published: 2021-07-14 - Modified: 2023-10-12 - URL: https://rollbar.com/blog/ --- ### PHP's ErrorException Explained (with Example) > The PHP ErrorException class is meant to be thrown explicitly to catch and handle errors that would otherwise be ignored. Learn more about it here. - Published: 2022-10-26 - Modified: 2022-12-12 - URL: https://rollbar.com/blog/php-errorexception/ - Categories: Code Tutorials, PHP - Tags: PHP The PHP ErrorException class is meant to be thrown explicitly to catch and handle errors that would otherwise be ignored, such as Notices or Warnings. ErrorException Class Hierarchy The PHP Exception class implements the Throwable interface. The ErrorException class extends the Exception class. Throwable └── Exception └── ErrorException When to Use ErrorException The ErrorException class can be used when an exception needs to be thrown and handled like a regular object inherited from the Exception class. An example is when PHP issues a Warning. Depending on how the code is configured, warnings are ignored in PHP and execution continues as normal. In cases where a Warning indicates a failure that should redirect (or halt) script execution, the ErrorException class can be used. PHP ErrorException Example Here's an example of using the PHP ErrorException to produce an exception instead of a Warning: A file is attempted to be accessed using the file_get_contents function: When the above script is executed, a Warning is generated if the file could be found: Warning: file_get_contents(myfile. txt): failed to open stream: No such file or directory If throwing an exception is more desirable than a Warning for such a case, the ErrorException class can be used to do so. The above example can be modified to use an error handler function to throw an ErrorException: When the above script is executed, the errorHandler function throws an ErrorException instead of a Warning if the file is not found: Error: No such file or directory Here, the ErrorException... --- ### Rollbar Academy > Watch our training webinars to learn more about features, and check out our Rollbar Workflow webinars to get the most out of using Rollbar! - Published: 2021-06-16 - Modified: 2023-06-01 - URL: https://rollbar.com/rollbar-academy/ --- ### vs-placeholder - Published: 2021-06-02 - Modified: 2021-09-29 - URL: https://rollbar.com/vs/ --- ### Persona: QA/Testing - Published: 2021-05-27 - Modified: 2021-06-10 - URL: https://rollbar.com/solutions/persona-qa-testing/ --- ### Announcing Rollbar Live In-App Chat Support - Published: 2022-10-18 - Modified: 2022-10-20 - URL: https://rollbar.com/blog/announcing-rollbar-live-in-app-chat-support/ - Categories: company, product What’s better than great support? Live in-app support with a real person when you need it During the last two months we have been rolling out our live chat capability for all Rollbar users regardless of the plan you are on. That's right; you can now speak to a real person from our customer engineering team to help answer your product related question from within the Rollbar application. Our goal is to provide more support channels when you need it without having to wait for an answer. Once you have logged on to your Rollbar. com account you will see a chat bubble at the bottom right of your screen. When you need support click to start a conversation. How to start a conversion: Click Chat bubble. Enter your details: Ensures we can follow up with you. Have a great conversation with a real person. Whether you’re new to Rollbar or a seasoned user, I hope that you’ll find this new channel valuable when you need it most. --- ### How to Fix AttributeError in Python > The Python AttributeError is an exception that occurs when an attribute reference or assignment fails. Learn how to fix it. - Published: 2022-10-17 - Modified: 2022-10-17 - URL: https://rollbar.com/blog/python-attributeerror/ - Categories: Code Tutorials, Python - Tags: Python The Python AttributeError is an exception that occurs when an attribute reference or assignment fails. This can occur when an attempt is made to reference an attribute on a value that does not support the attribute. What Causes AttributeError The Python AttributeError is raised when an invalid attribute reference is made. This can happen if an attribute or function not associated with a data type is referenced on it. For example, if a method is called on an integer value, an AttributeError is raised. Python AttributeError Example Here’s an example of a Python AttributeError raised when trying call a method on an integer: i = 1 i. append(2) In the above example, a method is attempted to be called on an integer. Since integers in Python do not support any methods, running the above code raises a AttributeError: Traceback (most recent call last): File "test. py", line 2, in i. append(2) AttributeError: 'int' object has no attribute 'append' How to Fix AttributeError in Python To avoid the AttributeError in Python code, a check should be performed before referencing an attribute on an object to ensure that it exists. The Python help function can be used to find out all attributes and methods related to the object. To resolve the AttributeError, a try-except block can be used. The lines of code that can throw the AttributeError should be placed in the try block, and the except block can catch and handle the error. Using the above approach, the previous example can... --- ### The Ultimate Guide to Error Logging in Go > Logging can be a life-saver when it comes to fixing faults in your Go code. Learn how to log ✓ to the console ✓ to a file ✓ using a logging framework. - Published: 2022-10-02 - Modified: 2022-10-02 - URL: https://rollbar.com/blog/golang-error-logging-guide/ - Categories: Code Tutorials - Tags: golang Logging can be a life-saver when it comes to discovering bugs or faults in your Go (Golang) code. The three most popular ways to log errors in Golang are: Output the errors to the console Log the errors to a file Use a logging framework This article will walk you through how to log errors using each method, when and why you’d want to use each, along with examples. Basic Logging in Golang Golang comes with an in-built standard log package which provides basic error logging features. Though it doesn't provide any log levels like debug, warning, or error, it still has many features to get started with basic logging. Let’s look at an example to understand it better. package main import "log" func main { log. Println("We are logging in Golang! ") } When the above code is executed, the log package prints the output to the standard error (stderr) stream and automatically appends a timestamp to each log message. 2022/09/30 02:44:31 We are logging in Golang! Logging to a File in Golang Despite the fact that the log package's default output is to the stderr stream, it may be adjusted to write to any local file or to any other location that accepts the io. Writer interface. You must either create a new file or open an existing one and set it up as the log's output path in order to save log messages in a file. Example package main import ( "log" "os" ) func main {... --- ### Pricing > Find the plan that’s right for your team. Get started for free. Change anytime. - Published: 2021-05-20 - Modified: 2025-02-25 - URL: https://rollbar.com/pricing/ --- ### Careers - Published: 2021-05-17 - Modified: 2024-08-12 - URL: https://rollbar.com/careers/ --- ### How to Fix TypeError Exceptions in Python > The Python TypeError is an exception that occurs when the data type of an object in an operation is inappropriate. Learn how to fix it. - Published: 2022-10-01 - Modified: 2022-10-01 - URL: https://rollbar.com/blog/python-typeerror/ - Categories: Code Tutorials, Python - Tags: Python The Python TypeError is an exception that occurs when the data type of an object in an operation is inappropriate. This can happen when an operation is performed on an object of an incorrect type, or it is not supported for the object. For example, if a string is attempted to be multiplied with an integer, a TypeError is generated. What Causes TypeError Some of the most common causes for TypeError in Python are: Performing an operation between two incompatible data types e. g. adding a string and an integer. Passing an incorrect type to a built-in function e. g. passing a list to the built-in add function. Calling a non-callable object e. g. calling an integer. Incorrect list index type e. g. using a string as a list index value instead of an integer. Iterating on a non-iterative value e. g. trying to iterate on an integer. Python TypeError Example Here’s an example of a Python TypeError thrown when trying to add a string and an integer: my_integer = 1 my_string = "Hello World" my_result = my_integer + my_string In the above example, the string my_string is attempted to be added to an integer my_integer. Since addition cannot be performed between these two types, a TypeError is raised: File "test. py", line 3, in my_result = my_integer + my_string TypeError: unsupported operand type(s) for +: 'int' and 'str' How to Fix TypeError in Python To avoid type errors in Python, the type of an object should be checked before... --- ### Contact Us - Published: 2021-05-17 - Modified: 2024-12-02 - URL: https://rollbar.com/contact/  --- ### Free Trial - Published: 2021-05-17 - Modified: 2024-07-17 - URL: https://rollbar.com/free-trial/ --- ### How to Fix ImportError: Cannot Import Name in Python > The Python ImportError: cannot import name error occurs when an imported class is not accessible or is in a circular dependency. Learn how to fix it. - Published: 2022-09-24 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/python-importerror-cannot-import-name/ - Categories: Code Tutorials, Python - Tags: Python The Python ImportError: cannot import name error occurs when an imported class is not accessible or is in a circular dependency.   What Causes ImportError: Cannot Import Name This error generally occurs when a class cannot be imported due to one of the following reasons: The imported class is in a circular dependency. The imported class is unavailable or was not created. The imported class name is misspelled. The imported class from a module is misplaced. The imported class is unavailable in the Python library. Python ImportError: Cannot Import Name Example Here’s an example of a Python ImportError: cannot import name thrown due to a circular dependency. Two python modules test1. py and test2. py are created to achieve this: test1. py: from test2 import Class2 class Class1:     obj = Class2 test2. py: from test1 import Class1 class Class2:     obj = Class1 In the above example, the initialization of obj in test1 depends on test2, and obj in test2 depends on test1. This is a circular dependency since both files attempt to load each other. Therefore, running test1. py (or test2. py) causes an ImportError: cannot import name error: Traceback (most recent call last):   File "test1. py", line 1, in     from test2 import Class2   File "test2. py", line 1, in     from test1 import Class1   File "test1. py", line 1, in     from test2 import Class2 ImportError: cannot import name 'Class2' from partially initialized module 'test2' (most likely due to a circular import) (test2. py) How to Fix ImportError: Cannot Import Name... --- ### Free Demo: Error Monitoring and Debugging with Rollbar > Join us for an interactive demo and experience all the capabilities of our platform. We will show you how to monitor errors and debug them with Rollbar. - Published: 2021-05-17 - Modified: 2024-11-22 - URL: https://rollbar.com/request-a-demo/ --- ### How to Handle the MemoryError in Python > A MemoryError is an error encountered in Python when there is no memory available for allocation. Learn two ways to solve this. - Published: 2022-09-05 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/python-memoryerror/ - Categories: Code Tutorials, Python - Tags: Python A MemoryError means that the interpreter has run out of memory to allocate to your Python program. This may be due to an issue in the setup of the Python environment or it may be a concern with the code itself loading too much data at the same time.   An Example of MemoryError To have a look at this error in action, let’s start with a particularly greedy piece of code. In the code below, we start with an empty array and use nested arrays to add strings to it. In this case, we use three levels of nested arrays, each with a thousand iterations. This means at the end of the program, the array s has 1,000,000,000 copies of the string "More. " s = for i in range(1000): for j in range(1000): for k in range(1000): s. append("More") Output As you might expect, these million strings are a bit much for, let’s say, a laptop to handle. The following error is printed out: C:\code\Python\MemErr\venv\3K\Scripts\python. exe C:/code/python/MemErr/main. py Traceback (most recent call last): File "C:/code/python/MemErr/main. py", line 6, in s. append("More") MemoryError In this case, the traceback is relatively simple as there are no libraries involved in this short program. After the traceback showing the exact function call which caused the issue, we see the simple but direct MemoryError.   Two Ways to Handle A MemoryError in Python Appropriate Python Set-up This simplest but possibly least intuitive solution to a MemoryError actually has to do with a potential... --- ### How to Fix TypeError: Cannot Read Property Length of Undefined in JavaScript > The JavaScript TypeError: Cannot read property 'length' of undefined occurs when the length property is read on an undefined variable. - Published: 2022-09-01 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/javascript-typeerror-cannot-read-property-length-of-undefined-in-javascript/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript The TypeError: Cannot read property 'length' of undefined is one of the most common type errors in JavaScript. It occurs when the length property is read on an undefined variable. Error message: TypeError: Cannot read properties of undefined (reading 'length') Error Type: TypeError   What Causes TypeError: Cannot Read Property Length of Undefined Undefined means that a variable has been declared but has not been assigned a value. In JavaScript, properties and functions can only belong to objects. Since undefined is not an object type, calling a function or a property on such a variable causes the TypeError: Cannot read property 'length' of undefined.   TypeError: Cannot Read Property Length of Undefined Example Here’s an example of a JavaScript TypeError: Cannot read property 'length' of undefined thrown when the length property is attempted to be read on an undefined variable: function myFunc(a) { console. log(a. length); } var myVar; myFunc(myVar); Since the variable myVar is declared but not initialized, it is undefined. When it is passed to the myFunc function, the property length is attempted to be accessed. Since a is undefined at that point, running the code causes the following error: Uncaught TypeError: Cannot read properties of undefined (reading 'length')   How to Avoid TypeError: Cannot Read Property Length of Undefined When such an error is encountered, it should be ensured that the variable causing the error is assigned a value. The length property is supported by data types such as arrays and strings. Custom objects can also have... --- ### Integrations: Terraform - Published: 2021-05-13 - Modified: 2021-06-11 - URL: https://rollbar.com/integrations/terraform/ --- ### Integrations: GitHub - Published: 2021-05-13 - Modified: 2021-06-11 - URL: https://rollbar.com/integrations/github/ --- ### How to Fix TypeError: Null is Not an Object in JavaScript > The JavaScript error TypeError: null is not an object occurs when a property is accessed or a method is called on a null value within Safari. - Published: 2022-09-01 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/javascript-typeerror-null-is-not-an-object/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript The JavaScript error TypeError: null is not an object occurs when a property is accessed or a method is called on a null value. This specific error message is shown only on Safari. Other browsers display a different message for this error. Error message: TypeError: null is not an object (evaluating 'x. y') - Safari TypeError: Cannot read properties of null (reading 'x') - Chrome TypeError: x is null - Firefox Error Type: TypeError   What Causes TypeError: Null is Not an Object The TypeError: null is not an object occurs when a property is read (or set) or a method is called on a null value. An object was expected in code but was not provided. Since null is not an object in JavaScript, using a null value when an object is expected does not work. A proper object must be provided in such situations.   TypeError: Null is Not an Object Example Here’s an example of a TypeError: null is not an object thrown when trying to read a property of a null value: var a = null; console. log(a. b); In the above code, the variable a has a null value. When the property b is attempted to be read on it, a TypeError: null is not an object is thrown: TypeError: null is not an object (evaluating 'a. b')   How to Fix TypeError: Null is Not an Object When such an error occurs, it means that a null value was provided where an object was... --- ### Integrations: Atlassian - Published: 2021-05-13 - Modified: 2023-01-25 - URL: https://rollbar.com/integrations/atlassian/ --- ### Integrations: Google Cloud - Published: 2021-05-13 - Modified: 2021-06-11 - URL: https://rollbar.com/integrations/google-cloud/ --- ### Compliance GDPR - Published: 2021-05-13 - Modified: 2021-06-14 - URL: https://rollbar.com/compliance/gdpr/ --- ### How to Fix The Format Flags Conversion Mismatch Exception in Java > The FormatFlagsConversionMismatchException in Java is thrown when a conversion and a flag are incompatible in the source code. - Published: 2022-08-31 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-formatflagsconversionmismatchexception/ - Categories: Code Tutorials, Java - Tags: java A FormatFlagsConversionMismatchException is an unchecked runtime exception which is thrown when a conversion and a flag are incompatible in the source code. This is a very common exception encountered when the programmer tries to format the string. Unless otherwise specified, passing a null argument to any method or constructor in this class will cause a NullPointerException to be thrown.   Here is the syntax of a FormatFlagsConversionMismatchException: public class FormatFlagsConversionMismatchException: IllegalFormatException Here is the hierarchy of the FormatFlagsConversionMismatchException class: Object -> Throwable -> Exception -> RuntimeException -> IllegalArgumentException -> IllegalFormatException -> FormatFlagsConversionMismatchException   When does FormatFlagsConversionMismatchException occur in Java? The FormatFlagsConversionMismatchException class has a constructor that constructs an instance of this class with the specified flag ( f ) and conversion ( c ). So whenever there is an incompatibility between the flag and the conversion, this exception is thrown. public FormatFlagsConversionMismatchException(String f, char c) Example one: Formatting the String Using String. format A common scenario where many programmers encounter this exception is while formatting the string using the String. format method. public class Demo { public static void main(String args) { int n = 3; String str = "Tony stark"; int noOfSpaces = n * 2; noOfSpaces = str. length + noOfSpaces; String output = String. format("%1$#" + noOfSpaces + "s", str); System. out. println(output); } } The flag # can only be applied to %o, %x, %f, and %e format specifiers only, but here it is %s. And as the # flag and the given argument are not... --- ### Support > Get the help you need — find product docs, guides, learning resources or submit a support ticket for any urgent requests. - Published: 2021-05-12 - Modified: 2021-09-08 - URL: https://rollbar.com/developer/ blog videos webinar libarary for the 4 boxes ( --- ### solutions - Published: 2021-05-12 - Modified: 2021-06-11 - URL: https://rollbar.com/solutions/ --- ### How to Fix The Service Configuration Error in Java > The ServiceConfigurationError occurs in Java when there is a failure in loading or locating a service provider. - Published: 2022-08-31 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-serviceconfigurationerror/ - Categories: Code Tutorials, Java - Tags: java A ServiceConfigurationError is thrown in Java when a service provider cannot be loaded successfully. For instance, the format of the provider-configuration file appears to violate some aspect of the specification.   Syntax of ServiceConfigurationError: public class ServiceConfigurationError extends Error The ServiceConfigurationError class belongs to the Error class, which itself is an extension of the Throwable class, which is an extension of the Object class. Additionally, the Serializable interface is implemented. Object -> Throwable -> Error -> ServiceConfigurationError   When does the ServiceConfigurationError occur? The ServiceConfigurationError exception occurs when something goes wrong while loading service providers like Javax Servlet, Hibernate or Java Swing in your application. However, below are some other related scenarios where this error also can occur: On violation of the specification of the provider-configuration file. An IOException occurs when reading the provider-configuration file. When a concrete provider class named in provider-configuration cannot be found while working. When the concrete provider class is not a subclass of the service class. When the concrete provider class cannot be instantiated or some other kind of error occurs.   Example: Writing an Image to a New File Path import java. awt. image. BufferedImage; import java. io. *; import javax. imageio. ImageIO; public class Demo { public static void createImage2 { try { BufferedImage bImage = ImageIO. read(new File("/Users/demo/Documents/Images/download. jpg")); ByteArrayOutputStream bos = new ByteArrayOutputStream; ImageIO. write(bImage, "jpg", bos); byte data = bos. toByteArray; ByteArrayInputStream bis = new ByteArrayInputStream(data); BufferedImage bImage2 = ImageIO. read(bis); ImageIO. write(bImage2, "jpg", new File("output. jpg")); } catch (IOException... --- ### Use Cases > Rollbar can help you discover and fix errors faster across your development pipeline by uncovering and resolving them in real-time, before users complain. - Published: 2021-05-12 - Modified: 2024-12-19 - URL: https://rollbar.com/use-cases/ --- ### Error Monitoring - Published: 2021-05-12 - Modified: 2021-06-11 - URL: https://rollbar.com/error-monitoring/ --- ### How to Handle the Argument Null Exception in C# > The ArgumentNullException occurs in C# when null arguments are passed to a method in that expects non-null values. - Published: 2022-08-31 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/csharp-argumentnullexception/ - Categories: C#, Code Tutorials - Tags: csharp A System. ArgumentNullException occurs when an invalid argument is passed to a method in C#. In this case, it refers to the passing of a null object when the method expects a non-null object or a value. Similar to other exceptions raised as a result of arguments, System. ArgumentNullException is not generally raised by the . NET framework itself or the Common Language Runtime (CLR). Instead, it is thrown by an application or a library as an indication of improper null arguments.   Syntax of ArgumentNullException Similar to any class or method, exceptions also have their own syntax. Below is the syntax for ArgumentNullException: public class ArgumentNullException : ArgumentException The ArgumentNullException comes under the class of ArgumentException, which is inherited from the SystemException class. The SystemException class is in turn inherited from the Exception class, which is inherited from the Object class. Object -> Exception -> SystemException -> IOException -> FileNotFoundException   When does the ArgumentNullException occur in C#? Generally, there are two major circumstances when an ArgumentNullException is thrown, both of which reflect developer errors: An object returned from a method call is then passed as an argument to a second method, but the value of the original returned object is null. To prevent the error, check for a return value that is null and call the second method only if the return value is not null. An uninstantiated object is passed to a method. To prevent the error, instantiate the object.   Example One: Working with an Inbuilt... --- ### Knowledge Base - Published: 2021-05-12 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/ --- ### Resolving the Boto3 NoCredentialsError in Python > NoCredentialsError is raised while using Boto3 to access AWS in Python, when a credentials file is invalid or cannot be located. - Published: 2022-08-25 - Modified: 2022-10-02 - URL: https://rollbar.com/blog/python-boto3-nocredentialserror/ - Categories: Code Tutorials, Python - Tags: Python The NoCredentialsError is an error encountered when using the Boto3 library to interface with Amazon Web Services (AWS). Specifically, this error is encountered when your AWS credentials are missing, invalid, or cannot be located by your Python script. These credentials are stored by default at ~/. aws/credentials which contains your access key and secret access key for using AWS services, along with other configuration details such as your region code. Think of this file as your login and password for the service. Attempting a Connection A NoCredentialsError is encountered while creating a connection to AWS, which is the first step for any program using these web services. Let’s have a look at a piece of code which connects to a Boto3 resource and attempts to print out the resource's name. import boto3 s3 = boto3. resource('s3') for bucket in s3. buckets. all: print(bucket. name) It’s important to note that there is no issue with this code itself. The issue is that when Boto3 attempts to make a connection to this resource, it attempts to reference the credentials file to make sure you are authorized to access said resource. If the credentials are valid, the program proceeds without issue. However, if there is a problem, the developer will encounter an error. An Issue Is Found Let’s say the above script is run and there is an issue with the credentials, the console will print out the following error: Traceback (most recent call last): File "C:/code/Python/NoCred/main. py", line 5, in for bucket... --- ### About > Developers are held back from producing quality software because of unforeseen errors that appear during production. Our mission is to make life easier for them. - Published: 2021-05-11 - Modified: 2024-12-05 - URL: https://rollbar.com/about/     --- ### Learn How To Monitor and Resolve Errors in Your Language - Published: 2021-05-11 - Modified: 2022-04-13 - URL: https://rollbar.com/guides/ --- ### How to Fix the OperationalError in Python > The OperationalError in Python is encountered when using the Psycopg library to indicate that incorrect database information was provided - Published: 2022-08-16 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/python-operationalerror/ - Categories: Code Tutorials, Python - Tags: Python OperationalError is a class of error encountered while working with the psycopg library in Python. Operational errors are closely linked with the connect method within psycopg and typically occur when parameters passed to this method are incorrect or invalid. This may mean that a parameter, such as a database name, is spelled incorrectly, has changed, or that the database server itself is experiencing a problem.   Example 1: Database Connection Request Let's try connecting to a database to identify the sources of these errors. For this example, assume the database and user are named postgres, the host is localhost and the password is pa55w0rd. conn = psycopg2. connect("dbname='postgres' user='postgres' host='foreignhost' password='pa55w0rd'") cur = conn. cursor   An Output of Example 1 Notice here that the hostname is entered as foreignhost rather than the correct value of localhost. This results in the method being unable to connect to the database server and producing the following console output. C:\code\Python\PostreSQL\venv\3K\Scripts\py C:/code/python/PostreSQL/unique_violation Traceback (most recent call last): File "C:/code/python/PostreSQL/unique_violation", line 12, in conn = psycopg2. connect("dbname='postgres' user='postgres' host='foreignhost' password='pa55w0rd'") File "C:\code\Python\PostreSQL\venv\3K\lib\site-packages\psycopg2\__init__. py", line 122, in connect conn = _connect(dsn, connection_factory=connection_factory, **kwasync) psycopg2. OperationalError: could not translate host name "foreignhost" to address: Unknown host Notice the final line of this error message calls out the hostname directly saying, “Could not translate host name "foreignhost" to address: Unknown host. ” This shows us exactly which credential is causing the issue.   Example 2: Database Connection Request Alternatively, a correct hostname and an incorrect password is entered.... --- ### Compliance > Rollbar helps developers deliver better software faster by providing rich, real-time application error data, without compromising security and compliance. - Published: 2021-05-07 - Modified: 2025-02-19 - URL: https://rollbar.com/compliance/ --- ### How to Fix ReferenceError: Event is Not Defined in JavaScript > JavaScript's ReferenceError: Event is Not Defined occurs if the event parameter is not declared correctly when using an event handler. - Published: 2022-08-04 - Modified: 2022-12-12 - URL: https://rollbar.com/blog/javascript-referenceerror-event-is-not-defined/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript The Javascript ReferenceError occurs when referencing a variable that does not exist or has not yet been initialized in the current scope. The ReferenceError: event is not defined usually occurs while using an event handler if the event parameter is either not declared or declared incorrectly. For example, if on an onclick event, the handler does not declare the event parameter, this error is thrown.   What Causes Javascript ReferenceError: Event is Not Defined The Javascript ReferenceError is thrown when an attempt is made to reference a non-existing or out of scope variable. Not defining a variable or parameter before referencing it is one of the most common triggers for reference errors. When using event handlers in Javascript, the handler expects a parameter to be declared for the event object. This parameter is usually named e or event. If this parameter is not declared in the handler, or declared incorrectly, and is used later on in the handler, the ReferenceError: event is not defined is thrown. The Javascript Window object has a property called event, which is only supported by certain browsers. In case an event parameter is not declared explicitly in event handlers, this property might instead be used. Therefore, this error only occurs in browsers that do not support the Window. event property.   ReferenceError: Event is Not Defined Example Here’s an example of a Javascript ReferenceError: event is not defined thrown when the event parameter is not declared in an event handler: function myFunction { console. log(event);... --- ### Integrate Existing Tools and Workflows With Rollbar > Don't be afraid of disrupting your workflows with new software. Rollbar has native and custom integrations so you can continue using your existing tools. - Published: 2021-05-06 - Modified: 2025-04-22 - URL: https://rollbar.com/integrations/ "we --- ### Automate > Most software development life cycles consist of finding errors, let alone fixing them. Spend more time developing new features and let Rollbar find errors for you. - Published: 2021-05-06 - Modified: 2022-10-15 - URL: https://rollbar.com/automate/ --- ### How to Handle the Psycopg2 UniqueViolation Error in Python > Thrown by the psycopg2 library when a user attempts to insert a duplicate key value in a SQL or SQL-like library. - Published: 2022-08-04 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/python-psycopg2-errors-uniqueviolation/ - Categories: Code Tutorials, Python - Tags: Python The psycopg2. errors. UniqueViolation is an error thrown by the when a user attempts to insert a duplicate key value. In an SQL or SQL-like database a key value is defined when a table is created. This key value is then used to reference specific rows of the table. In order to make calls to these rows unambiguous, this key value must be unique for every row. Any attempt to insert a new row which has a value in the key field that already exists in the table cannot be completed. This will result in a UniqueViolation error.   An Example of psycopg2. errors. UniqueViolation In the below example, we are attempting to create a new table and populate it with data. However, our code will cause a UniqueViolation error to be thrown. import psycopg2 def create_tables(cur): cur. execute("create table student2(name char(30), gender char(30), birthday char(30), primary key(name));") def fill_tables(cur): cur. execute("insert into student2 (name, gender, birthday) values ('Tom', 'male', '11-21-2000');") cur. execute("insert into student2 (name, gender, birthday) values ('Tom', 'male', '03-31-2001');") try: conn = psycopg2. connect("dbname='postgres' user='postgres' host='localhost' password='pa55w0rd'") cur = conn. cursor except: print("I am unable to connect to the database") if __name__ == '__main__': create_tables(cur) fill_tables(cur) In the above example, a new table is created using the create_tables function. This table stores the name, gender, and birthday for each entry. Notice that the name is being used as the primary key, which means this value cannot be duplicated. Any other values can be duplicated as needed. For... --- ### How to Handle the FileNotFoundException in C# > The FileNotFoundException occurs in C# when the system is unable to locate a file when the program is executed. Learn how to handle it here. - Published: 2022-07-25 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/csharp-filenotfoundexception/ - Categories: C#, Code Tutorials - Tags: csharp One of the most commonly occurring errors in C#, FileNotFoundException is raised when the developer tries to access a file in the program that either doesn't exist or has been deleted. The following are some of the reasons the system is unable to locate the file: There might be a mismatch in the file name. For instance, instead of "demo. txt", the developer has written "Demo. txt". The file location may have changed. The file might have been deleted. The location or path the developer has passed might be wrong.   Syntax of FileNotFoundException Similar to any class or a method, exceptions also have their own syntax. Below is the syntax for FileNotFoundException: public class FileNotFoundException :System. IO. IOException The FileNotFoundException comes under the class of IOExceptions, which is inherited from the SystemException. SystemException, which is inherited from the Exception class, which is in turn inherited from the Object class. Object -> Exception -> SystemException -> IOException -> FileNotFoundException   An Example of FileNotFoundException In the below code, System. IO is imported, which is necessary for doing input and output operations on a file. Then within the main method, a try-catch block is placed to catch the exceptions, and within the try block we have our StreamReader class object. The StreamReader class is used to read text files. An object of StreamReader, the path of file "demo. txt" is passed. This file doesn't exist in its constructor. Then the ReadToEnd method is used to read the file till the end... --- ### How to Fix the FileNotFoundException in Java.io > The FileNotFoundException is a checked exception in Java that occurs when an attempt to open a file denoted by a specified pathname fails. - Published: 2022-07-18 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-filenotfoundexception/ - Categories: Code Tutorials, Java - Tags: java The java. io. FileNotFoundException is a checked exception in Java that occurs when an attempt to open a file denoted by a specified pathname fails. This exception is thrown by the FileInputStream, FileOutputStream, and RandomAccessFile constructors when a file with the specified pathname either does not exist or is inaccessible. Since FileNotFoundException is a checked exception, it must be explicitly handled in methods which can throw this exception - either by using a try-catch block or by throwing it using the throws clause.   What Causes FileNotFoundException There are two main scenarios when the FileNotFoundException occurs: If a file with the specified pathname does not exist. If a file with the specified pathname is inaccessible, for example, if the file is read-only and is attempted to be opened for writing.   FileNotFoundException Example Here's an example of a FileNotFoundException thrown when trying to access a file that does not exist in the system: public class FileNotFoundExceptionExample { public static void main(String args) { BufferedReader br = null; try { br = new BufferedReader(new FileReader("myfile. txt")); String data = null; while ((data = br. readLine) ! = null) { System. out. println(data); } } catch (IOException ioe) { ioe. printStackTrace; } finally { try { if (br ! = null) { br. close; } } catch (IOException ioe) { ioe. printStackTrace; } } } } In the above example, a file with the name myfile. txt is attempted to be accessed. However, since no such file exists in the system, a... --- ### Resolve Errors The Right Way > You need to know what triggered an error before you can fix it. See the exact line of code and the timeline of browser events leading up to an error with Rollbar. - Published: 2021-05-06 - Modified: 2022-10-15 - URL: https://rollbar.com/resolve/ --- ### Prioritize and Fix Errors Based on Severity > See what errors are affecting customers, when and how often they’re occurring, what browsers and IPs they’re affecting, and assign errors to colleagues instantly. - Published: 2021-05-06 - Modified: 2023-04-24 - URL: https://rollbar.com/prioritize/ --- ### How to Fix the No Such Element Exception in Java > The NoSuchElementException in Java can be thrown by various accessor methods to indicate that the element being requested does not exist. - Published: 2022-07-06 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-nosuchelementexception/ - Categories: Code Tutorials, Java - Tags: java The NoSuchElementException is an unchecked exception in Java that can be thrown by various accessor methods to indicate that the element being requested does not exist. Since the NoSuchElementException is thrown at runtime, it does not need to be declared in the throws clause of a method or constructor.   What Causes NoSuchElementException The NoSuchElementException can be thrown by various classes or interfaces in Java such as Iterator, Enumerator, Scanner or StringTokenizer. If an element is requested using the accessor methods of these classes or interfaces, and the underlying data structure does not contain the element, the NoSuchElementException is thrown. This can occur if the data structure is empty or if its next element is requested after reaching the end of the structure.   NoSuchElementException Example Here is an example of a NoSuchElementException thrown when trying to access an element of an empty ArrayList using an accessor method of the Iterator interface: public class NoSuchElementExceptionExample { public static void main(String args) { List list = new ArrayList; Iterator it = list. iterator; System. out. println(it. next); } } In the above example, an element of the ArrayList list is requested using the Iterator. next accessor method. However, since list is empty, the element requested does not exist and the operation throws a NoSuchElementException: Exception in thread "main" java. util. NoSuchElementException at java. base/java. util. ArrayList$Itr. next(ArrayList. java:970) at NoSuchElementExceptionExample. main(NoSuchElementExceptionExample. java:9)   How to Fix NoSuchElementException To fix the NoSuchElementException, it should be ensured that the underlying object contains more... --- ### Discover New and Reactivated Errors in Real Time > Monitor errors in all projects in one view. Rollbar groups similar errors together for you and also provides the option to manually merge errors to fit your needs. - Published: 2021-05-06 - Modified: 2025-02-13 - URL: https://rollbar.com/discover/ --- ### Move Faster with Rollbar Improve - Published: 2022-06-30 - Modified: 2022-12-14 - URL: https://rollbar.com/blog/rollbar-improve-alpha/ - Categories: product - Tags: improve Building software is complex and, at Rollbar, we believe it’s better to move quickly and manage risk intelligently rather than try to build perfect code. For the past decade, Rollbar has provided peace of mind to hundreds of thousands of developers by monitoring production environments for errors. The tool has been leveraged to find and fix bugs in a fraction of the time and is trusted by the individual developers to at-scale enterprises. We realized that we can leverage our unique understanding of quality in production to provide teams actionable insights into their planning, development, release, triage & bug fixing processes. Over the coming months we'll be sharing a new product that will help Rollbar and its customers transcend their competitors. The product we've been purposefully designing in collaboration with several of our customers is called Improve. With Improve, we will help teams and organizations prioritize where they focus their limited time better. We'll help teams understand ownership, expertise, and manage risk within their process with every pull request. Moreover, Improve will coach on how software teams can move their metrics in the right direction. In the end, we're going to help our customers learn from their failures. We're excited to share that we're opening up a limited Alpha (𝝰) for Improve which gives a nibble of what's to come. Rollbar: Improve is now available on selected plans. View the plans on our pricing page. Learn more in our docs. --- ### Rollbar vs Sentry | A Superior Sentry Alternative for Error Tracking - Published: 2021-05-06 - Modified: 2025-01-24 - URL: https://rollbar.com/vs/sentry/ --- ### How to Fix the Missing Resource Exception in Java > The MissingResourceException occurs when a resource required by a Java program is not found within the specified filepath. - Published: 2022-06-30 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-missingresourceexception/ - Categories: Code Tutorials, Java - Tags: java The MissingResourceException is an unchecked exception in Java that occurs when a resource is missing. Since the MissingResourceException is thrown at runtime, it does not need to be declared in the throws clause of a method or constructor.   What Causes MissingResourceException The MissingResourceException occurs when a resource required by a Java program is not found. Common causes for this include the following: If a resource file with the specified name does not exist or could not be found. Attempting to retrieve a value associated with a key in a resource file when no value was defined in the file with the specified key. Attempting to retrieve the country or language of a Locale if no three-letter abbreviation could be found for the country or language of that Locale.   MissingResourceException Example Here is an example of an MissingResourceException thrown when a resource file could not be found: public class MissingResourceExceptionExample { public static void main(String args) { ResourceBundle myResources = ResourceBundle. getBundle("resources"); } } In the above example, a resource file with the name resources. properties is attempted to be retrieved. Since no file with this name exists, running the above code throws the MissingResourceException: Exception in thread "main" java. util. MissingResourceException: Can't find bundle for base name resources, locale en_GB at java. base/java. util. ResourceBundle. throwMissingResourceException(ResourceBundle. java:2055) at java. base/java. util. ResourceBundle. getBundleImpl(ResourceBundle. java:1689) at java. base/java. util. ResourceBundle. getBundleImpl(ResourceBundle. java:1593) at java. base/java. util. ResourceBundle. getBundleImpl(ResourceBundle. java:1556) at java. base/java. util. ResourceBundle. getBundle(ResourceBundle. java:857) at MissingResourceExceptionExample. main(MissingResourceExceptionExample.... --- ### Rollbar vs New Relic - Published: 2021-05-05 - Modified: 2021-07-30 - URL: https://rollbar.com/vs/new-relic/ --- ### Resources > Welcome to our Rollbar Library! We hope you find something interesting to read, watch and share. - Published: 2021-05-05 - Modified: 2025-04-22 - URL: https://rollbar.com/resources/ blog videos webinar libarary for the 4 boxes ( --- ### How to Fix the Unknown Format Conversion Exception in Java > The UnknownFormatConversionException in Java is thrown when an unknown conversion occurs while formatting data. - Published: 2022-06-27 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-unknownformatconversionexception/ - Categories: Code Tutorials, Java - Tags: java The UnknownFormatConversionException is an unchecked exception in Java that occurs when an unknown conversion is given. Since the UnknownFormatConversionException is thrown at runtime, it does not need to be declared in the throws clause of a method or constructor.   What Causes UnknownFormatConversionException The UnknownFormatConversionException is thrown when an unknown conversion occurs while formatting data. This can happen when using a format specifier that has an unknown parameter value. For example, using the value %i as a format specifier will throw an UnknownFormatConversionException, since this is an unknown parameter value.   UnknownFormatConversionException Example Here is an example of an UnknownFormatConversionException thrown when using a format specifier that has an unknown parameter value: public class UnknownFormatConversionExceptionExample { public static void main(String args) { String str = "Hello World"; System. out. printf("%w", str); } } Since %w is an unknown value for a format specifier, using it throws an UnknownFormatConversionException: Exception in thread "main" java. util. UnknownFormatConversionException: Conversion = 'w' at java. base/java. util. Formatter$FormatSpecifier. conversion(Formatter. java:2839) at java. base/java. util. Formatter$FormatSpecifier. (Formatter. java:2865) at java. base/java. util. Formatter. parse(Formatter. java:2713) at java. base/java. util. Formatter. format(Formatter. java:2655) at java. base/java. io. PrintStream. format(PrintStream. java:1209) at java. base/java. io. PrintStream. printf(PrintStream. java:1105) at UnknownFormatConversionExceptionExample. main(UnknownFormatConversionExceptionExample. java:4)   How to Fix UnknownFormatConversionException To avoid the UnknownFormatConversionException, it should be ensured that format specifiers used in code have a known value. In the above example, the exception can be resolved by replacing %w with %s which is the correct format specifier for string values.... --- ### Resolve Support Tickets Faster and Improve Customer Satisfaction > Get all the contextual and historical information you need to find the root cause of every customer issue. HelpScout and Zendesk integrations supported. - Published: 2021-05-05 - Modified: 2023-03-24 - URL: https://rollbar.com/solutions/customer-support/ --- ### How to Fix the Missing Format Argument Exception in Java? > Java's MissingFormatArgumentException occurs if a format specifier does not have an argument/argument index points to a nonexistant argument. - Published: 2022-06-17 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-missingformatargument/ - Categories: Code Tutorials, Java - Tags: java The MissingFormatArgumentException is an unchecked exception in Java that occurs when a format specifier does not have a corresponding argument or if an argument index points to an argument that does not exist. Since the MissingFormatArgumentException is thrown at runtime, it does not need to be declared in the throws clause of a method or constructor.   What Causes MissingFormatArgumentException The MissingFormatArgumentException is thrown when using a format specifier that does not have a corresponding argument or if an argument index refers to an argument that does not exist. For example, the %d format specifier requires an integer to be passed to it, and if no argument is passed, a MissingFormatArgumentException is thrown.   MissingFormatArgumentException Example Here is an example of an MissingFormatArgumentException thrown when using a format specifier that does not have a corresponding argument: public class MissingFormatArgumentExceptionExample { public static void main(String args) { String str = "Hello World"; System. out. printf("%s" + str); } } Since the %s format specifier expects a corresponding string argument but no such argument exists, running the above code throws the MissingFormatArgumentException: Exception in thread "main" java. util. MissingFormatArgumentException: Format specifier '%s' at java. base/java. util. Formatter. format(Formatter. java:2672) at java. base/java. io. PrintStream. format(PrintStream. java:1209) at java. base/java. io. PrintStream. printf(PrintStream. java:1105) at MissingFormatArgumentExceptionExample. main(MissingFormatArgumentExceptionExample. java:4)   How to Fix MissingFormatArgumentException To avoid the MissingFormatArgumentException, it should be ensured that format specifiers used in code should have corresponding arguments and that the arguments exist at the correct argument index. In the... --- ### How to Fix the Input Mismatch Exception in Java? > Thrown by a Scanner to indicate that a retrieved token does not match the pattern for the expected type, or that the token is out of range. - Published: 2022-06-09 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-inputmismatchexception/ - Categories: Code Tutorials, Java - Tags: java p>The InputMismatchException is a runtime exception in Java that is thrown by a Scanner object to indicate that a retrieved token does not match the pattern for the expected type, or that the token is out of range for the expected type. Since InputMismatchException is an unchecked exception, it does not need to be declared in the throws clause of a method or constructor.   What Causes InputMismatchException The InputMismatchException generally occurs when working with Java programs that prompt users for input using the Scanner class. The exception can occur when the input is invalid for the expected type. The input either does not match the pattern for the expected type, or is out of range. For example, if a program expects an Integer value for an input but the user enters a String value instead, an InputMismatchException is thrown.   InputMismatchException Example Here is an example of an InputMismatchException thrown when a String is entered as input to a Scanner that expects an integer: import java. util. Scanner; public class InputMismatchExceptionExample { public static void main(String args) { Scanner scanner = new Scanner(System. in); System. out. println("Enter an integer: "); int integer = scanner. nextInt; scanner. close; System. out. println("You entered: " + integer); } } In the above code, the user is prompted for an integer as input. The Scanner. nextInt method is used to retrieve the value, which expects an integer as input. If the user enters a String value instead of an integer, an InputMismatchException is... --- ### Java Guide: What is Heap Space & Dynamic Memory Allocation? > The heap space in Java is used for the dynamic memory allocation of Java objects and classes at runtime, i.e on the creation of a new object. - Published: 2022-06-09 - Modified: 2022-06-09 - URL: https://rollbar.com/blog/java-heap-space/ - Categories: topics - Tags: java To run Java applications optimally, the JVM divides memory into stack and heap memory. Whenever new variables and objects are declared, new methods are called or other similar operations are performed, the JVM designates memory to these operations from either the Stack Memory or Heap Space. Heap space is used for the dynamic memory allocation of Java objects and classes at runtime. New objects are always created in the heap space, and references to these objects are stored in the stack memory.   Java Heap Space and Generations The heap space is created by the JVM when it starts. The heap is used as long as the application is running. It can be broken down into smaller parts called generations, which are: Young Generation - All new objects are allocated and aged here. A minor garbage collection occurs when this fills up. Old or Tenured Generation - Long surviving objects are stored here. When objects are stored in the Young Generation, a threshold for the object's age is set. When this threshold is reached, the object is moved to the Old Generation. Garbage collection is usually performed in the Old Generation when it's full. This is called Major GC and it usually takes longer. Permanent Generation (replaced by Metaspace since Java 8) - Consists of JVM metadata for runtime classes and application methods.   Java Heap Space Features Some features of the heap space are: It is accessed via complex management techniques that include the Young, Old and Permanent Generations.... --- ### How to Handle the Headless Exception in Java > This exception is thrown when code that depends on a keyboard, display or mouse is called in an environment that does not support any of these - Published: 2022-06-09 - Modified: 2022-06-09 - URL: https://rollbar.com/blog/java-headlessexception/ - Categories: topics - Tags: java The java. awt. HeadlessException is a runtime exception in Java that occurs when code that is dependent on a keyboard, display or mouse is called in an environment that does not support a keyboard, display or mouse. Since HeadlessException is an unchecked exception, it does not need to be declared in the throws clause of a method or constructor.   What Causes HeadlessException The HeadlessException is thrown when Java code that depends on a display device, keyboard, or mouse is called in an environment that does not support any of these. This typically occurs in the Java headless mode, which is a system configuration in which the display device, keyboard, or mouse is lacking. Certain Java AWT components require peripheral devices and will not work in the headless mode. As a rule of thumb, top-level AWT components such as Frame and Button always need an interactive environment. If these components are used in a non-interactive (headless) environment, a HeadlessException is thrown.   HeadlessException Example Here’s an example of a HeadlessException thrown when using a JFrame object in the Java headless mode: import javax. swing. JFrame; public class HeadlessExceptionExample { public static void main(String args) { JFrame frame = new JFrame("test"); frame. setVisible(true); } } When the above code is executed in the Java headless mode using the following command line argument: -Djava. awt. headless=true The HeadlessException is thrown: Exception in thread "main" java. awt. HeadlessException at java. desktop/java. awt. GraphicsEnvironment. checkHeadless(GraphicsEnvironment. java:165) at java. desktop/java. awt. Window. (Window. java:540) at... --- ### Java: List of Checked & Unchecked Exceptions > List of checked & unchecked Java exceptions with links to their corresponding guide. 1.InvocationTargetException 2.NoSuchMethodException.... - Published: 2022-06-08 - Modified: 2024-05-07 - URL: https://rollbar.com/blog/java-list-of-all-checked-unchecked-exceptions/ - Categories: topics - Tags: java Like most modern programming languages, Java includes the concept of exceptions to handle both errors and "exceptional events. " When an exception occurs in your code, it disrupts the normal instruction logic and abnormally terminates the process. However, with a little foresight and code, you can often handle these exceptions gracefully, allowing your code to continue running and providing insight for tracking down the root cause of the unexpected result. Below we have compiled a list of Checked and UncheckedJava exceptions you would likely encounter, with links to their corresponding guide on how best to implement them.   Exceptions under the parent class java. lang. Throwable Checked exceptions are denoted by the ✓ mark Exception CloneNotSupportedException ✓ InterruptedException ✓ ReflectiveOperationException ClassNotFoundException ✓ IllegalAccessException ✓ InstantiationException ✓ NoSuchFieldException ✓ NoSuchMethodException ✓ RuntimeException ArithmeticException ArrayStoreException ClassCastException EnumConstantNotPresentException IllegalArgumentException llegalThreadStateException NumberFormatException IllegalCallerException IllegalMonitorStateException IllegalStateException IndexOutOfBoundsException ArrayIndexOutOfBoundsException StringIndexOutOfBoundsException LayerInstantiationException NegativeArraySizeException NullPointerException SecurityException TypeNotPresentException UnsupportedOperationException   Track, Analyze and Manage Errors With Rollbar Managing errors and exceptions in your code is challenging. It can make deploying production code an unnerving experience. Being able to track, analyse, and manage errors in real-time can help you proceed with more confidence. Rollbar automates error monitoring and triaging, making fixing Java errors easier than ever. Sign Up Today! --- ### What is a Java Stack Trace? How to Read & Analyze Traces > Displayed when an error/exception occurs, stack traces in Java can be used to debug or troubleshoot issues encountered in code. - Published: 2022-05-30 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-stack-trace/ - Categories: Code Tutorials, Java - Tags: java A Java stack trace is displayed when an error or exception occurs. The stack trace, also called a backtrace, consists of a collection of stack records, which store an application's movement during its execution. The stack trace includes information about program subroutines and can be used to debug or troubleshoot and is often used to create log files. These exceptions could be custom (defined by the user) or built-in. Examples include RuntimeException,NullPointerException, andArrayIndexOutofBoundsException. Now that you know what a stack trace is, let’s take a look at some examples, how to analyze stack traces, and how you can avoid a stack trace altogether with error handling.   Examples of Java Stack Traces Example 1 - Temperature Conversion from Celsius to Fahrenheit Let's look at an example of converting temperatures from Celsius to Fahrenheit. Only an integer or float input is valid here. But if we try to provide another data type, such as a string, the compiler will throw an exception and print the stack trace. import java. util. Scanner; public class hello{ public static void main(String args) { Scanner scanner = new Scanner(System. in); System. out. print("Enter value in Celsius to convert in fahrenheit:"); double Celsius = scanner. nextFloat; double fahrenheit = (Celsius * 1. 8)+32; System. out. printf("%. 1f degrees Celsuis is %. 1f degrees in Fahrenheit ",Celsius,fahrenheit); } } When we run the above code and enter some invalid value, let’s say the string "hero," we get the following output: Enter value in Celsius to convert in... --- ### How to Resolve an Uncaught Reference Error in Javascript > The ReferenceError occurs when referencing a variable that does not exist or has not been initialized in the current scope. Learn how to solve it. - Published: 2022-05-24 - Modified: 2022-11-28 - URL: https://rollbar.com/blog/javascript-referenceerror/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript The Javascript ReferenceError occurs when referencing a variable that does not exist or has not yet been initialized in the current scope. Reference errors in Javascript are of a few different types, with variations of each, that may get triggered in code. Some of these are discussed below.   What Causes Javascript ReferenceError The Javascript ReferenceError is thrown when an attempt is made to reference a non-existing or out of scope variable. There are a few types of reference errors in Javascript with different variations of each. Some of these are: Undefined variables - Not defining a variable before referencing it is one of the most common triggers for reference errors in Javascript. Out of scope variables - Variables defined inside a function's scope cannot be accessed outside of it. If an attempt is made to reference an out of scope variable, a ReferenceError is thrown. Strict mode - Using strict mode in Javascript can throw a ReferenceError if a variable is not defined using the var, let or const keywords. Here’s an example of such a declaration: foo = true; Referencing the variable foo in code would result in a ReferenceError being thrown if using strict mode. The error would not occur if not using strict mode. Variable redeclarations - Redeclaring variables using the wrong keywords can also throw a ReferenceError. For example, initially declaring a variable using let, and subsequently redeclaring using let again throws a ReferenceError.   ReferenceError Example Here’s an example of a Javascript ReferenceError thrown... --- ### PHP Nested Try-Catch > In PHP, Try-catch blocks can be nested up to any desired levels and are handled in reverse order of appearance. Learn more now! - Published: 2022-05-24 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/php-nested-try-catch/ - Categories: Code Tutorials, PHP - Tags: PHP Try-catch blocks in PHP can be nested up to any desired levels and are handled in reverse order of appearance i. e. innermost exceptions are handled first. Nested blocks can be useful in case a block of code causes an exception, which can be handled within that block and program execution can continue in the outer block. They can also be useful in case the handling of an exception causes another exception. Here is an example of a nested try-catch block: try{ try{ if(file_exists("myfile. json")){ //upload file } else { throw new Exception( 'File not found'); } } catch (Exception $e){ throw new Exception( 'Unable to upload file',0,$e); } //continue outer try block code } catch (Exception $e){ echo $e->getMessage . ""; while($e = $e->getPrevious) { echo 'Previous exception: '. $e->getMessage . ""; } } In this example, a file is uploaded and it is checked whether the file exists or not prior to the upload operation. If it does not exist, an exception is thrown. This code that checks whether the file exists or not is placed within a try-catch block, which is nested within another try-catch block. In case the file is not found, the inner block throws an 'Unable to upload file' exception, which is caught and handled by the outer block, leading to the following output: Unable to upload file Previous exception: File not found   Track, Analyze and Manage Errors With Rollbar Managing errors and exceptions in your code is challenging. It can make deploying... --- ### How to Handle the Syntax Error in Javascript > The Javascript SyntaxError is thrown when the engine comes across tokens or token orders with incorrect syntax when parsing code. - Published: 2022-05-12 - Modified: 2024-10-09 - URL: https://rollbar.com/blog/javascript-syntaxerror/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript The Javascript SyntaxError occurs when trying to interpret code that is not syntactically valid. It is thrown when the Javascript engine comes across tokens or token order that does not conform to Javascript syntax when parsing code.   What Causes Javascript SyntaxError The Javascript SyntaxError is caused by the incorrect use of a pre-defined syntax. Syntax errors are detected while interpreting or parsing source code. For example, a SyntaxError can occur if a closing brace (}) is left off when defining a Javascript function. Browser development tools such as Chrome DevTools display Javascript syntax errors in the console.   SyntaxError Example Here’s an example of a Javascript SyntaxError thrown when missing a closing quotation mark (") in a line of code: console. log("Hello World); Since the above line of code has a missing closing quote, running it throws a SyntaxError: Uncaught SyntaxError: Invalid or unexpected token   How to Handle SyntaxError Syntax errors in Javascript cannot be handled by using try-catch blocks as they are thrown while the code is being parsed. The window. onerror function can be used instead to figure out that there is a syntax error. To achieve this, the onerror function must be defined in a separate script tag and not in the tag where the error may occur. The earlier code can be updated to use window. onerror: In the above code, the syntax error in the second script tag is logged by the console. log statement in the first script tag: Error: Uncaught SyntaxError:... --- ### How to Handle the Socket Exception in Java > The SocketException in Java is thrown to indicate that an error was encountered while creating or accessing a Socket. - Published: 2022-05-05 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-socketexception/ - Categories: Code Tutorials, Java - Tags: java The SocketException is an exception in Java that is thrown to indicate that an error was encountered while creating or accessing a Socket. Since the SocketException is a checked exception, it either needs to be thrown or surrounded by a try-catch block in code.   What Causes SocketException SocketException is a subclass of IOException and is the most general exception that indicates a problem when trying to open or access a socket. Some common causes for the SocketException are: Closed socket connection - The most common cause of SocketException is reading or writing from or to a closed socket connection. It can also occur when the connection is closed before all the data is read in the socket buffer. Slow network - A poor network connection might also cause a SocketException. Setting a higher connection timeout can decrease the rate of SocketException for slow connections. Network firewall - A network firewall can close socket connections. A network monitoring tool like Wireshark can be used to check firewall activities. Idle connection - Long idle connections might also cause a SocketException. If a connection needs to be used for a long time, heartbeat messages can be sent to prevent the idle state. Errors in code - A SocketException can also occur because of issues or bugs in code. For example, if a client sends a message to the server after the socket connection is closed.   SocketException Example The following is an example of a SocketException thrown when trying to write to... --- ### How to Handle the Unknown Host Exception in Java > The UnknownHostException occurs when trying to connect to a remote host, but the IP address of the host could not be determined. - Published: 2022-05-05 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-unknownhostexception/ - Categories: Code Tutorials, Java - Tags: java The UnknownHostException is an exception in Java that is thrown to indicate that the IP address of a host could not be determined. Since the UnknownHostException is a checked exception, it either needs to be thrown or surrounded by a try-catch block in code.   What Causes UnknownHostException The UnknownHostException occurs when trying to connect to a remote host using its hostname, but the IP address of the host could not be determined. This usually happens because of a typo in the hostname, or because of a DNS misconfiguration or propagation delay.   UnknownHostException Example Here is an example of an UnknownHostException thrown when trying to connect to an unknown host: public class UnknownHostExceptionExample { public static void main(String args) { String host = "https://rollbar. co"; URL url = null; try { url = new URL(host); HttpURLConnection con = (HttpURLConnection) url. openConnection; System. out. println(con. getResponseCode); } catch (MalformedURLException mue) { mue. printStackTrace; } catch (IOException ioe) { ioe. printStackTrace; } } } The above code attempts to connect to a remote host, but has a typo in the hostname. Therefore, running the code throws an UnknownHostException exception: java. net. UnknownHostException: rollbar. co at java. base/sun. nio. ch. NioSocketImpl. connect(NioSocketImpl. java:567) at java. base/java. net. SocksSocketImpl. connect(SocksSocketImpl. java:333) at java. base/java. net. Socket. connect(Socket. java:648) at java. base/sun. security. ssl. SSLSocketImpl. connect(SSLSocketImpl. java:290) at java. base/sun. security. ssl. BaseSSLSocketImpl. connect(BaseSSLSocketImpl. java:173) at java. base/sun. net. NetworkClient. doConnect(NetworkClient. java:182) at java. base/sun. net. www. http. HttpClient. openServer(HttpClient. java:474) at java. base/sun.... --- ### How to Implement Custom Exceptions in C++ > Custom exceptions in C++ provide relevant information about an error to the exception handling mechanism and customize the error message. - Published: 2022-04-21 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/cpp-custom-exceptions/ - Categories: C++, Code Tutorials - Tags: c++ Under certain conditions, custom exceptions that are not predefined in C++ may be useful to generate. In C++, any type can be caught or thrown that matches some requirements. These are that the type should have a valid copy constructor and destructor. Custom exceptions provide relevant information about an error to the exception handling mechanism. They can be generated by creating a new class containing the attributes needed and throwing an instance of such a class, or by inheriting from std::exception and overriding the what function.   Custom C++ Exceptions Example Here’s an example on how to create and throw a custom exception in C++: #include using namespace std; class MyCustomException : public std::exception { public: char * what { return "Custom C++ Exception"; } }; int main { try { throw MyCustomException; } catch (MyCustomException mce) { cout --- ### How to Handle the Clone Not Supported Exception in Java > Thrown to indicate that Object.clone() was called to clone an object, but that object's class does not implement the Cloneable interface. - Published: 2022-04-07 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-clonenotsupportedexception/ - Categories: Code Tutorials, Java - Tags: java The CloneNotSupportedException is an exception in Java that is thrown to indicate that the clone method in class Object was called to clone an object, but that object's class does not implement the Cloneable interface. Applications that override the clone method can also throw this exception to indicate that an object could not or should not be cloned.   What Causes CloneNotSupportedException A class implements the Cloneable interface to indicate to the Object. clone method that it is legal to create a clone of that class. Invoking Object. clone on an instance that does not implement the Cloneable interface results in the CloneNotSupportedException being thrown. By convention, classes that implement the Cloneable marker interface should override the protected Object. clone method with a public method.   CloneNotSupportedException Example Here is an example of an CloneNotSupportedException thrown when an object is cloned, and the object’s class does not implement the Cloneable interface: class Person { private String name; public Person(String name) { super; this. name = name; } @Override protected Object clone throws CloneNotSupportedException { return super. clone; } } public class CloneNotSupportedExceptionExample { public static void main(String args) { Person p = new Person("John"); try { p. clone; } catch (CloneNotSupportedException cnse) { cnse. printStackTrace; } } } Since the Person class does not implement the Cloneable interface, it is not legal to create a clone of that class using Object. clone. Therefore, running the above code throws the CloneNotSupportedException exception: java. lang. CloneNotSupportedException: Person at java. base/java. lang. Object.... --- ### How to Resolve the Instantiation Exception in Java > The InstantiationException in Java is thrown when the JVM cannot instantiate a Java type at runtime using the Class.newInstance() method. - Published: 2022-04-04 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/how-to-resolve-the-instantiation-exception-in-java/ - Categories: Code Tutorials, Java - Tags: java The InstantiationException is a runtime exception in Java that occurs when an application attempts to create an instance of a class using the Class. newInstance method, but the specified class object cannot be instantiated. Since the InstantiationException is an unchecked exception, it does not need to be declared in the throws clause of a method or constructor.   What Causes InstantiationException The InstantiationException is thrown when the JVM cannot instantiate a type at runtime. This can happen for a variety of reasons, including the following: The class object represents an abstract class, interface, array class, primitive or void. The class has no nullary constructor. Such a constructor is required when a parameterized constructor is defined for the class.   InstantiationException Example Here is an example of an InstantiationException thrown when the Class. newInstance method is used to create an instance of a boolean: public class InstantiationExceptionExample { public static void main(String args) { try { Class clazz = boolean. class; clazz. newInstance; } catch (InstantiationException ie) { ie. printStackTrace; } catch (IllegalAccessException iae) { iae. printStackTrace; } } } Since boolean is a primitive data type, a new instance of it cannot be created using the Class. newInstance method, which can only construct objects for concrete classes. Running the above code throws the following exception: java. lang. InstantiationException: boolean at java. base/java. lang. Class. newInstance(Class. java:598) at InstantiationExceptionExample. main(InstantiationExceptionExample. java:5) Caused by: java. lang. NoSuchMethodException: boolean. at java. base/java. lang. Class. getConstructor0(Class. java:3427) at java. base/java. lang. Class. newInstance(Class. java:585)... --- ### How to Fix the Empty Stack Exception in Java > The EmptyStackException is a runtime exception in Java that is thrown by methods in the Stack class to indicate that the stack is empty. - Published: 2022-03-28 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-emptystackexception/ - Categories: Code Tutorials, Java - Tags: java The EmptyStackException is a runtime exception in Java that is thrown by methods in the Stack class to indicate that the stack is empty. Since the EmptyStackException is an unchecked exception, it does not need to be declared in the throws clause of a method or constructor.   What Causes EmptyStackException The EmptyStackException is thrown when attempting to access elements in an empty stack in Java. For example, if the Stack. pop method is used to remove an object at the top of an empty stack, an EmptyStackException is thrown.   EmptyStackException Example Here is an example of an EmptyStackException thrown when an element is attempted to be popped from an empty stack: import java. util. Stack; public class EmptyStackExceptionExample { public static void main(String args) { Stack s = new Stack; s. pop; } } The Stack. pop method removes the element at the top of a stack. Since the above code attempts to use this method on an empty stack, it throws an EmptyStackException: Exception in thread "main" java. util. EmptyStackException at java. base/java. util. Stack. peek(Stack. java:101) at java. base/java. util. Stack. pop(Stack. java:83) at EmptyStackExceptionExample. main(EmptyStackExceptionExample. java:6)   How to Fix EmptyStackException The EmptyStackException can be avoided using a check to make sure that the stack is not empty before using methods such as Stack. pop or Stack. peek which could throw an EmptyStackException. The code in the earlier example can be updated to include this check: import java. util. Stack; public class EmptyStackExceptionExample { public... --- ### How to Fix the Type Not Present Exception in Java > Java's TypeNotPresentException is thrown when the definition of a type, attempted to be accessed using a specified name, cannot be found. - Published: 2022-03-28 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-typenotpresentexception/ - Categories: Code Tutorials, Java - Tags: java The TypeNotPresentException is a runtime exception in Java that is thrown when an application attempts to access a type using a string that represents the name of the type, but the definition for the type with the specified name cannot be found. It differs from ClassNotFoundException as ClassNotFoundException is a checked exception, whereas TypeNotPresentException is unchecked. Since the TypeNotPresentException is an unchecked exception, it does not need to be declared in the throws clause of a method or constructor.   What Causes TypeNotPresentException The TypeNotPresentException is thrown when the definition of a type, attempted to be accessed using a specified name, cannot be found. The application attempts to access the type using a string that represents the name of the type, but no definition for the type with the specified string can be found. This exception can be thrown when undefined type variables are attempted to be accessed as well as when types (classes, interfaces or annotation types) are loaded. It can, in particular, be thrown by the API used to read annotations reflectively.   TypeNotPresentException Example Here's an example of a TypeNotPresentException thrown when a custom annotation contains an element that refers to a class that exists at compile-time but not at runtime. When this annotation is used by a class and read reflectively, a TypeNotPresentException is thrown. First, the custom annotation MyAnnotation is created. This annotation contains an element context that refers to the javax. xml. bind. JAXBContext class: import java. lang. annotation. Retention; import java. lang. annotation.... --- ### How to Resolve the Illegal Format Conversion Exception in Java > Java's IllegalFormatConversionException is an unchecked exception thrown when an incompatible type argument is passed to a format specifier. - Published: 2022-03-28 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-illegal-format-conversion-exception/ - Categories: Code Tutorials, Java - Tags: java The IllegalFormatConversionException is an unchecked exception in Java that occurs when the argument that corresponds to a format specifier is of an incompatible type. Since the IllegalFormatConversionException is thrown at runtime, it does not need to be declared in the throws clause of a method or constructor.   What Causes the Illegal Format Conversion Exception? The IllegalFormatConversionException is thrown when an incompatible type argument is passed to a format specifier. For example, the %d format specifier requires an integer to be passed to it, and if a String is passed instead, an IllegalFormatConversionException is thrown.   Examples of the IllegalFormat Conversion Exception Here is an example of an IllegalFormatConversionException thrown when a String is passed to a format specifier that expects an integer: public class IllegalFormatConversionExceptionExample { public static void main(String args) { System. out. printf("%d", "Hello World"); } } Since the %d format specifier expects an integer and the actual value passed to it was of type String, running the above code throws the IllegalFormatConversionException: Exception in thread "main" java. util. IllegalFormatConversionException: d ! = java. lang. String at java. base/java. util. Formatter$FormatSpecifier. failConversion(Formatter. java:4426) at java. base/java. util. Formatter$FormatSpecifier. printInteger(Formatter. java:2938) at java. base/java. util. Formatter$FormatSpecifier. print(Formatter. java:2892) at java. base/java. util. Formatter. format(Formatter. java:2673) at java. base/java. io. PrintStream. format(PrintStream. java:1209) at java. base/java. io. PrintStream. printf(PrintStream. java:1105) at IllegalFormatConversionExceptionExample. main(IllegalFormatConversionExceptionExample. java:3)   How to Fix IllegalFormatConversionException To avoid the IllegalFormatConversionException, it should be ensured that the argument passed to a format specifier is of the correct... --- ### Reduce Debugging Time With Rollbar > Developers want to work on new features. They want to fix bugs that occur, but they don’t want to spend hours searching for the problem. - Published: 2022-03-10 - Modified: 2022-03-10 - URL: https://rollbar.com/blog/reduce-debugging-time-with-rollbar/ - Categories: company - Tags: continuous-delivery Development time is precious. Developers are highly-skilled and highly-paid, and so naturally you want to make sure that they are as productive as possible. Many organizations are starting to hire Developer Experience Engineers to make sure that their developers are using the best tools and processes possible. To make developers more productive, the first step is to figure out exactly what developers are actually doing. Then, we need to figure out what we want them to do. Examining Developer Time Developers' time can broadly be divided into two areas: Time coding and time not coding. It seems pretty obvious that you want to maximize the amount of time that your developers are coding and reduce the time they are not. Coding time can actually be broken down further into feature development and maintenance. Feature development – the process of producing new features and value for the customer – is the most desirable thing that a developer can do. Maintenance work – bug fixing – is a bit of a mixed bag. You want your developers to fix bugs, sure, but you don’t want them to have to do it. In other words, bugs are bad and a drag on the team, preventing their coding time from being spent on new feature work. Non-coding Time And then there is non-coding time, and it, too, is a mixed bag. Some of it is productive time – code reviews, mentoring, training, creating issues and bug reports, etc. I like to call this meta-coding... --- ### Rollbar Certified for SOC 2 Type II and SOC 3 - Published: 2022-03-08 - Modified: 2022-03-08 - URL: https://rollbar.com/blog/rollbar-certified-for-soc-2-type-ii-and-soc-3/ - Categories: company, security We are pleased to announce that an independent service auditor has certified that Rollbar meets SOC 2 Type II criteria and also SOC3 criteria. This extends our security, data privacy, and compliance certifications. Last year Rollbar was certified to meet SOC Type I to go with our existing ISO 27001 certification. The ISO 27001 standard promotes continuous improvement of security processes and demonstrates our commitment to customer support, customer excellence, and data privacy and security. By moving on to achieve the SOC 2 Type II certification we demonstrate our commitment to these standards. SOC 3 reports are based on the Auditing Standards Board of the American Institute of Certified Public Accountants' (AICPA) existing Trust Services Criteria (TSC). The purpose of the report is to provide a publicly facing version of the SOC 2 attestation report for customers who need assurances about service organization's controls relevant to security, availability, processing integrity, confidentiality, and privacy, but do not require a full SOC 2 report. SOC 3 reports can be freely distributed because they are general use reports. You can read Rollbar’s SOC 3 report here. A SOC 3 report contains a written assertion by service organization management regarding control effectiveness to achieve commitments based on the applicable trust services criteria, as well as service auditor's opinion on whether management's assertion is stated fairly. To achieve these standards we have to prove our processes, elevate the level of our security and compliance controls and demonstrate that our access control, encryption, security testing, penetration... --- - [Using JavaScript source maps to debug errors](https://rollbar.com/blog/using-javascript-source-maps-to-debug-errors/): Some of the most common questions we get here at Rollbar deal with source maps: What are source maps and... - [How GorillaStack used Rollbar to level up logging with the Serverless framework](https://rollbar.com/blog/how-gorillastack-used-rollbar-to-level-up-logging-with-the-serverless-framework/): Our friends at GorillaStack wanted to share how they set up Rollbar with the Serverless framework, and made a handy... ### Slack Oauth 2.0 system is available for your projects > NoSuchFieldError in Java is thrown when an application accesses or modifies a field of an object/class that no longer contains that field. - Published: 2022-03-03 - Modified: 2022-03-03 - URL: https://rollbar.com/blog/slack-oauth-2-0-system-is-available-for-your-projects/ - Categories: product - Tags: integrations, Slack Slack Oauth 2. 0 system is available for your projects Rollbar is adopting the updated Oauth 2. 0 flow created by Slack. Slack has revised their access tokens and now allows the Rollbar Slack bot to have its own credentials. This replaces the use of member’s credentials. What does this mean? You don’t have to switchover, but you should consider the benefits of migrating. To complete the migration, you must add Rollbar Slack bot to any channels that you'd like to post alerts. What are the benefits of Bot Tokens on Slack? Slack integration will use a single bot token, so there will not be any confusion regarding switching user access tokens. You will have the chance to manually enter the appropriate Slack channel via a text input box, which will eliminate the long load times of a drop down for channel selection when configuring Slack notifications. When team members leave your Slack workspace, their “owned” tokens do not need to be swapped out as they would today. How to migrate to Slack Oauth 2. 0? We recommend you complete the migration process to ensure continued support of notifications. To start the migration process for the new Slack Oauth 2. 0 version, you will need to go to your Account Settings and follow the steps in Rollbar. Go to Settings, and select Slack, under Notifications. On the Manage Account Slack Settings page, begin the migration process by clicking on the Add to Slack button. On the upper left corner, select... --- - [Connect Rollbar to your source code and issues in GitLab](https://rollbar.com/blog/connect-rollbar-to-your-source-code-and-issues-in-gitlab/): Good news for GitLab users! You can now deep link error stack traces in Rollbar directly to the code in... ### How to Resolve the NoSuchFieldError in Java > NoSuchFieldError in Java is thrown when an application accesses or modifies a field of an object/class that no longer contains that field. - Published: 2022-02-25 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-nosuchfielderror/ - Categories: Code Tutorials, Java - Tags: java The NoSuchFieldError is an error in Java that occurs when a specified field does not exist. It is thrown when an application attempts to access or modify a field of an object or a static field of a class but the object or class no longer contains that field. The NoSuchFieldError only occurs during runtime if the definition of a class has changed incompatibly. Since it is thrown at runtime, it does not need to be declared in the throws clause of a method or constructor.   What Causes NoSuchFieldError The NoSuchFieldError error occurs if an application tries to access or modify a specified field of an object, and the object no longer has that field. This can occur if the definition of a class changes incompatibly after compilation. In case code is only partially recompiled, old code can exist that references a field which no longer exists in the recompiled classes, causing the NoSuchFieldError.   NoSuchFieldError Example Here is an example of a NoSuchFieldError thrown when a field that does not exist is referenced. Here’s a class MyClass that contains a static variable msg: public class MyClass { public static String msg = "Hello World"; } Here’s a class NoSuchFieldErrorExample that refers to the static variable str from MyClass and prints out its value: public class NoSuchFieldErrorExample { public static void main(String args) { System. out. println(MyClass. msg); } } Running the above code produces the correct output as expected: Hello World Now, if the variable msg is removed... --- - [Rollbar integration for the Ionic framework](https://rollbar.com/blog/rollbar-integration-for-the-ionic-framework/): Our friends at Cuttlesoft wanted to share how they use Rollbar to detect errors in Ionic built applications. Enjoy! At... - [Better workflows for managing errors](https://rollbar.com/blog/better-workflows-for-managing-errors/): Happy Holidays Rollbar users! We're gifting you a handful of updates to a key feature in Rollbar, the Live Error... ### How to Fix Unsupported major.minor Version 52.0 Error in Java > Java's unsupported major.minor version error happens when a class is compiled using a higher version JDK but executed on a lower version JRE. - Published: 2022-02-22 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-unsupported-major-minor-version-52-0/ - Categories: Code Tutorials, Java - Tags: java The unsupported major. minor version error is thrown in Java when a class is compiled using a higher version of the Java Development Kit (JDK) but executed on a lower version of the Java Runtime Environment (JRE). The exact cause is printed on the version e. g. in the case of major. minor version 52. 0, the class is compiled using JDK 8 since major version 52 corresponds to Java SE 8. This error can usually be fixed by running the application on the same (or higher) JRE version as the JDK.   What Causes Unsupported major. minor Version Error The unsupported major. minor version error occurs due to a Java version mismatch. When a Java project is compiled on a higher version of Java (e. g. JDK 1. 8) but executed on a lower version (e. g. JRE 1. 7), this error is thrown. Java is backwards compatible, which means a Java class file or binary (JAR file) compiled on a lower version of Java can be executed on a higher version. However, the opposite of this is untrue, i. e. a class compiled on a higher version of Java cannot be executed on a lower version. This is because the higher version usually contains features that are not supported by the lower version on which the application executes. When this happens, the unsupported major. minor version error occurs.   Unsupported major. minor Version Error Example Here is an example of an unsupported major. minor version error thrown when... --- - [Ruby Exception Handling - Primer for Dealing with Errors in Ruby](https://rollbar.com/blog/ruby-exception-handling-primer-for-dealing-with-errors-in-ruby/): Ruby is a popular open source programming language that is highly flexible, and used for everything from basic "hello world"... - [Join Rollbar at AWS re:Invent](https://rollbar.com/blog/join-rollbar-at-aws-reinvent/): Join us this year at Amazon Web Services annual conference, re:Invent! Rollbar will be participating along side of Atlassian and... ### How to Resolve the SecurityException in Java > The SecurityException in Java is a runtime exception thrown by the security manager to indicate a security violation. - Published: 2022-02-14 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-securityexception/ - Categories: Code Tutorials, Java - Tags: java The SecurityException is a runtime exception in Java that is thrown by the security manager to indicate a security violation. The SecurityException is an unchecked exception and does not need to be declared in the throws clause of a method or constructor.   What Causes SecurityException The SecurityException indicates that a security violation occurred during the execution of an application. Therefore, execution cannot be further continued and has to be terminated. An example scenario of a SecurityException is using a package name for a class in code that is already defined in a signed JAR on the classpath.   SecurityException Example Here is an example of a SecurityException thrown when using a package name that overlaps with the package name of a signed JAR file present in the classpath: package com. rollbar. test; public class SecurityExceptionExample { public static void main(String args) { System. out. println("Hello World"); MyObject obj = new MyObject; } } In this example, the package com. rollbar. test is used for the SecurityExceptionExample class. However, this package name is already present in a signed JAR (which contains the MyObject class) in the application classpath. This causes the JVM to throw a SecurityException when the above code is executed: Hello World Exception in thread "main" java. lang. SecurityException: class "com. rollbar. test. MyObject"'s signer information does not match signer information of other classes in the same package at java. base/java. lang. ClassLoader. checkCerts(ClassLoader. java:1151) at java. base/java. lang. ClassLoader. preDefineClass(ClassLoader. java:906) at java. base/java. lang. ClassLoader. defineClass(ClassLoader.... --- - [Deep link stack traces to Bitbucket and track Pipeline deploys](https://rollbar.com/blog/deep-link-stack-traces-to-bitbucket-and-track-pipeline-deploys/): Good news for Bitbucket users! You can now deep link error stack traces in Rollbar directly to the code in... - [Correlate errors to feature rollout tests with Rollbar and Split](https://rollbar.com/blog/correlate-errors-to-feature-rollout-tests-with-rollbar-and-split/): Our friends at Split wanted to let you know that you can now integrate Rollbar with Split. And take control... ### Handling the ArithmeticException Runtime Exception in Java > The ArithmeticException in Java is thrown by the JVM when an arithmetic operation creates an exceptional condition. - Published: 2022-02-10 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-arithmeticexception/ - Categories: Code Tutorials, Java - Tags: exception monitoring, java Introduction Arithmetic is at the core of every program and every programming language in existence. From integer and floating-point arithmetic all the way down to bitwise and pointer arithmetic, these mathematical operations translate into machine instructions which execute with thundering speeds and manipulate the state of software applications used across all sorts of different domains. Most modern programming languages have a dedicated category of errors or exceptions for dealing with all the peculiar cases and problematic conditions that may arise while performing these arithmetic operations.   ArithmeticException & Why it is an Unchecked Exception In Java, any arithmetic operation which creates an exceptional condition makes the Java Virtual Machine throw the ArithmeticException exception . Generally speaking, anything that a scientific calculator isn’t able to process would throw this exception. At a lower level, certain rules and constraints are imposed by the programming language itself, so if any of these are broken, the ArithmeticException exception will emerge. ArithmeticException inherits from the RuntimeException class which means it is an unchecked, runtime exception . This is due to a language design decision made to reduce the exception handling clutter that would otherwise arise with the high frequency of arithmetic operations, but more importantly because throwing and propagating arithmetic exceptions wouldn’t make sense for the majority of cases, which in practice are the result of logical programming errors that need to be refactored, rather than exceptions that need to be handled. Consequently, Java doesn’t require ArithmeticException instances to be checked and will only let... --- - [A better error monitoring workflow Rollbar + Atlassian](https://rollbar.com/blog/a-better-error-monitoring-workflow-rollbar-atlassian/): Dealing with errors can be time consuming and often an interruption in your everyday development workflow. It's important that we... - [Rollbar add-on now available for JIRA](https://rollbar.com/blog/rollbar-add-on-now-available-for-jira/): We’ve recently released a new JIRA Add-On to help extend your application error monitoring workflow. JIRA is one of the... ### Handling the ClassCastException Runtime Exception in Java > The ClassCastException in Java happens when the JVM tries to cast an object to a class (or in some instances, an interface) and fails. - Published: 2022-02-10 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-classcastexception/ - Categories: Code Tutorials, Java - Tags: exception monitoring, java Introduction to Runtime Exceptions Runtime exceptions are exceptions which can not be checked at compile time. In Java, there are a myriad of classes derived from the RuntimeException class , all of which represent unchecked exceptions that need to be carefully considered and managed. Despite being less serious and critical than the unchecked runtime errors , these exceptions can still be very problematic and cause unexpected issues at runtime, especially if necessary precautions aren’t taken and relevant exception handling mechanisms aren’t put in place.   What is ClassCastException and When does it Happen? As its name implies, ClassCastException is an exception that happens when the JVM tries to cast an object to a class (or in some instances, an interface) and fails. This relates to explicit type casting and the reason the cast fails can be traced to an attempt at downcasting an object to a class of which it is not an instance, or to an interface which it does not implement. ClassCastException is a subclass of the RuntimeException class which means it is an unchecked, runtime exception . This exception can not be checked at compile-time because the compiler has no way of knowing whether the object is actually an instance of the target subclass, or if it is an instance of a subclass that implements the target interface. Consequently, if either of these scenarios is encountered at runtime, Java will throw the ClassCastException exception. Parent parent = new Child; /*... */ Child c = (Child) parent; //... --- - [How CircleCI uses Rollbar to level up their continuous delivery](https://rollbar.com/blog/how-circleci-uses-rollbar-to-level-up-their-continuous-delivery/): I'm excited to share a fun and insightful interview our friends at The Changelog recently did with Paul Biggar, Founder... - [Improved ruby error reporting with our latest gem updates](https://rollbar.com/blog/improved-ruby-error-reporting-with-our-latest-gem-updates/): Recently, we released version 2. 13. 0 of the rollbar-gem. This update is full of new features and some minor... ### How to Handle String Index Out Of Bounds Exception in Java > The StringOutOfBoundsException in Java that occurs when accessing a string at an index which is negative/greater than the string length. - Published: 2022-02-10 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-stringoutofboundsexception/ - Categories: Code Tutorials, Java - Tags: java The StringIndexOutOfBoundsException is an unchecked exception in Java that occurs when an attempt is made to access the character of a string at an index which is either negative or greater than the length of the string. For some methods of the String class, such as the charAt method, this exception is also thrown when the index is equal to the size of the string. Since the StringIndexOutOfBoundsException is an unchecked exception, it does not need to be declared in the throws clause of a method or constructor. It can be handled in code using a try-catch block.   What Causes StringIndexOutOfBoundsException A Java string is a collection of characters which has a range of . When an attempt is made to access the characters with limits that fall outside the range of the string, the StringIndexOutOfBoundsException is thrown. Therefore, this exception occurs when the index of a character does not exist in the string. Some methods that throw a StringIndexOutOfBoundsException with invalid specified arguments are: String. charAt(int index) - Returns the character at the specified index. The index can have a range of . If the specified index does not belong to this range, a StringIndexOutOfBoundsException occurs. CharSequence. subSequence(int beginIndex, int endIndex) - Returns a new character sequence based on specified arguments. The StringIndexOutOfBoundsException is thrown if any index is negative, the endIndex is greater than the length of the string or the beginIndex is greater than the endIndex. String. substring(int beginIndex) - Returns a substring beginning with the... --- - [5 ways to reduce noise when logging your JavaScript exceptions](https://rollbar.com/blog/5-ways-to-reduce-noise-when-logging-your-javascript-exceptions/): Developing and maintaining user facing software is a challenge and a very distracting one at that. 🙂 Often times it... - [SAML-based Single Sign-On (SSO) now available](https://rollbar.com/blog/saml-based-single-sign-on-sso-now-available/): If your team uses Google Apps for Work or Okta, you can now access your Rollbar account using SAML-based single... - [Two-Factor Authentication now available for all users](https://rollbar.com/blog/two-factor-authentication-now-available-for-all-users/): We’re excited to introduce Two-Factor Authentication (2FA) in Rollbar as an optional extra layer of security on every user’s account.... ### How to Handle the NumberFormat Exception in Java > The NumberFormatException in Java is thrown when it is not possible to convert a string to a numeric type (e.g. int, float). - Published: 2022-02-10 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-numberformatexception/ - Categories: Code Tutorials, Java - Tags: java The NumberFormatException is an unchecked exception in Java that occurs when an attempt is made to convert a string with an incorrect format to a numeric value. Therefore, this exception is thrown when it is not possible to convert a string to a numeric type (e. g. int, float). For example, this exception occurs if a string is attempted to be parsed to an integer but the string contains a boolean value. Since the NumberFormatException is an unchecked exception, it does not need to be declared in the throws clause of a method or constructor. It can be handled in code using a try-catch block.   What Causes NumberFormatException There can be various cases related to improper string format for conversion to numeric values. Some of them are: Null input string Integer. parseInt(null); Empty input string Integer. parseInt(""); Input string with leading/trailing whitespaces Integer myInt = new Integer(" 123 "); Input string with inappropriate symbols Float. parseFloat("1,234"); Input string with non-numeric data Integer. parseInt("Twenty Two"); Alphanumeric input string Integer. parseInt("Twenty 2"); Input string exceeding the range of the target data type Integer. parseInt("12345678901"); Mismatch of data type between input string and the target data type Integer. parseInt("12. 34");   NumberFormatException Example Here is an example of a NumberFormatException thrown when attempting to convert an alphanumeric string to an integer: public class NumberFormatExceptionExample { public static void main(String args) { int a = Integer. parseInt("1a"); System. out. println(a); } } In this example, a string containing both numbers and characters is... --- - [Using Rollbar to unravel existing Laravel applications](https://rollbar.com/blog/using-rollbar-to-unravel-existing-laravel-applications/): {: . highlightbox} Read our new blog Announcing Laravel error monitoring with Rollbar! About 6 months ago I inherited a... - [Streamline monitoring with Rollbar & Datadog](https://rollbar.com/blog/streamline-monitoring-with-rollbar-datadog/): Good news! We’ve recently released a new integration with Datadog to help extend your error monitoring options. Datadog is a... - [6 ways to improve error grouping in Rollbar](https://rollbar.com/blog/6-ways-to-improve-error-grouping-in-rollbar/): You're two weeks into using Rollbar. You've watched in amazement as issue after issue comes in without a single customer... - [Query Rollbar data directly from our API](https://rollbar.com/blog/query-rollbar-data-directly-from-our-api/): Good news for RQL users. Until recently RQL usage was limited to the Rollbar interface. That's no longer a problem.... ### How to Avoid the Concurrent Modification Exception in Java > The ConcurrentModificationException in Java occurs when an object is attempted to be modified concurrently without permission. - Published: 2022-02-10 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-concurrentmodificationexception/ - Categories: Code Tutorials, Java - Tags: java The ConcurrentModificationException is a very common exception in Java that occurs usually while working with Collections. The ConcurrentModificationException is used to fail-fast when something being iterated on is modified. This exception occurs when an object is attempted to be modified concurrently without permission. For example, if a Collection is modified while a thread is traversing it using an Iterator, a ConcurrentModificationException is thrown from the Iterator. next method. The ConcurrentModificationException can occur in both multithreaded and single-threaded environments.   What Causes ConcurrentModificationException The ConcurrentModificationException generally occurs when working with Java Collections. The Collection classes in Java are very fail-fast and if they are attempted to be modified while a thread is iterating over it, a ConcurrentModificationException is thrown. This exception can occur in both multithreaded and single-threaded Java environments. Here are examples of each: Multithreaded environment - If a thread is traversing over a Collection using an Iterator and another thread attempts to add or remove elements to the Collection. Single-threaded environment - When an element is attempted to be removed from an ArrayList using the remove method while it is being traversed using an enhanced for loop.   ConcurrentModificationException Example Here is an example of a ConcurrentModificationException thrown when attempting to remove an element from an ArrayList using the remove method while traversing it using an enhanced for loop: import java. util. ArrayList; import java. util. List; public class ConcurrentModificationExceptionExample { public static void main(String args) { List list = new ArrayList; list. add("a"); list. add("b"); list. add("c"); list.... --- - [Rollbar add-on now available for Bitbucket](https://rollbar.com/blog/rollbar-add-on-now-available-for-bitbucket/): On the heels of Atlassian's announcement of Atlassian Connect for Bitbucket yesterday, we're excited to introduce our very own Rollbar... - [Easier way to get your team on Rollbar](https://rollbar.com/blog/easier-way-to-get-your-team-on-rollbar/): Joining and getting your team on Rollbar is now easier. Rollbar is better together and our latest account setting makes... - [Edit and rename error item titles](https://rollbar.com/blog/edit-and-rename-error-item-titles/): You can now rename/edit your error titles. Fix ugly long titles. Hover over, click, edit, and save. Enjoy! ### Better together: Rollbar and Datadog > It just makes sense to use Rollbar for debugging and error monitoring and Datadog for observability. By taking a little time to integrate the two tools and have them work together you will reap additional benefits throughout your SDLC and also find synergies and features that you might not be making the most of right now. - Published: 2022-02-01 - Modified: 2022-07-19 - URL: https://rollbar.com/blog/better-together-rollbar-and-datadog/ - Categories: product - Tags: datadog, error-monitoring, observability, rollbar Modern software development is a high-pressure affair. Competition means getting to market faster with higher quality code and being able to release software quicker, monitor it and both find and fix problems quickly. By using modern tools and building a new approach and workflow to allow for monitoring, observability, and intelligent and actionable alerts it is possible to achieve faster release cycles with higher code quality. Google promotes the DORA metrics for helping organizations become elite at developing and releasing code. These metrics support approaches like Continuous Code Improvement (CCI) in achieving those high levels of code quality and performance. Tools like Rollbar and Datadog have a part to play in achieving good levels of these metrics, along with your code repository tools, your communication tools and your design approach. Like any other highly skilled endeavour, the craft of software engineering is helped by using the best tools for the job. Rollbar provides industry leading error monitoring in real-time with AI-powered error grouping. Datadog provides industry leading observability into modern applications. While both tools can do parts of what the other can do, they aren’t as good. You wouldn’t use a hacksaw to cut wood for framing and you wouldn’t use a circular saw for cutting metal pipe. It just makes sense to use Rollbar for debugging and error monitoring and Datadog for observability. By taking a little time to integrate the two tools and have them work together you will reap additional benefits throughout your SDLC and also find... --- - [Connect Rollbar to Bitbucket Issue Tracker](https://rollbar.com/blog/connect-rollbar-to-bitbucket-issue-tracker/): New integration now available - Bitbucket Issue Tracker Supercharge your issue and error tracking workflow when you connect your Rollbar... - [Daily, Hourly, New Errors and Trend graphs are now clickable](https://rollbar.com/blog/daily-hourly-new-errors-and-trend-graphs-are-now-clickable/): Yes, that's correct. Daily, Hourly, New Errors, and Trend graphs are now clickable. You can find and fix errors even... - [Using Logstash and Rollbar Together](https://rollbar.com/blog/using-logstash-and-rollbar-together/): The infrastructure behind most modern web applications includes an assortment of tools for collecting server and application metrics, logging events,... ### How to Handle the InterruptedException Checked Exception in Java > Java's InterruptedException is thrown when a thread is interrupted from waiting, sleeping, or when otherwise occupied. - Published: 2022-01-24 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-interruptedexception-checked-exception/ - Categories: Code Tutorials, Java - Tags: error-handling, java Introduction: Java Threads Threads are a basic concept in concurrent and parallel programming . They allow programs to do multiple things at the same time and are often used for performing computationally intensive tasks in the background without interrupting the main program. This is accomplished through multithreading, a common programming and execution model which allows multiple threads to exist within the context of one process. These threads share resources but are able to execute independently. In Java, threads are lightweight , which means they run in the same memory context and the time it takes to switch between threads is very short. This also means that inter-thread communication is fast and simple. Each and every Java application has a special thread created by the Java Virtual Machine, called the main thread, which is initiated by the main method as the application’s entry point. From there, it is possible to have many user threads created and controlled from within the application, able to execute portions of the program code in parallel with the main thread. The conventional way to create a thread in Java is by utilizing the Thread class , often used in conjunction with the Runnable interface . Threads can be started, stopped, suspended, or otherwise switched between their life-cycle states . In addition, Java threads can also be interrupted.   InterruptedException Exception: What, Why & How? InterruptedException (from java. lang. InterruptedException) is a checked exception which directly extends java. lang. Exception. This exception is thrown when a thread... --- - [Increasing max-open files for beanstalkd](https://rollbar.com/blog/increasing-max-open-files-for-beanstalkd/): Quick tip: If you are running out of file descriptors in your Beanstalkd process, use /etc/default/beanstalkd to set the ulimit... - [Assign errors to your team](https://rollbar.com/blog/assign-errors-to-your-team/): Ever wanted to assign error items to other team members in Rollbar? Of course you have. Now you can. It... - [Get notifications every time an error occurs](https://rollbar.com/blog/get-notifications-every-time-an-error-occurs/): You can now setup notifications every time an error occurs. Previously specific error Notifications were only available for New Items... ### How to Handle the UnsatisfiedLinkError Runtime Error in Java > The Java java.lang.UnsatisfiedLinkError is thrown when a program uses a native libaray but is unable to find it at runtime for some reason. - Published: 2022-01-24 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-unsatisfiedlinkerror-runtime-error/ - Categories: Code Tutorials, Java - Tags: error-handling, java Introduction: Using Native Libraries in Java A native library is a library containing code compiled for a specific (native) architecture. There are certain scenarios like hardware-software integrations and process optimizations where using libraries written for different platforms can be very useful or even necessary. For this purpose, Java provides the Java Native Interface (JNI), which allows Java code that runs inside a Java Virtual Machine (JVM) to interoperate with applications and libraries written in other programming languages, such as C, C++, and assembly. The JNI enables Java code to call and be called by native applications and libraries written in other languages and it enables programmers to write native methods to handle situations where an application cannot be written entirely in Java . Common native library formats include . dll files on Windows, . so files on Linux and . dylib files on macOS platforms. The conventional idiom for loading these libraries in Java is presented in the code example below. package rollbar; public class ClassWithNativeMethod { static { System. loadLibrary("someLibFile"); } native void someNativeMethod(String arg); /*... */ } Java loads native libraries at runtime by invoking the System. load or the System. loadLibrary method. The main difference between the two is that the latter doesn’t require the absolute path and file extension of the library to be specified—it relies on the java. library. path system property instead. To access native methods from the loaded libraries, method stubs declared with the native keyword are used.   UnsatisfiedLinkError Error: What is... --- - [Debugging Node.js Apps in Production with PyCharm](https://rollbar.com/blog/debugging-node-js-apps-in-production-with-pycharm/): Node. js has a built-in debugger that you can start in running processes. To do this, send a SIGUSR1 signal... - [RQL String Functions](https://rollbar.com/blog/rql-string-functions/): RQL now includes a basic library of string functions. You can use these to slice and group your data in... ### How to Handle the Illegal Monitor State Exception in Java > The IllegalMonitorStateException in Java occurs when a multithreaded application attempts to wait or notify a monitor that it does not own. - Published: 2022-01-17 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-illegalmonitorstateexception/ - Categories: Code Tutorials, Java - Tags: error-handling, java An IllegalMonitorStateException is a runtime exception in Java that occurs in multithreaded applications. It indicates that the calling thread has attempted to wait on an object's monitor, or attempted to notify other threads waiting on an object's monitor, without owning the specified monitor. Since the IllegalMonitorStateException is an unchecked exception, it does not need to be declared in the throws clause of a method or constructor.   What Causes IllegalMonitorStateException When building multithreaded applications in Java, if a monitor needs to be synchronized on, the IllegalMonitorStateException is thrown to indicate a thread attempted to wait or to notify other threads waiting on that monitor, without owning it. Therefore, this exception occurs if one of the wait, notify or notifyAll methods of the Object class are called outside a synchronized block or method.   IllegalMonitorStateException Example Here’s an example of an IllegalMonitorStateException, thrown when the wait method is called outside a synchronized block: class MyRunnable implements Runnable { public void run { try { this. wait(100); // calling wait without outside synchronized block System. out. println("Thread in runnable state"); } catch (InterruptedException e) { e. printStackTrace; } } } public class IllegalMonitorStateExceptionExample { public static void main(String args) { MyRunnable myRunnable = new MyRunnable; Thread myThread = new Thread(myRunnable); myThread. start; } } Since a thread must own a lock on the object’s monitor before calling the wait method, calling it outside a synchronized block throws an IllegalMonitorStateException. Running the above code throws the exception: Exception in thread "Thread-0" java. lang.... --- - [October Release Roundup](https://rollbar.com/blog/october-release-roundup/): Happy Halloween, everyone! Here's a roundup of what's new in Rollbar this month. - [New "Reports" API calls](https://rollbar.com/blog/new-reports-api-calls/): We've released two new API calls, exposing some of the data on the Dashboard via our JSON API. Use the... - [Occurrence counts by minute](https://rollbar.com/blog/occurrence-counts-by-minute/): We've released an improvement to our Item Detail pages, adding a graph showing the aggregate occurrence counts per minute. It's... ### How to Handle the Negative Array Size Exception in Java > The Negative Array Size Exception in Java occurs when an application attempts to create an array with a negative size. - Published: 2022-01-14 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-negativearraysizeexception/ - Categories: Code Tutorials, Java - Tags: error-handling, java The NegativeArraySizeException is a runtime exception in Java that occurs when an application attempts to create an array with a negative size. Since the NegativeArraySizeException is an unchecked exception, it does not need to be declared in the throws clause of a method or constructor.   What Causes NegativeArraySizeException in Java The NegativeArraySizeException occurs when an attempt is made to assign a negative size to an array. Here's an example: public class NegativeArraySizeExceptionExample { public static void main(String args) { int array = new int; System. out. println("Array length: " + array. length); } } Running the above code throws the following exception: Exception in thread "main" java. lang. NegativeArraySizeException: -5 at NegativeArraySizeExceptionExample. main(NegativeArraySizeExceptionExample. java:3)   How to Handle NegativeArraySizeException in Java The NegativeArraySizeException can be handled in code using the following steps: Surround the piece of code that can throw an NegativeArraySizeException in a try-catch block. Catch the NegativeArraySizeException in the catch clause. Take further action as necessary for handling the exception and making sure the program execution does not stop. Here's an example of how to handle it in code: public class NegativeArraySizeExceptionExample { public static void main(String args) { try { int array = new int; } catch (NegativeArraySizeException nase) { nase. printStackTrace; //handle the exception } System. out. println("Continuing execution... "); } } In the above example, the lines that throw the NegativeArraySizeException are placed within a try-catch block. The NegativeArraySizeException is caught in the catch clause and its stack trace is printed to the console.... --- - [node_rollbar 0.3.11](https://rollbar.com/blog/node_rollbar-0-3-11/): We've released a new version of our Node. js library, version 0. 3. 11. It's available on npm and GitHub.... - [More stack trace filename search filters](https://rollbar.com/blog/more-stack-trace-filename-search-filters/): We've released several new search filters to make it easier to find errors by the filenames in their stack trace.... ### How to Fix the Unsupported Class Version Runtime Error in Java > The UnsupportedClassVersionError in Java occurs when the JVM attempts to read a malformed or otherwise erroneous class file. - Published: 2022-01-14 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-unsupportedclassversionerror/ - Categories: Code Tutorials, Java - Tags: error-handling, java Introduction: Early-Stage Runtime Errors Runtime errors occur when a program is being executed and, in the case of compiled languages, after the program has been successfully compiled. Runtime errors are, therefore, harder to detect and prevent than compile-time errors . In Java, some of these runtime errors (namely throwable objects which are not exceptions) are triggered at a very early stage, while the program is basically starting up. Namely, there is a process of dynamic loading, linking, and initializing of classes and interfaces by the Java Virtual Machine (JVM) that occurs at the very beginning of execution of any Java application . This allows for a certain category of errors to be captured and dealt with before the program effectively starts. This category of high level runtime errors in Java is represented by classes which are direct descendants of the java. lang. Error class , including the java. lang. LinkageError class which denotes errors occurring during the aforementioned startup process . An instance of the Error class (or any of its subclasses) is a throwable object that a program is not expected or advised to handle, but instead, should cause immediate termination of the program. This is because most of these errors occur as a result of abnormal conditions, often so severe that it is impossible to know or control what further execution of the program might do. LinkageError instances in particular indicate critical class-related errors triggered during the class linking phase of the startup process, usually as a consequence... --- - [Missing daily summary emails](https://rollbar.com/blog/missing-daily-summary-emails/): We just rolled out a fix for missing daily summary emails. The bug was introduced last week when we refactored... - [rollbar-gem v0.13.2](https://rollbar.com/blog/rollbar-gem-v0-13-2/): We've released a patch version (0. 13. 2) of our Ruby gem, fixing two issues. The use_sucker_punch config option could... - [Prettier Node.js stack traces](https://rollbar.com/blog/prettier-node-js-stack-traces/): Small tweak of the day: we now render Node. js stack traces to look more like they do via console.... - [Debugging by IP Address](https://rollbar.com/blog/debugging-by-ip-address/): We've released a first round of features around IP Addresses. Similar to how you can see the history by Person,... ### How to Handle the Exception In Initializer Runtime Error in Java > Java's ExceptionInInitializerError occurs when an unchecked exception takes place in a static initializer or static variable assignment. - Published: 2022-01-13 - Modified: 2022-11-28 - URL: https://rollbar.com/blog/java-exceptionininitializererror-runtime-error/ - Categories: Code Tutorials, Java - Tags: error-handling, java Introduction to Runtime Errors & Exceptions Unlike compile-time errors which are detected during compilation , runtime errors occur during program execution, i. e. runtime. Java’s runtime error hierarchy is somewhat complicated compared to other programming languages, but at the basic level there are two main categories: runtime errors and runtime exceptions, the latter of which being further divided into checked and unchecked exceptions (see Figure 1 below). Unchecked exceptions are also lumped into the somewhat confusingly named RuntimeException superclass, while all runtime errors are also considered to be unchecked. The term “unchecked” refers to errors and exceptions that Java doesn’t require to be caught or otherwise specified in the code . Runtime Java errors and exceptions are otherwise jointly referred to as throwables, as per the name of the Throwable class—the parent class of all errors and exceptions in this language . Figure 1. Java runtime errors & exceptions hierarchy   ExceptionInInitializerError Error: What, Why & How? After successfully compiling a program, the Java Virtual Machine (JVM) performs dynamic loading, linking, and initializing of classes and interfaces, broadly known as the class loading process . This process includes the evaluation of all static initializer blocks and variable assignments present in the compiled code. If, during this evaluation, any unexpected exception occurs, the JVM throws an ExceptionInInitializerError runtime error, points to the specific exception that caused the error, and subsequently exits the program. The ExceptionInInitializerError error occurs every time there is an unchecked (and uncaught) exception taking place inside a static... --- - [Better support for Browserify and Webpack](https://rollbar.com/blog/better-support-for-browserify-and-webpack/): Recently (actually last week), we released a new version of rollbar. js that has a few fixes to play nicely... - [Codeship + Rollbar](https://rollbar.com/blog/codeship-rollbar/): Our friends over at Codeship wrote a piece about how they use Rollbar to track deployments and fix exceptions. More... - [rollbar.js snippet update](https://rollbar.com/blog/rollbar-js-snippet-update/): We've released a new version of rollbar. js (1. 0. 0-rc9), which fixes a bug in some environments. If you've... ### How to Fix ArrayStoreException in Java > The ArrayStoreException in Java is a runtime exception that occurs when an incorrect type of object is stored into an array of objects. - Published: 2022-01-03 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/arraystoreexception-in-java/ - Categories: Code Tutorials, Java - Tags: java An ArrayStoreException is a runtime exception in Java that occurs when an attempt is made to store the incorrect type of object into an array of objects. For example, if an Integer object is attempted to be stored in an String array, a “java. lang. ArrayStoreException: java. lang. Integer” is thrown.   What Causes ArrayStoreException in Java The ArrayStoreException occurs when an attempt is made to store the wrong type of object into an array of objects. Here's an example of an ArrayStoreException thrown when an Integer is attempted to be stored in an array of type String: public class ArrayStoreExceptionExample { public static void main(String args) { Object array = new String; array = 5; } } Running the above code produces the following output: Exception in thread "main" java. lang. ArrayStoreException: java. lang. Integer at ArrayStoreExceptionExample. main(ArrayStoreExceptionExample. java:4)   How to Handle ArrayStoreException in Java The ArrayStoreException can be handled in code using the following steps: Surround the piece of code that can throw an ArrayStoreException in a try-catch block. Catch the ArrayStoreException in the catch clause. Take further action as necessary for handling the exception and making sure the program execution does not stop. Here's an example of how to handle it in code: public class ArrayStoreExceptionExample { public static void main(String args) { try { Object array = new String; array = 5; } catch (ArrayStoreException ase) { ase. printStackTrace; //handle the exception } System. out. println("Continuing execution... "); } } In the above example, the... --- - [More Powerful Custom Grouping](https://rollbar.com/blog/more-powerful-custom-grouping/): Our Custom Grouping feature just got a lot more powerful. It's now possible to: group TimeoutErrors by the controller+action it... ### How to Handle the Incompatible Types Error in Java > The Java incompatible types error happens when a value assigned to a variable or returned by a method is incompatible with the one declared. - Published: 2021-12-28 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/how-to-handle-the-incompatible-types-error-in-java/ - Categories: Code Tutorials, Java - Tags: error-handling, java Introduction to Data Types & Type Conversion Variables are memory containers used to store information. In Java, every variable has a data type and stores a value of that type. Data types, or types for short, are divided into two categories: primitive and non-primitive. There are eight primitive types in Java: byte, short, int, long, float, double, boolean and char. These built-in types describe variables that store single values of a predefined format and size. Non-primitive types, also known as reference types, hold references to objects stored somewhere in memory. The number of reference types is unlimited, as they are user-defined. A few reference types are already baked into the language and include String, as well as wrapper classes for all primitive types, like Integer for int and Boolean for boolean. All reference types are subclasses of java. lang. Object . In programming, it is commonplace to convert certain data types to others in order to allow for the storing, processing, and exchanging of data between different modules, components, libraries, APIs, etc. Java is a statically typed language, and as such has certain rules and constraints in regard to working with types. While it is possible to convert to and from certain types with relative ease, like converting a char to an int and vice versa with type casting , it is not very straightforward to convert between other types, such as between certain primitive and reference types, like converting a String to an int, or one user-defined type to... --- - [Local variable values in stack traces](https://rollbar.com/blog/local-variable-values-in-stack-traces/): "This stack trace would be so much easier to debug if I knew what the value of that variable was"... - [Security patch for the recent CCS Injection Vulnerability](https://rollbar.com/blog/security-patch-for-the-recent-ccs-injection-vulnerability/): For the security conscious folks out there - We just finished patching our load balancers with the latest security updates.... ### How to Handle the Unclosed String Literal Error in Java > Python unclosed string literal error refers to the Java compiler failing to interpret a string literal due to the missing of a double quote. - Published: 2021-12-24 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-unclosed-string-literal-error/ - Categories: Code Tutorials, Java - Tags: error-handling, java Introduction to Strings & String Literals Strings are a fundamental data type in most modern general-purpose programming languages. In Java, strings are defined as character sequences and are represented as immutable objects of the class java. lang. String which contains various constructors and methods for creating and manipulating strings . A string literal is simply a reference to an instance of the String class, which consists of zero or more characters enclosed in double quotes. Moreover, a string literal is also a constant, which means it always refers to the same instance of the String class, due to interning . Below is an example of the string literal "rollbar" being assigned to two different variables a and b which both reference the same (automatically interned) String object. String a = "rollbar"; String b = "rollbar"; System. out. println(a == b);// true For string literals to be interpreted correctly by the Java compiler, certain (so called “special”) characters need to be escaped by using the appropriate escape sequence (or escape for short) . Such is the case with the double quote character, which is considered a special character as it is used to mark the beginning and the end of a string literal. So, in order to have quotes within these quotes, one must use the escape sequence \” on the inner quotes, as shown below. System. out. println("Say \"Hi! \" to Rollbar. "); // Say "Hi! " to Rollbar.   Unclosed String Literal Error: What It Is and Why It... --- - [Deploy emails show which commits were deployed](https://rollbar.com/blog/deploy-emails-show-which-commits-were-deployed/): We recently added a feature I've wanted for a long time: our Deploy email notifications now show which commits were... - [Daily summary email bugfix](https://rollbar.com/blog/daily-summary-email-bugfix/): Last week we fixed a bug in our daily summary emails that a customer reported on May 1st. The bug... - [rollbar-php v0.9.2 released](https://rollbar.com/blog/rollbar-php-v0-9-2-released/): We've released another small update to rollbar-php, version 0. 9. 2. Get it on Packagist or GitHub. This release contains... ### The Ultimate Guide to Logging in Python > Logging in Python allows you to track, tag, and assign severity levels to events that happen when an application runs. - Published: 2021-12-24 - Modified: 2024-07-18 - URL: https://rollbar.com/blog/logging-in-python/ - Categories: Code Tutorials, Python - Tags: Python Logging is used to track events that happen when an application runs. Logging calls are added to application code to record or log the events and errors that occur during program execution. In Python, the logging module is used to log such events and errors. An event can be described by a message and can optionally contain data specific to the event. Events also have a level or severity assigned by the developer. Logging is very useful for debugging and for tracking any required information.   How to Use Logging in Python The Logging Module The Python standard library contains a logging module that provides a flexible framework for writing log messages from Python code. This module is widely used and is the starting point for most Python developers to use logging. The logging module provides ways for applications to configure different log handlers and to route log messages to these handlers. This enables a highly flexible configuration that helps to handle many different use cases. To write a log message, a caller requests a named logger. This logger can be used to write formatted messages using a log level (DEBUG, INFO, ERROR etc). Here's an example: import logging log = logging. getLogger("mylogger") log. info("Hello World")   Logging Levels The standard logging levels in Python (in increasing order of severity) and their applicability are: DEBUG - Detailed information, typically of interest when diagnosing problems. INFO - Confirmation of things working as expected. WARNING - Indication of something unexpected or a... --- - [rollbar-php v0.9.1 released](https://rollbar.com/blog/rollbar-php-v0-9-1-released/): We've released another small update to rollbar-php, version 0. 9. 1. Get it on Packagist or GitHub. This release contains... ### How to Fix Method/Constructor X in Class Y Cannot be Applied to Given Types in Java > Java "Method/Constructor in Class Cannot Be Applied To Given Types" happens when formal parameters and the actual parameters differ. - Published: 2021-12-16 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/how-to-fix-method-constructor-in-class-cannot-be-applied-to-given-types-in-java/ - Categories: Code Tutorials, Java - Tags: java Introduction to Method and Constructor Signatures In computer programming, a function is a set of instructions that can be invoked to perform a particular task. In object-oriented programming (OOP), a method is a function that is typically associated with an object and models its behavior . In Java, methods can also be static, in which case they are part of a class definition and do not require an object to be created before they are invoked. Figure 1: The Method Signature in Java   Every method has a unique method signature, which consists of the method name and its input parameters, which can be zero or more. Java methods also have return types, but these are not considered a part of the method signature, as it would be impossible for a compiler to distinguish between overloaded methods in certain contexts . Below is an example of a method declaration with a method signature consisting of the method name “doSomething” and two method parameters; the 1st one of type String and name “param1,” and the 2nd one of type int with the name “param2. ” It is important to note that method parameters always have a type and a name, and the order in which they appear in the method declaration matters. Figure 2: The Constructor Signature in Java   Constructors are a special type of method invoked to create objects from a class. Constructors have no return type and always use the name of the class in which they are... --- ### Rollbar Log4J CVE-2021-44228 (“Log4Shell”) Community Update - Published: 2021-12-14 - Modified: 2021-12-20 - URL: https://rollbar.com/blog/log4j-zero-day-2021-log4shell/ - Categories: company TLDR; Your data is safe with Rollbar. A zero day in the Java ecosystem was discovered that could exploit Apache’s Log4J library. The vulnerability can, potentially, impact users of Rollbar’s Java SDK if they selected Log4J for their project. We recommend that all projects that are dependent on Log4J upgrade their dependencies so they require a version at/after 2. 17. 0. UPDATE: we have updated the guidance so it covers the new Log4J issues (CVE-2021-45046 & CVE-2021-45105) that've been discovered and patched by Log4J. We have published rollbar-java 1. 8. 1 SDK on Maven and on Github. What’s the problem? Log4J, a popular open-source Java logging library, has presented a two zero days that’ve been resolved in the core library. It can allow for malicious code to be executed within the JVM. Log4J has made three point releases since the discovery of the vulnerability, 2. 15. 0, 2. 16. 0 and 2. 17. 0. The current rollbar-java SDK doesn’t log through Log4J explicitly; however, if the customer leverages Log4J as their primary logger then Rollbar’s own logging will go through the affected library. The vulnerabilities have been labeled by MITRE as CVE-2021-44228 and CVE-2021-45046. CVE-2021-44228 was given the highest CVSS score (10. 0) and 2021-45046 is considered LOW. If exploited, the original vulnerability can give an attacker full control of any impacted system. After learning of the announcement, our security and engineering teams began working diligently to evaluate all of our products and internal services for any potential impact. Please... --- - [rollbar-gem v0.12.20 released](https://rollbar.com/blog/rollbar-gem-v0-12-20-released/): We've released a new patch version of rollbar-gem, version 0. 12. 20. Get it on Rubygems or GitHub. This release... - [rollbar-php v0.9.0 released](https://rollbar.com/blog/rollbar-php-v0-9-0-released/): We've released a new version of rollbar-php, version 0. 9. 0. It's available now on Packagist, or find the source... - [rollbar.js v1.0.0-rc8 released](https://rollbar.com/blog/rollbar-js-v1-0-0-rc8-released/): Today, we released rollbar. js version 1. 0. 0-rc8. This release includes a fix for a bug where the global... - [Heartbleed Bug Response](https://rollbar.com/blog/heartbleed-bug-response/): Updated 4/9 7:30pm What is Heartbleed? CVE-2014-0346, known as “Heartbleed”, is a bug in OpenSSL v1. 0. 1 through 1.... ### Persona: Platform/Ops > Unlike infrastructure monitoring tools which take a certain numbers of failures before reporting errors, Rollbar has no threshold and reports them instantly. - Published: 2021-05-05 - Modified: 2023-03-24 - URL: https://rollbar.com/solutions/platform-ops/ --- - [Connecting Rollbar with PagerDuty](https://rollbar.com/blog/connecting-rollbar-with-pagerduty/): Using Rollbar with PagerDuty is now a lot more seamless. PagerDuty provides SaaS IT on-call schedule management, alerting, and incident... ### Persona: QA/Testing > Get all the information you need to know which tests to prioritize fixing. Directly create an issue to developers and reduce the back-and-forth between teams. - Published: 2021-05-05 - Modified: 2023-03-24 - URL: https://rollbar.com/solutions/qa-testing/ --- - [Resolving Rollbar Items in Versions](https://rollbar.com/blog/resolving-rollbar-items-in-versions/): We just rolled out a new feature to help track which versions/revisions errors are resolved in. When resolving items within... ### Persona: Eng Management > Rollbar provides automation-grade grouping, intelligent real-time alerts, and automated workflows so that fixing bugs take minutes instead of days. - Published: 2021-05-05 - Modified: 2023-03-24 - URL: https://rollbar.com/solutions/engineering-management/ --- - [Ad-hoc error reporting with Rollbar CLI](https://rollbar.com/blog/ad-hoc-error-reporting-with-rollbar-cli/): We just coded up a quick tool to send Rollbar messages from the command line. It’s useful for quick, one-off... ### How to Catch Multiple Exceptions in Python > Python try-except blocks can be used to catch/respond to processes that raises more than one possible exception, with a single except clause. - Published: 2021-12-13 - Modified: 2023-07-31 - URL: https://rollbar.com/blog/python-catching-multiple-exceptions/ - Categories: Code Tutorials, Python - Tags: Python When a program encounters an exception during execution, it is terminated if the exception is not handled. By handling multiple exceptions, a program can respond to different exceptions without terminating it. In Python, try-except blocks can be used to catch and respond to one or multiple exceptions. In cases where a process raises more than one possible exception, they can all be handled using a single except clause. There are several approaches for handling multiple exceptions in Python, the most common of which are discussed below. Install the Python SDK to identify and fix exceptions Using Same Code Block for Multiple Exceptions With this approach, the same code block is executed if any of the listed exceptions occurs. Here's an example: try: name = 'Bob' name += 5 except (NameError, TypeError) as error: print(error) rollbar. report_exc_info In the above example, the code in the except block will be executed if any of the listed exceptions occurs. Running the above code raises a TypeError, which is handled by the code, producing the following output: cannot concatenate 'str' and 'int' objects   Using Different Code Blocks for Multiple Exceptions If some exceptions need to be handled differently, they can be placed in their own except clause: try: name = 'Bob' name += 5 except NameError as ne: # Code to handle NameError print(ne) rollbar. report_exc_info except TypeError as te: # Code to handle TypeError print(te) rollbar. report_exc_info In the above example, NameError and TypeError are two possible exceptions in the code, which... --- - [jQuery Error Instrumentation](https://rollbar.com/blog/jquery-error-instrumentation/): Today we are releasing a new feature for our JavaScript notifier that should make tracking down errors much easier if... - [JavaScript and Source Maps in a Django App](https://rollbar.com/blog/javascript-and-source-maps-in-a-django-app/): It’s pretty well known that every web app needs frontend JavaScript these days to provide the best possible user experience.... ### How to Handle Unhashable Type List Exceptions in Python > The Python TypeError: Unhashable Type: 'list' happens when a mutable list, instead of an immutable tuple, is used as a hash argument. - Published: 2021-12-13 - Modified: 2023-03-16 - URL: https://rollbar.com/blog/handling-unhashable-type-list-exceptions/ - Categories: Code Tutorials, Python - Tags: Python The Python TypeError: unhashable type: 'list' usually means that a list is being used as a hash argument. This error occurs when trying to hash a list, which is an unhashable object. For example, using a list as a key in a Python dictionary will cause this error since dictionaries only accept hashable data types as a key. The standard way to solve this issue is to cast a list to a tuple, which is a hashable data type. Install the Python SDK to identify and fix these undefined errors Tuples vs Lists Tuples are similar to lists but are immutable. They usually contain a heterogeneous sequence of elements that are accessed via unpacking or indexing. On the other hand, lists are mutable and contain a homogeneous sequence of elements that are accessed by iterating over the list. Immutable objects such as tuples are hashable since they have a single unique value that never changes. Hashing such objects always produces the same result, so they can be used as the keys for dictionaries.   TypeError: Unhashable Type: 'List' Example Here’s an example of a Python TypeError: unhashable type: 'list' thrown when a list is used as the key for a dictionary: my_dict = {1: 'Bob', : 'names'} print(my_dict) Since a list is not hashable, running the above code produces the following error: Traceback (most recent call last): File "test. py", line 1, in my_dict = {1: 'Bob', : 'names'} TypeError: unhashable type: 'list'   How to Fix TypeError: unhashable type:... --- - [Debug Production Errors in Minified JavaScript with Source Maps and Rollbar](https://rollbar.com/blog/debug-production-errors-in-minified-javascript-with-source-maps-and-rollbar/): Rollbar just got a much-requested feature: Source Maps support for Javascript. If you minify your Javascript code in production, this... ### Persona: Software Development > Prioritize development and let us do the heavy lifting. We'll provide all the info regarding which errors are affecting customers, what IPs are affected, and more. - Published: 2021-05-05 - Modified: 2023-03-24 - URL: https://rollbar.com/solutions/software-development/ --- - [Async node.js API server testing](https://rollbar.com/blog/async-node-js-api-server-testing/): This post is about how we built our test suite for our API server at Rollbar and some of the... ### Enterprise > Adopt Rollbar for your enterprise to boost developer productivity, deliver value to users faster, maintain app quality, and resolve customer tickets quickly. - Published: 2021-05-03 - Modified: 2024-01-12 - URL: https://rollbar.com/enterprise/ --- - [May Release Roundup](https://rollbar.com/blog/may-release-roundup/): Here’s a roundup of what’s new at Rollbar in the month of May. Big Features We revamped our notifications system,... ### How to Solve the Chunk Load Error in JavaScript > Whenever there’s an error observed in dynamically fetching helper JavaScript files known as Chunks, a ChunkLoad Error is thrown. - Published: 2021-12-13 - Modified: 2025-03-17 - URL: https://rollbar.com/blog/javascript-chunk-load-error/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript The way React, Vue, Angular and similar frameworks work is by downloading JavaScript files and using them to render websites on the browser. Whenever a project is built, two types of files are created: Main entry file - The file to which the script tag in index. html points to Other helper files - The files which are imported by the main entry file whenever required. Most of the time, if you have a small project, a single entry file is enough. You can store all the JavaScript code into the same file. But, for faster loading and better user experience, the JavaScript code can also be broken down into multiple files when it's built and these files are dynamically fetched by the main entry file whenever required. Now, whenever there’s an error observed in fetching these other helper JavaScript files, a ChunkLoad Error is thrown. The multiple JavaScript files used are also known as chunks, and hence the name of the error. What Causes the Chunk Load Error? To recap, the Chunk Load Error occurs when the browser encounters an error in fetching some JavaScript files, which were dynamically imported. There’s a couple reasons you may have encountered this error: The checksum validation for the JavaScript file failed This can occur when the checksum of the received file does not match the integrity attribute of the script tag. (For more information on why this is important and how it’s done you can refer to Subresource Integrity - Web security... --- ### Press - Published: 2021-04-29 - Modified: 2021-06-11 - URL: https://rollbar.com/press/ --- - [Rules Engine for Notifications, Plus Integrations with Campfire, Hipchat, JIRA and Trello](https://rollbar.com/blog/rules-engine-for-notifications-plus-integrations-with-campfire-hipchat-jira-and-trello/): Today we’re revamping the model for defining what you want to be notified about from Rollbar. Rollbar now integrates with... ### Events > Stay in tune with the latest developments in the software industry by hearing from industry experts and Rollbar customers on our webinars, podcasts, workshops, and shows. - Published: 2021-04-29 - Modified: 2023-02-09 - URL: https://rollbar.com/events/ --- - [Taking UNIQUE indexes to the next level](https://rollbar.com/blog/taking-unique-indexes-to-the-next-level/): You’ve probably seen unique constraints somewhere – either in Rails’ validates :uniqueness, Django’s Field. unique, or a raw SQL table... - [Improved grouping for Javascript errors](https://rollbar.com/blog/improved-grouping-for-javascript-errors/): We’ve released an updated to how Javascript errors are grouped in Rollbar. The new update does a better job of... ### Newsroom > Follow and stay up to date with the latest mentions and coverage of Rollbar, from press releases to news articles, and download our press kit. - Published: 2021-04-29 - Modified: 2021-06-17 - URL: https://rollbar.com/news/ --- ### How to Resolve The Non-static Variable/Method X Cannot be Referenced from a Static Context Error in Java > Attempting to access a non-static variable/method from a static context without a class instance creates ambiguity. - Published: 2021-12-13 - Modified: 2025-02-19 - URL: https://rollbar.com/blog/java-non-static-variable-method-x-cannot-be-referenced-from-a-static-context/ - Categories: Code Tutorials, Java - Tags: error-handling, error-monitoring, java Introduction to Static Variables and Methods The static keyword in Java is a modifier that makes a member of a class independent of the instances of that class. In other words, the static modifier is used to define variables and methods related to the class as a whole, rather than to an instance (object) of the class. Hence, static variables are often called class variables, while static methods are commonly referred to as class methods. Class variables and methods are stored in fixed locations in memory and are accessed without a reference to an object, directly through the class name itself . A common use for static methods is to access static variables. However, not all combinations of instance and class variables and methods are allowed. Namely, static methods can only use static variables and call static methods—they cannot access instance variables or methods directly, without an object reference. This is because instance variables and methods are always tied to a specific instance, i. e. , object of their class. Due to their instance-less nature, static variables and methods are sometimes used to construct stateless utility classes   Non-static Variable X Cannot be Referenced from a Static Context & Non-static Method X Cannot be Referenced from a Static Context A static variable is initialized once, when its class is loaded into memory, and its value is shared among all instances of that class. On the other hand, a non-static variable is initialized every time a new instance of its class... --- - [Launch and initial funding](https://rollbar.com/blog/launch-and-initial-funding/): Today we’re excited to announce the public launch of Rollbar. Rollbar tracks and analyzes errors in production applications, helping dev... - [Upgrading to the new Rollbar notifier libraries](https://rollbar.com/blog/upgrading-to-the-new-rollbar-notifier-libraries/): We’ve updated all of our notifier library repositories to match the name change to Rollbar today. The old Ratchet. io... - [Real-time Search for Exceptions and Errors](https://rollbar.com/blog/real-time-search-for-exceptions-and-errors/): We’re happy today to announce the release of real-time search. You can now search your exceptions, errors, and log messages... ### Home > Rollbar provides real-time error tracking & debugging tools for developers. ✓ JavaScript ✓PHP ✓Ruby ✓Python ✓Java ✓Android ✓iOS ✓.NET & more. - Published: 2021-03-30 - Modified: 2024-04-10 - URL: https://rollbar.com/ --- ### E_ERRORs in PHP: What You Need to Know > PHP E_ERRORs occures when a major, irrecoverable issue arises during runtime. Lesser errors are recoverable and PHP would continue to run. - Published: 2021-12-07 - Modified: 2022-12-12 - URL: https://rollbar.com/blog/e_errors-in-php/ - Categories: Code Tutorials, PHP - Tags: PHP What is E_ERROR? PHP’s E_ERROR typically indicates a major issue with PHP. Normally, PHP may be able to recover from a lesser error and the PHP application could continue to run. However, with E_ERROR, PHP will usually outright fail and stop working entirely.   What causes E_ERROR? Several factors can cause an E_ERROR to occur. The examples below are generalized to get the point across regardless of which version of PHP you are using.   Wrong Type You may, for example, have a function definition which is called or used incorrectly. function my_function (a_value: String) { echo a_value; } my_function(123); In the example above, you would receive an E_ERROR related to the fact that you are using an integer when a string is expected.   Parsing Errors You may also have parsing errors that cause E_ERROR to show up such as a missing semicolon or an unexpected character. Here is an example: function my_function (a_value: String) { echo a_value }) my_function(123); Note how there’s a missing semicolon after “echo a_value” and there’s an extra bracket at the end of the curly function bracket. Both (or just one of these) would cause an error.   Calling an Undefined Function You may also be calling an undefined function. For example, if you simply call “my_function” without ever first declaring it, you will get this error. Or you may have a dependency chain failure wherein your function definition is run later on in the code, after you’ve called it, although this tends to... --- - [Using a Request Factory in Pyramid to write a little less code](https://rollbar.com/blog/using-a-request-factory-in-pyramid-to-write-a-little-less-code/): At Rollbar. com, we’ve been using Pyramid as our web framework and have been pretty happy with it. It’s lightweight... ### Security - Published: 2021-02-17 - Modified: 2022-08-09 - URL: https://rollbar.com/security/ Who we are Our website address is: https://rollbar. wpengine. com. What personal data we collect and why we collect it Comments When visitors leave comments on the site we collect the data shown in the comments form, and also the visitor’s IP address and browser user agent string to help spam detection. An anonymized string created from your email address (also called a hash) may be provided to the Gravatar service to see if you are using it. The Gravatar service privacy policy is available here: https://automattic. com/privacy/. After approval of your comment, your profile picture is visible to the public in the context of your comment. Media If you upload images to the website, you should avoid uploading images with embedded location data (EXIF GPS) included. Visitors to the website can download and extract any location data from images on the website. Contact forms Cookies If you leave a comment on our site you may opt-in to saving your name, email address and website in cookies. These are for your convenience so that you do not have to fill in your details again when you leave another comment. These cookies will last for one year. If you visit our login page, we will set a temporary cookie to determine if your browser accepts cookies. This cookie contains no personal data and is discarded when you close your browser. When you log in, we will also set up several cookies to save your login information and your screen display choices.... --- ## Posts - [Writing a simple deploy script with Fabric and @roles](https://rollbar.com/blog/writing-a-simple-deploy-script-with-fabric-and-roles/): I first heard about Fabric a couple years ago while at Lolapps and liked the idea of: writing deployment and... ## Guides ### Resolving TypeError: "X" is Not a Constructor in JavaScript > JavaScript "TypeError: "x" is not a constructor" errors occur when invalid objects or a variable is erroneously used as a constructor. - Published: 2021-12-07 - Modified: 2022-12-12 - URL: https://rollbar.com/blog/javascript-typeerror-x-is-not-a-constructor/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript What is a Constructor in JavaScript? A constructor is a special function that creates and initializes an object instance of a class. In JavaScript, a constructor gets called when an object is created using the new keyword. The purpose of a constructor is to create a new object and set values for any existing object properties.   What Happens When a Constructor Gets Called? When a constructor gets invoked in JavaScript, the following sequence of operations take place: A new empty object gets created. The this keyword begins to refer to the new object and it becomes the current instance object. The new object is then returned as the return value of the constructor.   JavaScript Constructor Examples Here’s a few examples of constructors in JavaScript: Using the "this" Keyword When the this keyword is used in a constructor, it refers to the newly created object: //Constructor function User { this. name = 'Bob'; } var user = new User;   Create Multiple Objects In JavaScript, multiple objects can be created in a constructor: //Constructor function User { this. name = 'Bob'; } var user1 = new User; var user2 = new User; In the above example, two objects are created using the same constructor.   Constructor with Parameters A constructor can also have parameters: //Constructor function User (name, age) { this. name = name; this. age = age; } var user1 = new User('Bob', 25); var user2 = new User('Alice', 27); In the above example, arguments are passed to... --- ### JavaScript Constructors: What You Need to Know > JavaScript constructors are special functions that creates and initializes an object instance of a class when created using the "new" keyword. - Published: 2021-12-06 - Modified: 2022-12-12 - URL: https://rollbar.com/blog/javascript-constructors/ - Categories: topics - Tags: JavaScript What is a Constructor in JavaScript? A constructor is a special function that creates and initializes an object instance of a class. In JavaScript, a constructor gets called when an object is created using the new keyword. The purpose of a constructor is to create a new object and set values for any existing object properties.   What Happens When A Constructor Gets Called? When a constructor gets invoked in JavaScript, the following sequence of operations take place: A new empty object gets created. The this keyword begins to refer to the new object and it becomes the current instance object. The new object is then returned as the return value of the constructor.   JavaScript Constructor Examples Here’s a few examples of constructors in JavaScript: Using the "this" Keyword When the this keyword is used in a constructor, it refers to the newly created object: //Constructor function User { this. name = 'Bob'; } var user = new User;   Create Multiple Objects In JavaScript, multiple objects can be created in a constructor: //Constructor function User { this. name = 'Bob'; } var user1 = new User; var user2 = new User; In the above example, two objects are created using the same constructor.   Constructor with Parameters A constructor can also have parameters: //Constructor function User (name, age) { this. name = name; this. age = age; } var user1 = new User('Bob', 25); var user2 = new User('Alice', 27); In the above example, arguments are passed to... --- - [What is Error Logging in C++](https://rollbar.com/guides/cpp/cpp-error-logging/): Error logs can be a life-saver. Learn how to create an error logging class in C++ to track errors, warnings, and status messages in runtime. ### Introducing Adaptive Alerts: Detect application-level error trends > Adaptive Alerts is a new feature from Rollbar that adds to our reliable, informative and actionable alerts about unexpected issues in monitored applications and services. Adaptive Alerts uses anomaly detection to learn the standard behavior of enterprise applications, and alerts developers about atypical exception rates, reducing unwanted noise. - Published: 2021-12-02 - Modified: 2022-07-23 - URL: https://rollbar.com/blog/introducing-adaptive-alerts-detect-application-level-trends-with-greater-accuracy/ - Categories: product - Tags: adaptive alerts Adaptive Alerts is a new feature from Rollbar that adds to our reliable, informative and actionable alerts about unexpected issues in monitored applications and services. Adaptive Alerts uses anomaly detection to learn the baseline rates of various error types in your production applications, and alerts developers about atypical exception rates. When Errors Become More Active Production applications often have a large number of unique errors that are open, but not a priority to fix as long as they occur at a low rate. Developers and SREs want to know when such errors become more active than usual, so that they can resolve them if needed. But alerts based on fixed error thresholds generate too much noise and waste valuable developer time. Brian Rue, our CEO and co-founder says, “Error alerting is important, but historically developers have had to deal with a lot of noise. Adaptive Alerts is the next generation of trendline alerting in Rollbar. Compared to the previous generation, which Rollbar customers know as the 10^nth Occurrence and High Occurrence Rate, Adaptive Alerts sends 86% fewer notifications, thanks to automatically adjusting thresholds, and a broader exception-level view that effectively detects application-level trends. ” Training and Anomaly Detection The Rollbar algorithm is continuously trained using two weeks of historical data for each product/application. After analyzing a project’s historical data, Adaptive Alerts determines a baseline, monitors the exceptions rate continuously, and sends an alert within minutes when it detects something significant. Users can adjust the minimum exception rate to alert and... --- - [Error Debugging in C++ with VS Code](https://rollbar.com/guides/cpp/cpp-debugging-with-vs-code/): Learn how to debug using the C/C++ extension for VS Code with advanced features like breakpoints, tracking variable values, and stepping. - [How to Handle Exceptions in C++](https://rollbar.com/guides/cpp/how-to-handle-exceptions-in-cpp/): C++ exceptions provide a well-defined way for detecting errors and passing the information up the call stack. - [How to Throw Exceptions in Flutter](https://rollbar.com/guides/flutter/how-to-throw-exceptions-in-flutter/): Exception in Flutter can be thrown using try, catch and finally blocks when an unexpected issue occurs when executing a program. ### How to Resolve The Cannot Find Symbol Error in Java > The cannot find symbol error refers to a situation where the Java compiler is unable to find the symbol associated with a given identifier. - Published: 2021-11-25 - Modified: 2025-03-17 - URL: https://rollbar.com/blog/how-to-resolve-the-cannot-find-symbol-error-in-java/ - Categories: Code Tutorials, Java - Tags: error-handling, error-monitoring, java Introduction to Symbol Tables Symbol tables are an important data structure created and maintained by compilers to store information associated with identifiers in a given source code. This information is entered into the symbol tables during lexical and syntax analysis and is used in the later phases of compilation. As the declarations of classes, interfaces, variables, and methods are processed, their identifiers are bound to corresponding entries in the symbol tables. When uses of these identifiers are encountered in the source code, the compiler looks them up in the symbol tables and relies on this information for things such as verifying that a variable has been declared, determining the scope of a variable, and verifying that an expression is semantically correct with type checking. Symbol tables are also used for code generation and optimization . A simplified representation of a symbol table entry (or simply, a symbol) in Java has the following format: . Given a global variable declaration like final double ratio; the corresponding symbol would then be . Install the Java SDK to identify and fix exceptions Cannot Find Symbol Error As its name implies, the cannot find symbol error refers to a symbol which cannot be found. While there are multiple ways and reasons this can occur, they all boil down to the fact that the Java compiler is unable to find the symbol associated with a given identifier. The message produced by the compiler for the cannot find symbol error includes two additional fields: “symbol”—the name... --- - [How to Debug PHP Errors](https://rollbar.com/guides/php/how-to-debug-php-errors/): Most PHP error reports are vague, and identifying the underlying causes can be difficult. Learn the common steps towards pinpointing and resolving PHP errors that crop up in production. - [Where are Ruby Errors Logged?](https://rollbar.com/guides/ruby/where-are-ruby-errors-logged/): This simple guide explains where Ruby logs are located, how to configure logging, and why error monitoring tools like Rollbar make debugging even faster. ### How to Handle the <Identifier> Expected Error in Java > The expected error in Java occurs when an expression statement is written outside of a constructor/method/instance initialization block. - Published: 2021-11-22 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/how-to-handle-the-identifier-expected-error-in-java/ - Categories: Code Tutorials, Java - Tags: java Introduction to Identifiers By definition, an identifier in Java is a sequence of one or more characters, where the first character must be a valid first character (letter, $, _) and each subsequent character in the sequence must be a valid non-first character (letter, digit, $, _). An identifier can be used to name a package, a class, an interface, a method, a variable, etc. An identifier may contain letters and digits from the entire Unicode character set, which supports most writing scripts in use in the world today, including the large sets for Chinese, Japanese, and Korean. This allows programmers to use identifiers in programs written in their native languages .   Identifier Expected Error: What It Is & What Triggers It The initial phase of the Java compilation process involves lexical analysis of the source code. The compiler reads the input code as a stream of characters and categorizes them into lexemes of tokens, before proceeding to parse the tokens into a syntax tree. Here is where all tokens, including identifiers, are being checked against a predefined set of grammar rules. When the compiler reaches a point where, according to these rules, an identifier is expected to appear but something else is found instead, it raises the expected error, where the angle brackets denote a reference to a token object . The expected error is a very common Java compile-time error faced by novice programmers and people starting to learn the language. This error typically occurs when an... --- - [How to Raise Exceptions in Ruby](https://rollbar.com/guides/ruby/how-to-raise-exceptions-in-ruby/): It's not enough to raise exceptions in Ruby. You need to raise exceptions effectively. Here's how to create a human-readable—and diagnosable—exception object. - [How to Handle Exceptions in Ruby](https://rollbar.com/guides/ruby/how-to-handle-exceptions-in-ruby/): The simple guide to exception handling in Ruby. ✓ Harden your app against unexpected errors ✓ Respond more effectively ✓ Adapt to any issue that may arise. ### Spring vs. Spring Boot: Whats the Difference > Spring Boot was introduced as a Spring Framework as the latter has become increasingly complex because of added functionalities. - Published: 2021-11-16 - Modified: 2022-05-03 - URL: https://rollbar.com/blog/spring-vs-spring-boot-whats-the-difference/ - Categories: topics - Tags: java, spring, spring boot Spring vs. Spring Boot Spring is the most popular application development framework in Java. However, over the past few years, Spring has become increasingly complex because of added functionalities. Starting a new project usually requires going through a lengthy process and takes a lot of time. To avoid starting from scratch and to save time, Spring Boot was introduced. Spring Boot uses Spring as its foundation layer and allows developers to build a standalone application with none or minimal configuration. It is targeted specifically towards building web applications and microservices.   What is Spring? Spring is a lightweight open-source Java development framework. It provides a comprehensive programming and configuration model for developing enterprise level Java applications. It aims to simplify enterprise Java development and helps developers build applications more effectively and efficiently. Spring focuses on several areas of application development and provides a wide range of features.   Spring Main Features One of the major features of Spring is dependency injection, which allows developing loosely coupled applications. It also includes the following modules out of the box: Spring MVC Spring JDBC Spring Web Flow Spring Security Spring ORM Spring AOP Spring Test These modules offer better functionalities for web applications and drastically reduce development time.   Spring Use Cases Some of the tasks that can be performed using Spring are: Building serverless applications Creating scalable microservices Ensuring top-notch server-side security Building asynchronous applications Creating batches to automate tasks Event driven architecture   Benefits of Spring Can be used for all... --- - [How to Debug Ruby Errors](https://rollbar.com/guides/ruby/how-to-debug-ruby-errors/): Most Ruby error reports are vague, and identifying the underlying causes can be difficult. Learn the common steps towards pinpointing and resolving Ruby errors that crop up in production. - [Where are PHP Errors Logged?](https://rollbar.com/guides/php/where-are-php-errors-logged/): This simple guide explains where PHP logs are located, how to configure logging, and why error monitoring tools like Rollbar make debugging even faster. - [How to Throw Exceptions in PHP](https://rollbar.com/guides/php/how-to-throw-exceptions-in-php/): It's not enough to throw exceptions in PHP. You need to throw exceptions effectively. Here's how to create a human-readable—and diagnosable—exception object. ### How to Fix Unreachable Statement Errors in Java > The “Unreachable Statement” error in Java arises when the compiler detects a statement that's never executable in the program's control flow. - Published: 2021-11-15 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/handling-the-unreachable-statement-error-in-java/ - Categories: Code Tutorials, Java - Tags: java Introduction to Statements and Compile-time Errors in Java Statements are foundational language constructs that have an effect on the execution of a program. Statements are similar to sentences in natural languages. In Java, there are three main types of statements, namely expression statements, declaration statements, and control-flow statements . As a compiled programming language, Java has an inbuilt mechanism for preventing many source code errors from winding up in executable programs and surfacing in production environments . One such error, related to statements, is the unreachable statement error.   What Causes the Unreachable Statement Error? By performing semantic data flow analysis, the Java compiler checks that every statement is reachable and makes sure that there exists an execution path from the beginning of a constructor, method, instance initializer, or static initializer that contains the statement, to the statement itself. If it finds a statement for which there is no such path, the compiler raises the unreachable statement error .   Unreachable Statement Error Examples After a branching control-flow statement The break, continue, and return branching statements allow the flow of execution to jump to a different part of the program. The break statement allows breaking out of a loop, the continue statement skips the current iteration of a loop, and the return statement exits a method and returns the execution flow to where the method was invoked . Any statement that follows immediately after a branching statement is, by default, unreachable. After break When the code in Fig. 1(a) is... --- - [How to Handle Exceptions in PHP](https://rollbar.com/guides/php/how-to-handle-exceptions-in-php/): The simple guide to exception handling in PHP. ✓ Harden your app against unexpected errors ✓ Respond more effectively ✓ Adapt to any issue that may arise. - [How to Handle Exceptions in .NET](https://rollbar.com/guides/dotnet/how-to-handle-exceptions-in-net/): The simple guide to exception handling in .NET ✓ Harden your app against unexpected errors ✓ Respond more effectively ✓ Adapt to any issue that may arise. ### Coding Java Applications the Serverless Way > Advantages, disadvantages, and use cases of going serverless with Java. Build ✓on-demand, ✓high-availability apps without tedious server management! - Published: 2021-11-08 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/guide-to-going-serverless-with-java/ - Categories: Code Tutorials, Java - Tags: java, serverless j What is Serverless Java? Serverless Java applications use modern cloud computing to let developers focus on business logic rather than infrastructure. In a serverless environment, the infrastructure provider takes care of scaling, runtimes, resource management, security and other specifics. Concerns such as number of instances to run and which OS to use are managed by Function as a Service (FaaS) platforms, allowing developers to focus on application code. A serverless Java setup allows developers to build and run applications on-demand, guaranteeing high availability without having to manage servers themselves. Servers still exist behind the scenes, but they are abstracted away from application development.   Serverless Application Characteristics Serverless applications have a number of specific properties, including the following: Event-driven execution using triggers Resource management handled by the platform including starting, stopping and scaling Scales down to zero, with no or low cost when idle Stateless A serverless Java architecture is simple to comprehend. Developers write code that performs certain operations and trigger execution in response to an event. These events could be generated by the system or the end-user. As an example, in AWS, API Gateway can be used to handle HTTP requests, Lambda to handle business logic and RedShift to store data.   Advantages of Serverless with Java Serverless applications offer the following advantages: Simple delivery - Using cloud services to build a Java application and writing the smallest possible amount of code is quite an effective and attractive model. Developers are relieved from having to create boilerplate,... --- - [Where are JavaScript Errors Logged?](https://rollbar.com/guides/javascript/where-are-javascript-errors-logged/): This simple guide explains where JavaScript logs are located, how to configure logging, and why error monitoring tools like Rollbar make debugging even faster. - [How to Throw Exceptions in JavaScript](https://rollbar.com/guides/javascript/how-to-throw-exceptions-in-javascript/): It's not enough to throw exceptions in JavaScript. You need to throw exceptions effectively. Here's how to create a human-readable—and diagnosable—exception object. ### What Are Cloud Native Java Applications & Architectures > Cloud-native Java is an approach to building and running a Java application that provides organizations with greater elasticity, resiliency, and portability. - Published: 2021-11-03 - Modified: 2022-06-23 - URL: https://rollbar.com/blog/what-is-cloud-native-java/ - Categories: topics - Tags: cloud native, java   What is Cloud Native Java Cloud-native has been one of the biggest trends in software development for quite a while. Developing, deploying and managing applications outside of local machines and entirely in the cloud offers countless opportunities to businesses. The cloud computing delivery model helps them bring new ideas to market faster and respond swiftly to customer requests. From a technical point of view, cloud-native development provides faster and lighter runtimes, reduces complexity and stabilizes applications. It provides distributed application architecture with elasticity and resilience that allows businesses to adapt quickly to ever-changing needs. Businesses that use Java to build cloud-native applications are major beneficiaries of this approach due to its popularity, consistency, reliability and scalability. Java concepts like containers, JVM optimizations, multi-purpose frameworks and native image technology offer further advantages. In this article, an introduction is provided into cloud-native development using Java, as well as the useful tools, components and approaches of cloud-native Java.   Key Components of Cloud Native Applications Cloud-native methodology incorporates the following architecture principles: Microservices: A microservice is a small, individual application that can be deployed, upgraded, scaled and restarted independently of other applications. A microservices architecture is a set of loosely coupled elements that run independently, each executing its own business logic, running its own process and communicating with other services via APIs or messaging. Microservices are lightweight compared to monolithic architectures and are great for building clean interfaces. Containers: Containers are an alternative to virtual machines (VMs) - leveraging a separate and... --- - [How to Handle Exceptions in JavaScript](https://rollbar.com/guides/javascript/how-to-handle-exceptions-in-javascript/): A simple guide to exception handling in JavaScript. ✓ Harden your app against unexpected errors ✓ Respond more effectively ✓ Adapt to any issue that may arise. - [How to Debug JavaScript Errors](https://rollbar.com/guides/javascript/how-to-debug-javascript-errors/): Identifying the underlying causes of most JavaScript errors can be difficult. Learn the common steps towards pinpointing and resolving JavaScript errors. ### Quarkus vs Spring Boot: Which Framework is Right for You > If you’re vacillating between the extremely popular Quarkus and Spring Boot microservices frameworks for building cloud-native Java apps, we’re here to help. - Published: 2021-11-01 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/quarkus-vs-spring-boot/ - Categories: Code Tutorials, Java - Tags: frameworks, spring In modern application architecture and development, there has been a push from monolithic applications towards microservices. This has made microservices frameworks (micro-frameworks) very popular since they make it easier to prototype, design and build microservices applications. Spring Boot and Quarkus are both very popular microservices frameworks for building cloud native Java applications. In this article, several features of Spring Boot and Quarkus will be discussed such as core capabilities, memory consumption, ease of development and performance to help developers decide which one to pick for building their application. What is Quarkus? Quarkus is a Kubernetes native Java framework for developing and delivering small artefacts and is an effective platform for serverless, cloud-native environments. Quarkus is similar to Spring Boot but with an additional promise of faster boot times, lower request times and offers developers a unified reactive and imperative programming model to address a broad range of distributed application architectures optimally. Quarkus is designed to work with popular Java frameworks, libraries and environments such as Eclipse Microprofile, Spring, Kafka and Hibernate. Quarkus provides dependency injection and is an extensive framework to set-up, boot and integrate applications. Quarkus Pros and Cons Some of the pros and cons of Quarkus are listed below: Pros: Lots of simple documentation is available on the web since it has several communities to help developers. The application boot time is much faster with Quarkus compared to other frameworks such as Spring Boot. This is because of the build-time metadata processing mechanism and the fact that standalone... --- - [Where are Java Errors Logged?](https://rollbar.com/guides/java/where-are-java-errors-logged/): This simple guide explains where Java logs are located, how to configure logging, and why error monitoring tools like Rollbar make debugging even faster. - [How to Throw Exceptions in Java](https://rollbar.com/guides/java/how-to-throw-exceptions-in-java/): It's not enough to throw exceptions in Java. You need to throw exceptions effectively. Here's how to create a human-readable—and diagnosable—exception object. - [How to Handle Exceptions in Java](https://rollbar.com/guides/java/how-to-handle-exceptions-in-java/): The simple guide to exception handling in Java. ✓ Harden your app against unexpected errors ✓ Respond more effectively ✓ Adapt to any issue that may arise. ### Scary Developer Stories to Tell in The Dark > We've all heard developer horror stories. Here are some that you submitted to Rollbar. Make sure to turn on the light and read on with caution! - Published: 2021-10-27 - Modified: 2022-05-03 - URL: https://rollbar.com/blog/developer-horror-stories-2021/ - Categories: topics - Tags: error-handling Twas the night of production, and all through the server, all the bugs were stirring... We've all heard the developer horror stories or have had our fair share of shocking experiences as a developer tackling an unfortunate event. To keep up with the Halloween season, we wanted to hear some of the spooky encounters that developers dealt with. Here are some of the stories that you submitted to Rollbar. Make sure to turn on the light and read with caution! 1. A Nightmare in Production "I learned the hard way never to use the “latest” tag for Docker images in production. One of my projects used a base image from an open source project that packaged an optical character recognition (OCR) model. I used the latest tag and my Continuous Delivery process would build the image from the ground up, whereas my local dev environment kept using its cache of the base image. This was fine for a year, but then the pandemic started and suddenly that open source project was on fire — causing major updates to the image every 12 hours. Things started changing too fast and the inevitable incompatibility with my code happened about a week in when my CD process merged my code with an incompatible update to the image. " - Anonymous Developer at Transport Company 2. "Psycho" "I'm most frightened by bugs for which the development environment behaves entirely differently than production, so I'll tell you one of those. One time, I had to... --- - [How to Debug Java Errors](https://rollbar.com/guides/java/how-to-debug-java-errors/): Most Java error reports are vague, and identifying the underlying causes can be difficult. Learn the common steps towards pinpointing and resolving Java errors that crop up in production. - [Where are .NET Errors Logged?](https://rollbar.com/guides/dotnet/where-are-net-errors-logged/): This simple guide explains where .NET logs are located, how to configure logging, and why error monitoring tools like Rollbar make debugging even faster. ### How to Throw & Handle Scala Exceptions > Here's how to respond to and investigate the cause of exceptions in Scala: 1. Try/Catch → 2. Finally Clauses → 3. Custom Exceptions. - Published: 2021-10-21 - Modified: 2022-11-28 - URL: https://rollbar.com/blog/how-to-throw-handle-scala-exceptions/ - Categories: Code Tutorials, Scala - Tags: Scala An exception is an unwanted or unexpected event that occurs during the execution of a program which changes its normal flow. Exception handling is the mechanism to respond to and investigate the occurrence and cause of an exception. Generally, exceptions are of two types - checked and unchecked. Scala only allows unchecked exceptions - this means that there is no way to know if a method throws an unhandled exception at compile-time It is best practice in Scala to handle exceptions using a try{... } catch{... } block, similar to how it is used in Java, except that the catch block uses pattern matching to identify and handle exceptions.   Scala Exceptions Hierarchy All exception and error types in Scala are subclasses of the Throwable class, the base class of the Scala exception hierarchy: Fig1: Scala Exceptions Hierarchy As evident from the diagram shown above, one branch of the hierarchy under Throwable is headed by Exception, which is the class used for exceptional conditions that programs should catch. An example of an exception is NullPointerException. Another branch is Error, which is used by the Java Virtual Machine (JVM) to indicate errors that are related to the Java runtime environment itself (JRE). An example of an error is StackOverflowError.   Throwing Exceptions in Scala Throwing exceptions in Scala is very similar to how it's done in Java. An exception object is created and thrown using the throw keyword. Here is an example: throw new IllegalArgumentException   Scala try/catch Construct Scala allows... --- - [How to Debug .NET Errors](https://rollbar.com/guides/dotnet/how-to-debug-net-errors/): Most .NET error reports are vague, and identifying the underlying causes can be difficult. Learn the common steps towards pinpointing and resolving .NET errors that crop up in production. - [How to Throw Exceptions in .NET](https://rollbar.com/guides/dotnet/how-to-throw-exceptions-in-net/): It's not enough to throw exceptions in .NET. You need to throw exceptions effectively. Here's how to create a human-readable—and diagnosable—exception object. ## KB Posts ### 6 Ways Artificial Intelligence Improves Software Development - Published: 2021-09-20 - Modified: 2021-09-30 - URL: https://rollbar.com/blog/6-ways-artificial-intelligence-improves-software-development/ - Categories: topics Artificial intelligence is transforming software development. From the code to the deployment, AI is slowly but surely upping its game and helping us discover a brand new paradigm for inventing technology. Algorithm-based machine learning is being used to accelerate the software development lifecycle and AI is supporting developers to optimize software workflow at every stage of the development process. We can expect big things in the future as AI brings in disruptive developments for software developers. As AI redefines how developers work and how their codeis built and managed, the industry should improve in leaps and bounds in terms of productivity, quality, and speed. Artificial intelligence is a term for computer systems that can perform tasks that require human intelligence and discernment, like the ability to reason, perceive, and generalize. The computer should be able to sense its environment and take action according to what it learns. AI algorithms can improve project planning, aid with automation QA (quality assurance), and enhance user experience. A recent report found that AI-enhanced software development increased the productivity of a developer by 10 times. Here are some ways AI can power your software development and deployment processes by automating various cognitive and physical tasks. 1. Increase in the Speed and Scale of Development How DevOps will change once AI is rooted within every part of it can be judged by key aspects of software delivery performance. Deployment frequency, lead time for changes, and time to restore service are all key performance indicators that are... --- ### What is the Quickest Way to Show All PHP Errors > Viewing PHP errors is critical for developers to troubleshoot an application. Learn how to show all PHP errors and warning notifications. - Published: 2021-09-16 - Modified: 2022-12-12 - URL: https://rollbar.com/blog/what-is-the-quickest-way-to-show-all-php-errors/ - Categories: Code Tutorials, PHP - Tags: PHP A PHP application may produce many different levels of errors and warnings when executed. Viewing these errors is critical for developers to troubleshoot an application. However, difficulties are often encountered when trying to display errors from PHP applications, which often fail silently. Quickest Way to Show All PHP Errors Adding the following lines to your PHP code is the quickest way to show all PHP errors and warnings: ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL); The above functions are directives work as follows: ini_set The ini_set function tries to override the configuration found in the PHP . ini file. display_errors The display_errors is a directive that determines whether the errors will be shown to the user or remain hidden. This should usually be disabled after development. display_startup_errors The display_startup_errors is also a directive, which is used to find the errors encountered during the PHP startup sequence. This is a separate directive because the display_errors directive does not handle such errors. Unfortunately, the display_errors and display_startup_errors directives do not show parse errors such as missing semicolons or curly braces. The PHP ini configuration must be modified to achieve this. error_reporting The error_reporting is a native PHP function that is used to show errors. This function can be used to report all types of errors in the PHP script. For that, the named constant E_ALL is used as the argument in the function. Configure PHP. ini to Display All Errors and Warnings If adding the above functions and directives does not show all errors,... --- - [Error Grouping Best Practices](https://rollbar.com/knowledge-base/error-grouping-best-practices/): Why error grouping is important Without grouping, error monitoring and error logs churn out a massive list of unsorted errors... ### .NET Error Logging Best Practices > Following .Net error logging best practices helps make sure they contain the right information when needed. - Published: 2021-08-25 - Modified: 2022-12-15 - URL: https://rollbar.com/blog/dotnet-error-logging-best-practices/ - Categories: .NET, Code Tutorials - Tags: dotnet Following best practices when logging helps make sure they contain the right information when needed. Some common best practices for logging errors in . NET are listed below: Install the DotNET SDK for fast error logging 1. Use a Third Party . NET Logging Library Logging frameworks in . NET such as NLog, Log4Net and Serilog provide high level APIs and handle the heavy lifting involved with logging errors. This helps developers use a field-tested option and not reinvent the wheel. Choosing the right library for . NET frameworks depends on the application architecture but these libraries are quite similar in functionality at a high level. 2. Using . NET Logging Levels Logging frameworks associate a log level to each message by default. The levels are usually - DEBUG, INFO, WARN, ERROR and FATAL. These levels are useful for conveying the kind of information being logged. ERROR indicates that an . NET error occurred in the application. Usually, ERROR messages should be logged when exceptions are caught. FATAL generally indicates that a major irrecoverable . NET error occurred that requires termination of the application. 3. Enabling Appropriate Log Levels in Production In a development or test environment, all . NET log messages of DEBUG level and above are useful and can be enabled for analysis. However, in production, only high-severity logs should be enabled. Usually, DEBUG and INFO levels should not be enabled - only WARN/ERROR and above. This helps improve performance, reduce storage and ensure more important . NET... --- - [How Rollbar helps ensure Low-Risk Releases](https://rollbar.com/knowledge-base/how-rollbar-helps-ensure-low-risk-releases/): Pain points You need to get ideas out quickly and with confidence, but releases are inherently risky. The first minutes... - [Rollbar as a tool for DevOps Teams](https://rollbar.com/knowledge-base/rollbar-as-a-tool-for-devops-teams/): DevOps monitoring & troubleshooting is a complex process. There are many different places where failures can occur, and it is up to you as an engineer to diagnose and address these problems. Fortunately, Rollbar can help DevOps teams by providing better alerting signal and a new starting point for your investigations. - [Manage Rollbar automatically through the Rollbar Terraform Provider](https://rollbar.com/knowledge-base/manage-rollbar-automatically-through-the-rollbar-terraform-provider/): Terraform Provider is available for Rollbar Accounts The Rollbar account administration is critical to get the most out of Rollbar... ### Monolithic vs Microservices Architecture > We look at the key differences between using a monolithic and microservices architecture as well as their inherent strengths and weaknesses. - Published: 2021-08-13 - Modified: 2022-06-21 - URL: https://rollbar.com/blog/monolithic-vs-microservices-architecture/ - Categories: topics - Tags: business-impact Microservices are an accelerating trend thanks to rousing endorsements from the likes of Google, Netflix, and Amazon. The microservice architecture is advantageous for it’s scalability, agility and flexibility. In contrast, the monolithic approach is the traditional tried-and-true model for building software. It’s much easier to debug and test. But how do you know which approach is best for your organization? In this article, we look at the key differences between using a monolithic and microservices architecture as well as their inherent strengths and weaknesses. What is a Monolithic Architecture? The monolithic architecture is considered to be the traditional way of building an application. A monolithic application is usually built as a single unit and indivisible unit, generally comprising of the following layers: A database, usually an RDBMS (relational database management system), that consists of many tables. A server-side application that handles and serves client-side requests, retrieves and stores data from/to the database and executes business logic. A client-side UI (User Interface) that generally consists of HTML and/or Javascript pages running on a browser. The above layers group together to form a single logical executable. A monolithic application usually has one large codebase and lacks modularity. If any updates are needed in the system, developers must build and deploy the entire stack at once. What is a Microservices Architecture? The microservices architecture breaks down an application into a collection of smaller independent units. These units carry out application processes as separate services, each of which perform specific functions and have their... --- - [Finding items by UUID](https://rollbar.com/knowledge-base/finding-items-by-uuid/): UUID in general A universally unique identifier (UUID) is a 128-bit number used to identify information in computer systems. When... - [Using Zapier to create Zendesk tickets](https://rollbar.com/knowledge-base/using-zapier-to-create-zendesk-tickets/): Why use webhooks? Webhooks are a powerful tool to receive information from Rollbar and use in any other workflows you... ### How to Make a Build vs. Buy Decision for a Software Solution > Sourcing the perfect product for your engineering team? Buying software is often the answer, but there is a lot you need to consider first. - Published: 2021-08-04 - Modified: 2021-09-16 - URL: https://rollbar.com/blog/build-vs-buy-software-solution/ - Categories: topics - Tags: build vs buy Buying software is often the answer for busy engineering teams in search of a quick solution with minimum aftercare. But while your team may be sure of the problem, how do you go about searching for a product to fix it? Far from being the 'easy option', there is a lot you need to consider before you invest in a bought solution – user experience, cost comparisons, and support features to name a few. Let’s explore some of the considerations when making a good decision. What do you and your organization need to get out of this solution? Discuss and define the problem you need to solve clearly and its scope so that you don’t over or under shoot with your solution. It’s worthwhile to put in the time to make sure that you don’t get a solution that is not going to scale or adapt as your needs grow or change. Make sure the codebases, APIs, frameworks, and tools that the solution will need to work with are defined so that you have your bases covered. Sound out the wider team in case others are also looking for the same or a similar solution so that their requirements get included. How do you approach the topic with your team and the relevant engineering stakeholders? Ask your engineers on the team for their feedback and their experience with the problem and how they have dealt with it in the past. Ask what tools they’ve used or in what other creative... --- - [Rollbar Solutions: Enabling Support Teams](https://rollbar.com/knowledge-base/rollbar-solutions-enabling-support-teams/): Overview When your application surfaces bugs, it might put your Support team in a difficult position in understanding the impact... ### Automate Secure Access Management With Rollbar + Okta - Published: 2021-08-03 - Modified: 2023-01-25 - URL: https://rollbar.com/blog/automate-secure-access-management-with-rollbar-okta/ - Categories: product - Tags: access-management https://www. youtube. com/watch? v=RA6THYP5SgA&sub_confirmation=1 At Rollbar, we know security matters. Our customers represent the leading technology companies in the world today, and keeping their data secure is our top priority. Look no further than our investment in security and compliance. Rollbar is fully compliant with stringent industry standards like GDPR and HIPAA. We have also received ISO27001, SOC 2 Type 1, and Type 2 compliance certifications to ensure that even the most security-conscious companies can use our SaaS platform. We all agree that data privacy is an important part of security, so controlling access to your Rollbar account should matter too. Rollbar's integration with Okta ensures your account is more secure and simplifies your user and admin experience by automating Rollbar user lifecycle management. How Does Rollbar's Okta Integration Work? When you integrate Okta with Rollbar, you ensure only the right people access your Rollbar account by syncing Users and Groups in Okta with Users in Teams in Rollbar. When you assign a User to the Rollbar application in Okta, a user will be created in your Rollbar account. When she tries to access Rollbar for the first time, she will be prompted to log in via Okta and can seamlessly access the data she needs—no more asking "@here who can grant me access to our Rollbar account? " in Slack! When you assign a Group to the Rollbar application in Okta, a Team will be provisioned in your Rollbar account, and a Rollbar User will be created for each... --- - [Intelligent alerting helps you stay on top of critical errors and reduce noise in your notification channels](https://rollbar.com/knowledge-base/intelligent-alerting-helps-you-stay-on-top-of-critical-errors-and-reduce-noise-in-your-notification-channels/): Overview Discovering errors in a timely manner is crucial when it comes to fixing bugs in your product. Moreover, you... - [Introducing Automation-Grade Grouping](https://rollbar.com/knowledge-base/introducing-automation-grade-grouping/): Overview Proactively discover, predict, and remediate errors with Rollbar’s real-time, AI-assisted workflows! The foundation for these workflows is Automation-Grade Grouping... - [Reduce noise with the help of Slack notifications integration](https://rollbar.com/knowledge-base/reduce-noise-with-the-help-of-slack-notifications-integration/): Rollbar supports multiple messaging tools, where your team can get notified about errors and significant events. Integrating a messaging tool... - [Jira integration best practices](https://rollbar.com/knowledge-base/jira-integration-best-practices/): Perks of an issue tracking integration Save time and debug faster by integrating an issue tracking tool with your Rollbar... ### Improve Error Detection and Speed Up Resolution in Selenium Tests - Published: 2021-08-03 - Modified: 2021-09-16 - URL: https://rollbar.com/blog/improve-error-detection-and-speed-up-resolution-in-selenium-tests/ - Categories: Code Tutorials - Tags: Selenium Reducing errors in production is critical for all engineering teams. The earlier the error is detected, the cheaper it is to fix and the lower the impact it has on your development team and customer experience. The shift-left movement has pushed more and more of this test automation work on development teams even though the way to debug a failed test and find the root cause is still inefficient and time consuming for all developers. There is a better way to detect, identify and resolve errors in your applications when executing your automated testing suite. Developer Pain with Automated Tests Automated Test Report does not show the full error stack trace. Missing detail to understand and fix the root cause. Debug process is time consuming to re-run test script and debug locally. Reproducing errors is often inconsistent or impossible. Environment may lack exact data points and variables to accurately reproduce the error. What do we have to do today? Let’s look at a practical example of what most development teams do today. Imagine that we’ve run our automated test and some failure occurred. If you have a QA team your first question is; what failed? The QA team will point you to the test results of the failed test case or test suite. The test failure happens in most cases because of an assert that failed in the test case without any other information. Example Assert: Assert. assertNotEquals(Actual, Expected); Example Test Failure Report We can see the exact step that... --- - [Filter or Ignore Errors from Bots](https://rollbar.com/knowledge-base/filter-or-ignore-errors-from-bots/): Filter or Ignore Errors from Bots Rollbar provides a few ways to filter or ignore errors that happen in requests... ### Can Constructors Throw Exceptions in Java > The short answer is yes! Of course, properly implementing exceptions in your constructors is essential to getting the best results. Learn how here. - Published: 2021-07-30 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/can-constructors-throw-exceptions-in-java/ - Categories: Code Tutorials, Java - Tags: java A well-written Java constructor is a beautiful thing. Taking advantage of these special methods allows you to initialize an object with data when you instantiate it. Additionally, using constructors to their fullest can help you maintain clean, organized code. However, what happens if some of the data passed to the object through the constructor is invalid? Exception handling is the key. The short answer to the question “can a constructor throw an exception in Java” is yes! Of course, properly implementing exceptions in your constructors is essential to getting the best results and optimizing your code. To do so, it is valuable to understand constructors, exceptions, how they work together and best practices for using both. Java Constructors A constructor is a special method used to instantiate an object. The following is an example of a very simple constructor being called to create an object: ExClass newObject = new ExClass; The section “ExClass” is the constructor method. This is what the constructor definition may look like in the class: public class ExClass { public ExClass {} } The above example would be unnecessary because Java automatically creates a no-argument constructor for all classes that don’t have other constructors. Typically, if you define a constructor in a class, it is so that you can pass data to the object through parameters. This is an example of that: public class ExClass { private int value = 0; public ExClass(int valueInput){ value = valueInput; } } When you instantiate this class, you would... --- - [Unknown(Script Error)](https://rollbar.com/knowledge-base/unknownscript-error/): This happens when your JS code is hosted on a different domain (i. e. a CDN). To fix, set Access-Control-Allow-Origin:... - [Spot and prioritize production errors with Versions](https://rollbar.com/knowledge-base/spot-and-prioritize-production-errors-with-versions-2/): Overview Versions feature is available for our Advanced and Enterprise plan customers as a useful addition to Deploy tracking. This... ### How to Solve the Most Common Runtime Errors in Java > A runtime error in Java is an application error that occurs during the execution of a program. Learn how to solve the most common runtime errors in Java. - Published: 2021-07-29 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/most-common-java-runtime-errors/ - Categories: Code Tutorials, Java - Tags: java A runtime error in Java is an application error that occurs during the execution of a program. A runtime error occurs when a program is syntactically correct but contains an issue that is only detected during program execution. These issues cannot be caught at compile-time by the Java compiler and are only detected by the Java Virtual Machine (JVM) when the application is running. Runtime errors are a category of exception that contains several more specific error types. Some of the most common types of runtime errors are: IO errors Division by zero errors Out of range errors Undefined object errors Runtime Errors vs Compile-Time Errors Compile-time errors occur when there are syntactical issues present in application code, for example, missing semicolons or parentheses, misspelled keywords or usage of undeclared variables. These syntax errors are detected by the Java compiler at compile-time and an error message is displayed on the screen. The compiler prevents the code from being executed until the error is fixed. Therefore, these errors must be addressed by debugging before the program can be successfully run. On the other hand, runtime errors occur during program execution (the interpretation phase), after compilation has taken place. Any code that throws a runtime error is therefore syntactically correct. Runtime Errors vs Logical Errors A runtime error could potentially be a legitimate issue in code, for example, incorrectly formatted input data or lack of resources (e. g. insufficient memory or disk space). When a runtime error occurs in Java, the compiler... --- - [Send Log Messages to Rollbar](https://rollbar.com/knowledge-base/send-log-messages-to-rollbar/): You can send any log message to Rollbar, not just exceptions. This is especially helpful for client-side applications that don't... - [Reduce Noisy Javascript Errors](https://rollbar.com/knowledge-base/reduce-noisy-javascript-errors/): Ignore noisy errors on the client-side Rollbar. js enables you to ignore errors client-side if you wish. You can filter... ### Introducing the New Rollbar Integration for GitHub Enterprise Server > We’re excited to launch our new integration with GitHub that supports GitHub Enterprise Server customers. This allows companies using GitHub… - Published: 2021-07-28 - Modified: 2021-09-16 - URL: https://rollbar.com/blog/introducing-the-new-rollbar-integration-for-github-enterprise-server/ - Categories: product - Tags: integrations We’re excited to launch our new integration with GitHub that supports GitHub Enterprise Server customers. This allows companies using GitHub Enterprise on their own domains to access key features in Rollbar that help developers fix errors faster. GitHub Enterprise offers a fully integrated development platform for organizations to accelerate software innovation and secure delivery. With Rollbar, GitHub Enterprise Server customers can now access: Code-context with the exact line of code in the stack trace that caused an error Git blame information for the offending line of code directly within the Rollbar application Spend More Time Building, Less Time Fixing We believe that developers should be spending as much time as possible on building new features and less time fixing bugs. With expanded availability for GitHub Enterprise Server, enterprises can now reduce the time it takes them to resolve bugs and spend more time building and scaling software. Debug Faster With More Context Let’s dig a little deeper into the features to see how a developer might use them. Let’s say you get a notification for a new or reactivated error in Rollbar. To get to the root cause, you can go to the Traceback in the Item details page and see the exact line of the code that caused the error in each frame of the stack trace directly within the Rollbar UI. This is the ‘Code Context’ functionality that helps developers save time and see critical information instantly in Rollbar. Now, you may want to get more context on... --- - [Multiple Production Environments](https://rollbar.com/knowledge-base/multiple-production-environments/): Rollbar requires the environment property on all error occurrences to indicate where they occurred (production ,staging , qa , etc.... - [Keep an eye on your deploys with the help of Deploy Tracking](https://rollbar.com/knowledge-base/keep-an-eye-on-your-deploys-with-the-help-of-deploy-tracking-2/): Overview Nowadays, constant and fast deployment has become essential for your applications to keep up with the ever-changing needs of... ### Accelerating Code Quality with DORA Metrics > DORA metrics help DevOps teams make data-driven decisions to continuously improve practices, deliver software faster, and ensure that it remains reliable. - Published: 2021-07-24 - Modified: 2022-06-21 - URL: https://rollbar.com/blog/accelerating-code-quality-with-dora-metrics/ - Categories: topics - Tags: dora-metrics What do Google’s DevOps Research and Assessment (DORA) and Rollbar have to do with each other? DORA identified four key metrics to measure DevOps performance and identified four levels of DevOps performance from Low to Elite. One way for a team to become an Elite DevOps performer is by focusing on Continuous Code Improvement. What is DORA? The DevOps Research and Assessment (DORA) team is a Google research group that is best known for its work on measuring and understanding DevOps practices and capabilities across the IT industry. The group produced an annual State of Devops Report (2014-2019) as well as an ROI whitepaper providing insights into DevOps transformations. The DORA team identified four key metrics that indicate software development and delivery performance. To find out more about the findings we recommend reading a book called “Accelerate: The Science of Lean Software and Devops: Building and Scaling High Performing Technology Organizations” - co-authored by Nicole Forsgren who is a DORA team lead. What is Continuous Code Improvement? Continuous Code Improvement is an approach to maintaining and updating any software application that allows for faster deployments, fewer errors and quicker fixes to problems. Companies that follow this approach have a compact feedback loop to know when there's a code issue that needs to be fixed, fix it, and go back to writing and running code. The continuous code improvement feedback loops consists of: Visibility — real-time identification that there is an issue Grouping — recognizing error patterns to provide trustworthy signals... --- - [Jenkins](https://rollbar.com/knowledge-base/jenkins/): Tracking deployments in Jenkins will allow you to see new errors for each deployment, determine the deployment that is suspected... - [Transfer Projects Between Accounts](https://rollbar.com/knowledge-base/transfer-projects-between-accounts/): How to transfer Rollbar projects to another Rollbar Account. Includes Heroku and GitHub project transfers steps. ### Handling Node.js Exceptions > Debugging errors is the hardest part of programming. Errors can appear in your code in a variety of ways, whether as syntax errors, errors… - Published: 2021-07-23 - Modified: 2024-01-02 - URL: https://rollbar.com/blog/handling-node-js-exceptions/ - Categories: Code Tutorials, JavaScript - Tags: Node.js Debugging errors is the hardest part of programming. Errors can appear in your code in a variety of ways, whether as syntax errors, errors in logic, or the most dreaded of all, runtime errors. Runtime errors occur whenever something unexpected occurs in your application, and they often lead to catastrophic issues that can crash your program. Like many languages, Node. js provides a mechanism to anticipate errors before they occur. When an error occurs in your code, it turns into an object called an exception. Properly handling these exceptions allows you to recover gracefully from unforeseen issues, resulting in a much better user experience. In this post, we'll take a look at what causes these errors in Node. js, and how to recover from them. What can cause an error exception in Node. js? Runtime errors can occur in a variety of ways. One example includes referencing an undefined variable, or passing the wrong type to an argument. Other common Node. js errors include: EvalError: errors that occur within the global function eval RangeError: these errors occur when you attempt to access a variable outside its range, such as trying to get the fifth element of an array with only three items ReferenceError: these errors arise when you attempt to use a variable that doesn't exist SyntaxError: these errors come from invalid code TypeError: this occurs when you attempt to use a variable that is not a valid type URIError: this error occurs whenever encodeURI or decodeURI are given invalid... --- - [Personal vs. Organization Accounts](https://rollbar.com/knowledge-base/personal-vs-organization-accounts/): When you sign up for Rollbar, two separate but related things are created in our system: A user, which has... - [Billing in Rollbar](https://rollbar.com/knowledge-base/billing-in-rollbar/): For both monthly and annual plans, your account will have a billing cycle that starts on the day of the... ### How to Throw Exceptions in Python > This guide is the ultimate resource for Python developers who want to design, implement, and maintain applications that can deal with errors properly. - Published: 2021-07-23 - Modified: 2023-07-31 - URL: https://rollbar.com/blog/throwing-exceptions-in-python/ - Categories: Code Tutorials, Python - Tags: Python Introduction Software applications don’t run perfectly all the time. Despite intensive debugging and multiple testing levels, applications still fail. Bad data, broken network connectivity, corrupted databases, memory pressures, and unexpected user inputs can all prevent an application from performing normally. When such an event occurs, and the app is unable to continue its normal flow, this is known as an exception. And it's your application's job—and your job as a coder—to catch and handle these exceptions gracefully so that your app keeps working. Install the Python SDK to identify and fix exceptions What Are Python Exceptions? Exceptions in Python applications can happen for many of the reasons stated above and more; and if they aren't handled well, these exceptions can cause the program to crash, causing data loss, or worse, corrupted data. As a Python developer, you need to think about possible exception situations and include error handling in your code. Fortunately, Python comes with a robust error handling framework. Using structured exception handling and a set of pre-defined exceptions, Python programs can determine the error type at run time and act accordingly. These can include actions like taking an alternate path, using default values, or prompting for correct input. This article will show you how to raise exceptions in your Python code and how to address exceptions.   Difference Between Python Syntax Errors and Python Exceptions Before diving in, it's important to understand the two types of unwanted conditions in Python programming—syntax error and exception. The syntax error exception... --- - [Bash](https://rollbar.com/knowledge-base/bash/): Use Curl to send an HTTP POST: ACCESS_TOKEN=POST_SERVER_ITEM_ACCESS_TOKEN ENVIRONMENT=production LOCAL_USERNAME=whoami REVISION=git rev-parse --verify HEAD curl https://api. rollbar. com/api/1/deploy/ -F access_token=$ACCESS_TOKEN... - [Enable GitHub Organization Access for Rollbar](https://rollbar.com/knowledge-base/enable-github-organization-access-for-rollbar/): Sometimes the GitHub repo you want isn't showing up in the dropdown in our UI. If typing the repo name... ### Most Common Java Exceptions > We take a look at how Java handles exceptions, checked vs. unchecked exceptions, and then the ten most common exceptions you’ll face in Java. - Published: 2021-07-19 - Modified: 2022-11-28 - URL: https://rollbar.com/blog/most-common-java-exceptions/ - Categories: Code Tutorials, Java - Tags: java Like most modern programming languages, Java includes the concept of exceptions to handle both errors and "exceptional events. " When an exception occurs in your code, it disrupts the normal instruction logic and abnormally terminates the process. However, with a little foresight and code, you can often handle these exceptions gracefully, allowing your code to continue running and providing insight for tracking down the root cause of the unexpected result. In this article, we’ll take a brief look at how Java handles exceptions, the difference between checked and unchecked exceptions, and then walk through ten of the most common exceptions you’ll face in Java, and why they might occur. How Java Handles Exceptions When an exception occurs within a class or method, the method/class creates an exception object and hands the results to the runtime system (JVM). The runtime system then travels over the call stack in order to determine what layer can handle the exception that was created or thrown. The search begins with the method in which the exception was created, then walks sequentially through the call stack until it finds an exception handler. When the type of exception matches a type that can be handled by the exception handler, it finds a match. Consider the following stack trace example: If an uncaught exception occurs in the Worker class, the exception will flow to the Service class. If no handler exists in the Service class, then the exception will flow through the stack trace to the Controller class.... --- - [Filtering Javascript errors by language](https://rollbar.com/knowledge-base/filtering-javascript-errors-by-language/): If your application has an international user base, you may be receiving Javascript error reports in the local language of... - [Hiding Third-Party Code](https://rollbar.com/knowledge-base/hiding-third-party-code/): When using libraries or frameworks you will often have large portions of well-tested third party code that is unlikely to... ### Spring Boot Logging > Logging in Spring Boot is very flexible and easy to configure. Spring Boot supports various logging providers. Learn more about Spring Boot logging here. - Published: 2021-07-19 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/spring-boot-logging/ - Categories: Code Tutorials, Java - Tags: java, spring Logging in Spring Boot is very flexible and easy to configure. Spring Boot uses Apache Commons Logging for internal logging but allows developers to configure the underlying log implementation. Various logging providers are supported through simple configuration. Spring Boot provides default configurations for Java Util Logging, Log4J2 and Logback. Each logging provider is preconfigured to use console output with optional file output available as well. Spring Boot applications need to collect log data to help troubleshoot and fix issues in code, as well as measure business metrics. Zero Configuration Logging Spring Boot auto-tunes the majority of the configuration settings within an application so that developers can focus on the code. The only required dependency for logging using Spring Boot is Apache Commons Logging. When using Spring Boot 2. x, the spring-boot-starter-logging starter pulls in the spring-jcl module, which contains the Apache Commons Logging provider. If using Spring Boot 1. x, Apache Commons Loggingem> needs to be imported explicitly. When Spring Boot starters are used, Logback is used for logging by default. The default Logback implementation logs the output to the console at the info level. Logback routing is included as well to ensure support for Apache Commons Logging, Java Util Logging, Log4J and SLF4J. Spring Boot Logging Levels A logger logs a message with a specific logging level. Spring Boot provides the following logging levels: TRACE DEBUG INFO WARN ERROR All supported logging providers can have the logging level set in the Spring Environment using the following syntax: logging. level.... --- - [Disable Two Factor Authentication](https://rollbar.com/knowledge-base/disable-two-factor-authentication/): If you no longer have access to your 2FA device and do not have your recovery codes, Rollbar cannot disable... - [Preventing Client-Side Access Token Abuse](https://rollbar.com/knowledge-base/preventing-client-side-access-token-abuse/): Unfortunately there is no silver bullet here -- all analytics services have this problem too (Google Analytics, Mixpanel, etc. ).... ### How to Solve ClassCastException in Java > When your code attempts to cast an object to another class of which the original object is not an instance, a ClassCastException is thrown. Learn how to fix it. - Published: 2021-07-19 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/how-to-solve-classcastexception-in-java/ - Categories: Code Tutorials, Java - Tags: java If a ClassCastException is one of the most common exceptions in Java. It is a runtime exception that occurs when the application code attempts to cast an object to another class of which the original object is not an instance. For example, a String object cannot be cast to an Integer object and attempting to do so will result in a ClassCastException. Since the ClassCastException is an unchecked exception, it doesn't need to be declared in the throws clause of a method or constructor. Sources of ClassCastException Some of the most common sources of ClassCastException in Java are: Using collections like HashMap, ArrayList and HashTable which do not use Java Generics. Using methods which were written on interfaces prior to Java 5 that use polymorphism. Not using type-safety when casting objects in Java. ClassCastException Example Here is an example of a ClassCastException thrown when a String is attempted to be cast to an Integer: public class ClassCastExceptionExample { public static void main(String args) { Object obj = new String("Hello"); System. out. println((Integer) obj); } } In this example, the String obj is attempted to be cast to an Integer. Since it is not an instance of the Integer class, this operation throws a ClassCastException: Exception in thread "main" java. lang. ClassCastException: class java. lang. String cannot be cast to class java. lang. Integer at ClassCastExceptionExample. main(ClassCastExceptionExample. java:4) How to Fix ClassCastException To fix the ClassCastException in the above example, the object type should be checked before performing the cast operation:... --- - [Source Map Troubleshooting](https://rollbar.com/knowledge-base/source-map-troubleshooting/): Rollbar applies source maps to exceptions from minified Javascript so you can view the original line and character numbers for... - [Improve your Error Grouping with the help of Rollbar](https://rollbar.com/knowledge-base/improve-your-error-grouping-with-the-help-of-rollbar/): Overview Congratulations on setting up your Rollbar projects! You took a step towards more visibility and an easier flow when... ### How to Resolve InvocationTargetException in Java > The InvocationTargetException wraps an exception thrown by an invoked method or constructor. Learn how to handle it. - Published: 2021-07-19 - Modified: 2024-07-24 - URL: https://rollbar.com/blog/how-to-resolve-invocationtargetexception-in-java/ - Categories: Code Tutorials, Java - Tags: java If a InvocationTargetException is a checked exception in Java that wraps an exception thrown by an invoked method or constructor. The method or constructor that throws the exception is invoked using the Method. invoke method. The InvocationTargetException is quite common when using the Java Reflection API. The Java reflection layer wraps any exception as an InvocationTargetException. This helps clarify whether the exception is caused by an issue in the reflection call or within the called method. What Causes InvocationTargetException The InvocationTargetException occurs mainly when working with the Java reflection API to invoke a method or constructor, which throws an exception. This underlying exception is the actual cause of the issue, therefore resolving the InvocationTargetException equates to finding and resolving the underlying exception that occurs within the invoked method. InvocationTargetException Example Here is an example of a InvocationTargetException thrown when a method that is called using Method. invoke throws an exception: import java. lang. reflect. InvocationTargetException; import java. lang. reflect. Method; public class InvocationTargetExceptionExample { public int divideByZero { return 1 / 0; } public static void main(String args) throws NoSuchMethodException, IllegalAccessException { InvocationTargetExceptionExample itee = new InvocationTargetExceptionExample; Method method = InvocationTargetExceptionExample. class. getMethod("divideByZero"); try { method. invoke(itee); } catch (InvocationTargetException ite) { ite. printStackTrace; } } } In this example, the main method invokes divideByZero using Method. invoke. Since divideByZero throws an ArithmeticException, it is wrapped within an InvocationTargetException thrown in the main method: java. lang. reflect. InvocationTargetException at java. base/jdk. internal. reflect. NativeMethodAccessorImpl. invoke0(Native Method) at java. base/jdk. internal.... --- - [Manual merging vs. Custom fingerprints](https://rollbar.com/knowledge-base/manual-merging-vs-custom-fingerprints/): Overview Rollbar has a pretty sufficient default grouping algorithm, that automatically analyzes the stack traces of the incoming occurrences and... ### How to Fix java.lang.NoSuchMethodError in Java > A java.lang.NoSuchMethodError is a runtime error which occurs when a method is called that exists at compile time, but does not exist at runtime. Let's fix it. - Published: 2021-07-19 - Modified: 2024-07-24 - URL: https://rollbar.com/blog/how-to-fix-java-lang-nosuchmethoderror-in-java/ - Categories: Code Tutorials, Java - Tags: java A java. lang. NoSuchMethodError is a runtime error in Java which occurs when a method is called that exists at compile-time, but does not exist at runtime. The Java Garbage Collector (GC) cannot free up the space required for a new object, which causes a java. lang. OutOfMemoryError. This error can also be thrown when the native memory is insufficient to support the loading of a Java class. What Causes java. lang. NoSuchMethodError The java. lang. NoSuchMethodError occurs when an application does not find a called method at runtime. Some of the most common causes for ajava. lang. NoSuchMethodError are: Breaking change in an third party library If an application calls a method in a third party library, which exists at compile time but not at runtime, it can cause a java. lang. NoSuchMethodError. The third party library may have introduced a breaking change from one version to another - for example, it may have removed the method being called. This usually indicates a problem with the build, since the method does exist at compile time but not at runtime. The version of the library used in the build may be different from the one used in the application code. Breaking change within an application A change in the class structure within an application can also cause a java. lang. NoSuchMethodError. This can happen in a multi-module application where a method may have been removed from the code in one module, which was called by another module. This also indicates... --- - [Streamline your items workflow](https://rollbar.com/knowledge-base/streamline-your-items-workflow-2/): Overview Chances are you have multiple incoming occurrences in your Rollbar projects, grouped into items, appearing in your Item list,... - [Auto-upgrading in Rollbar](https://rollbar.com/knowledge-base/auto-upgrading-in-rollbar/): If you have a paid subscription to Rollbar, then you can choose to automatically upgrade your account whenever you reach... ### How to Fix OutOfMemoryError: Permgen Space Exceptions in Java > Is your permanent generation area in memory exhausted? Here's how to adjust the maximum size of the PermGen area and find out what caused this Java error. - Published: 2021-04-08 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/how-to-fix-java-lang-outofmemoryerror-permgen-space-exceptions-in-java/ - Categories: Code Tutorials, Java - Tags: java A java. lang. OutOfMemoryError: PermGen Space is a runtime error in Java which occurs when the permanent generation (PermGen) area in memory is exhausted. The PermGen area of the Java heap is used to store metadata such as class declarations, methods and object arrays. Therefore, the PermGen size requirements depend on the number of classes and methods as well as their size. Java memory is separated into different regions - Young, Tenured and PermGen. The sizes of these regions, including the PermGen area, are set when the JVM is launched. If these sizes are not specified, platform-specific defaults are used. Since Java applications are only allowed to use a limited amount of memory, the PermGen can easily be exhausted if there are a large number of classes, objects or methods in an application. The size of the PermGen can be specified using the JVM arguments -XX:PermSize and -XX:MaxPermSize depending on the application needs. What Causes java. lang. OutOfMemoryError: PermGen Space The PermGen area of the Java heap mostly contains the following: Class declarations, including class names and fields Methods with the method bytecode Constant pool information Object arrays and type arrays associated with a class Just In Time compiler optimizations The PermGen size depends on both the number of classes loaded as well as the size of class declarations. Therefore, the main cause for java. lang. OutOfMemoryError: PermGen space is either too many classes or too large classes loaded in the PermGen. java. lang. OutOfMemoryError: PermGen space Example Here is... --- - [GDPR & Rollbar](https://rollbar.com/knowledge-base/gdpr-rollbar/): Rollbar is compliant with GDPR and can serve as a data processor for customers who control data from individuals in... - [Could not compare commits between SHAs ...](https://rollbar.com/knowledge-base/could-not-compare-commits-between-shas/): Occasionally when using Rollbar's Deploy Tracking feature, you may see a message such as the following: Could not compare commits... - [Get more insights and control over your errors](https://rollbar.com/knowledge-base/get-more-insights-and-control-over-your-errors/): Overview In this article, we will walk you through all the perks of integrating GitHub source control with your Rollbar... - ["There was a problem trying to connect to your Asana account." message appears](https://rollbar.com/knowledge-base/there-was-a-problem-trying-to-connect-to-your-asana-account-message-appears/): This warning message typically appears because the Rollbar app is having problems accessing the Asana API due to an outage... ## Press - [SafetyDetectives - Interview with Brian Rue - CEO and Co-founder at Rollbar](https://rollbar.com/press/safetydetectives-interview-with-brian-rue-ceo-and-co-founder-at-rollbar/): Inter - [Rollbar Research Shows Developers Feel Most Productive When Creating Better Quality Code](https://rollbar.com/press/rollbar-research-shows-developers-feel-most-productive-when-creating-better-quality-code/): SAN FRANCISCO--(BUSINESS WIRE)--New research from Rollbar, provider of real-time error monitoring Software as a Service, indicates that nearly a third... - [Rollbar Secures $11 Million Series B To Help Engineering Teams Release More Often](https://rollbar.com/press/rollbar-secures-11-million-series-b-to-help-engineering-teams-release-more-often/): SAN FRANCISCO, CA - March 4, 2020 -- Rollbar, provider of real-time error monitoring Software as a Service, today announces... - [New UX From Rollbar Takes The Hassle Out Of Monitoring And Debugging Errors In Microservices](https://rollbar.com/press/new-ux-from-rollbar-takes-the-hassle-out-of-monitoring-and-debugging-errors-in-microservices/): Centralized Realtime View of Errors Helps Companies Deliver Better Customer Experiences SAN FRANCISCO – December 16, 2019 - Rollbar, provider... - [Rollbar Announces First Error Monitoring Solution For Salesforce Apex Platform](https://rollbar.com/press/rollbar-announces-first-error-monitoring-solution-for-salesforce-apex-platform/): Four Million Salesforce Developers Can Now Find and Fix Errors in Apex Apps in Real-Time SAN FRANCISCO – November 13,... - [Rollbar to Offer Its Error-Monitoring Solution on Google Cloud Platform Marketplace](https://rollbar.com/press/rollbar-to-offer-its-error-monitoring-solution-on-google-cloud-platform-marketplace/): SAN FRANCISCO - April 9, 2019 -- Rollbar, provider of real-time error monitoring Software as a Service, announced today its... - [Rollbar Acquires Hungary-Based Samebug](https://rollbar.com/press/rollbar-acquires-hungary-based-samebug/): SAN FRANCISCO and BUDAPEST, February 25, 2019 -- Rollbar, provider of real-time error monitoring Software as a Service, announced today... - [A Rollbar felvásárolja a Samebugot](https://rollbar.com/press/rollbar-acquires-hungary-based-samebug-hu/): San Francisco & BUDAPEST, 25 február 2019 -- A szoftverhibák valós idejű monitorozását végző szoftvercég, a Rollbar felvásárolja a magyarországi... ### How to Fix the Unsupported Operation Exception in Java > The UnsupportedOperationException occurs when attempting operations that aren't supported, primarily when trying to modify immutable collections. - Published: 2025-04-20 - Modified: 2025-04-20 - URL: https://rollbar.com/blog/fixing-unsupportedoperationexception-in-java/ - Categories: Code Tutorials, Java - Tags: error-handling, java Java throws an UnsupportedOperationException when you attempt to modify an object that was designed to be viewed but not changed. Think of UnsupportedOperationException as trying to open a door with the wrong key. The door exists and looks like any other door, but your particular key (or operation) simply isn't compatible with its lock. This runtime exception is Java's way of telling you that while the method you're calling appears to exist, this specific implementation doesn't support that operation - usually because you're dealing with an unmodifiable or fixed-size collection. For example, if an unmodifiable List is attempted to be modified by adding or removing elements, an UnsupportedOperationException is thrown. This is one of the common exceptions that occur when working with Java collections such as List, Queue, Set and Map. Since it's an unchecked exception, it doesn't need to be declared in the throws clause of a method or constructor, making it even more frustrating when it appears unexpectedly in your logs. What Causes UnsupportedOperationException The UnsupportedOperationException is thrown when a requested operation cannot be performed because it's not supported for that particular class. Here are the most common causes: 1. Fixed-Size Lists from Arrays. asList One of the most frequent causes is using the asList method of the java. util. Arrays class. This method returns a fixed-size, unmodifiable List, so operations like add or remove will throw the exception. 2. Immutable Collections Trying to modify collections returned by factory methods like List. of, Set. of, or Collections. unmodifiableList... --- - [Series A Funding](https://rollbar.com/press/series-a-funding/): ## Testimonials ### The 8 Best Application Performance Monitoring (APM) Tools in 2025 > Learn what makes each tool stand out, their pros and cons, who they’re ideal for, and how they’re priced (including free plans or trials where available). - Published: 2025-04-17 - Modified: 2025-04-22 - URL: https://rollbar.com/blog/best-apm-tools/ - Categories: topics - Tags: APM Application Performance Monitoring (APM) tools are software platforms that help developers, DevOps engineers, and technical managers track the performance and health of their apps and infrastructure in real time. They collect telemetry data like response times, error rates, resource usage, and user behavior, visualize this data, and make it easier to detect performance issues, pinpoint root causes, and ensure a smooth user experience. ​ In short, they help teams be proactive rather than reactive. In this roundup, we’ll review eight of the best APM tools available today, covering a mix of SaaS platforms and open-source solutions. We’ll look at what makes each tool stand out, their pros and cons, who they’re ideal for, and how they’re priced (including free plans or trials where available). But first, let’s talk about how we evaluated these tools – in other words, what makes a great APM tool in the first place. What Makes a Great APM Tool? Not all monitoring tools are created equal. Here are some key criteria and features that distinguish a great APM tool from the rest of the pack: Comprehensive Monitoring: Full-stack visibility across application metrics, infrastructure health, and user experience User-Friendly Setup: Easy deployment with out-of-the-box instrumentation and intuitive interface Strong Integrations: Compatibility with your tech stack and other tools in your workflow Effective Alerting: Real-time monitoring with customizable alerts and root cause analysis Scalability: Ability to handle large systems without performance degradation Reliable Support: Strong community or vendor backing with regular updates Cost-Effective: Pricing model that provides... --- - [Anonymous ThredUP (Results)](https://rollbar.com/?testimonial=anonymous-thredup-results): - [Anonymous ThredUP (Strategy #2)](https://rollbar.com/?testimonial=anonymous-thredup-strategy-2): ### Viniou's Story with Rollbar > We use Rollbar for all our error reporting. It's used by our engineering team to notify us of issues that arise and to help us debug them. It's really helpful in cutting through the noise and letting us know only the errors that we need to care about. - Published: 2025-04-16 - Modified: 2025-04-16 - URL: https://rollbar.com/blog/vininou-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Viniou is a web and mobile app that helps wine enthusiasts track, organize, and efficiently manage their vast wine collection 1. Can you introduce yourself, and tell us about your team or company? My name is Arnaud Cariou, and I’m the founder of Viniou, a web and mobile app designed to help wine enthusiasts manage their wine collections with ease. Viniou was born from a simple observation: it’s still surprisingly hard to keep track of what’s in your cellar, what should be opened, what needs to be restocked, or what’s been shared with friends. Our platform offers an intuitive and powerful way to organize bottles, optimize wine purchases, and follow the aging process over time. You can learn more here: https://www. viniou. co. uk 2. How are you using Rollbar? We use Rollbar for real-time error monitoring across both our . NET backend and our React Native mobile app. It allows us to detect issues as they occur, understand the context, and act quickly to deliver the best possible experience to our users. Since we handle personal data—especially users’ wine inventory—reliability is a top priority. Without Rollbar, we’d spend a lot more time chasing bugs manually, and we’d likely miss some critical problems. 3. What made you choose Rollbar? We chose Rollbar after evaluating several error tracking tools. What really made the difference was how easy it was to set up, the clarity of its interface, and how well it integrates into our workflow. The smart error grouping, detailed reports, and... --- - [Anonymous ThredUP (Strategy #1)](https://rollbar.com/?testimonial=anonymous-thredup-strategy-1): - [Plexus (Goal)](https://rollbar.com/?testimonial=plexus-goal): - [Plexus (Strategy)](https://rollbar.com/?testimonial=plexus-strategy): ### Docfield's Story with Rollbar > We use Rollbar for all our error reporting. It's used by our engineering team to notify us of issues that arise and to help us debug them. It's really helpful in cutting through the noise and letting us know only the errors that we need to care about. - Published: 2025-04-01 - Modified: 2025-04-01 - URL: https://rollbar.com/blog/docfield-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Docfield creates, signs, and manages digital contracts in a single, collaborative platform.   1. Can you introduce yourself, and tell us about your team or company? Docfield is a LegalTech start-up developing acontract lifecycle managementsolution for customers across several industries. We offer some of the most comprehensive contract creation tools in the market, and as the founder’s associate it is my goal to help as many customers as possible experience the benefits. 2. How are you using Rollbar? As a scale-up company it can be difficult to compete with large incumbents. A key differentiator for us is that we can work very closely with each customer and deliver a tailored customer experience. Leveraging Rollbar in this process is a no-brainer.  Rollbar integrates seamlessly with Rails, so our backend team relies on Rollbar to automatically detect and report issues across all our environments. This eliminates the need for users to submit bug tickets manually. We've integrated Rollbar with Slack for real-time error notifications, GitHub for linking errors to specific commits, and Notion for centralised documentation and tracking. This setup enables our product team to prioritize issues effectively based on the insights provided by Rollbar. 3. What made you choose Rollbar? We evaluated several error monitoring tools, including Sentry, Raygun, and Datadog. Rollbar stood out with head and shoulders above the rest due to its user-friendly interface, advanced diagnostic capabilities, and overall cost-effectiveness.  Unlike some alternatives that bundle additional features at a higher price point, Rollbar focuses on delivering error monitoring without... --- - [Plexus (Results)](https://rollbar.com/?testimonial=plexus-results): - [W. Habib - Everplans (light) As an agile](https://rollbar.com/?testimonial=w-habib-everplans-light-as-an-agile): - [A. Childs - Clubhouse (dark) Rollbar lets us](https://rollbar.com/?testimonial=a-childs-clubhouse-light-rollbar-lets-us): ### Optimizing Item Search: How Rollbar Engineered Faster, More Capable Search > Searching through error data efficiently is critical for developers using monitoring tools. At Rollbar, we recently completed a significant overhaul of our Item Search backend. The previous system faced performance limitations and constraints on search capabilities. This post details the technical challenges, the architectural changes we implemented, and the resulting performance gains. - Published: 2025-03-31 - Modified: 2025-03-31 - URL: https://rollbar.com/blog/how-rollbar-engineered-faster-search/ - Categories: Engineering, product, topics - Tags: behind-the-scenes, engineering, how to Searching through error data efficiently is critical for developers using monitoring tools. At Rollbar, we recently completed a significant overhaul of our Item Search backend. The previous system faced performance limitations and constraints on search capabilities. This post details the technical challenges, the architectural changes we implemented, and the resulting performance gains. The Starting Point: Limitations of the Existing Architecture Our previous item search relied heavily on our primary MySQL database for most filtering and sorting operations, with Elasticsearch used for fulltext search on item titles. This architecture presented several challenges: Performance Bottlenecks: Complex MySQL queries combining item and occurrence filters often struggled. Occurrence data, being voluminous, is difficult to index effectively in a traditional RDBMS for arbitrary filtering. Many searches, especially those involving occurrence attributes or non-default time ranges, exceeded the 60-second timeout threshold in our database. Impact of Core Features (like Merging): Rollbar allows merging similar items together. Rollbar's merge operation is designed to be O(1), independent of occurrence count. Supporting this fast merge while correctly associating occurrences with their current parent item required complex logic within MySQL, involving self-joins on the item table. This made the queries difficult for MySQL to optimize, especially when combined with other filters. Data Propagation Delays: Changes in item relationships (like merges) were propagated from MySQL to our analytics backend (used for some auxiliary data lookups) via a CDC pipeline (Debezium) feeding a Clickhouse dictionary. This dictionary refreshed on a schedule, about every 20 minutes. This meant merges performed by users wouldn't... --- - [Fintech (dark) The more you](https://rollbar.com/?testimonial=fintech-dark-the-more-you): - [J. Bazemore - Greenhouse (light) When you move](https://rollbar.com/?testimonial=j-bazemore): ### How to Fix Python TypeError: 'int' object is not subscriptable > Learn why Python prevents accessing parts of an integer using []. This guide explains the error and shows how to work with subscriptable types correctly. - Published: 2025-03-30 - Modified: 2025-03-30 - URL: https://rollbar.com/blog/how-to-fix-int-object-is-not-subscriptable-python/ - Categories: Code Tutorials, Python - Tags: Python If you're working with Python, you've likely encountered the TypeError: 'int' object is not subscriptable. This is a common error, especially for beginners or when dealing with dynamic data. It fundamentally signals a misunderstanding between what your code expects a variable to be and what it actually is. What Does "'int' object is not subscriptable" Mean? Let's break down the terms: int: This refers to the integer data type in Python, which represents whole numbers (e. g. , 5, -10, 0). Subscriptable: An object is "subscriptable" if you can access its internal items using square brackets . Think of containers or sequences like lists (my_list), tuples (my_tuple), strings (my_string), and dictionaries (my_dict). These objects hold multiple elements or key-value pairs that can be "subscribed" or accessed via an index or key. Not Subscriptable: The error message tells you that integers (int) do not support this access method. Why isn't an integer subscriptable? An integer represents a single, indivisible numerical value. It doesn't contain other items. Trying to access the "first element" of the number 5 (like 5) doesn't make sense conceptually in Python, hence the TypeError. You're treating a single value as if it were a sequence. Common Scenarios Leading to the Error This error typically arises when you attempt indexing or slicing on a variable that you thought was a list, tuple, string, or dictionary, but which actually holds an integer at that moment. Here are a couple of common ways this happens: Accidental Variable Reassignment: You might have... --- - [R. Zuber - CircleCI (light) If you don't](https://rollbar.com/?testimonial=r-zuber-circleci-light-if-you-dont): - [D. Rohov - CVENT (light) Rollbar has been](https://rollbar.com/?testimonial=d-rohov-cvent-light-rollbar-has-been): - [D Rohov - CVENT (light) You could have](https://rollbar.com/?testimonial=d-rohov-cvent-light-you-could-have): ### The Art of Throwing Exceptions in C# (or How to Fail Gracefully) > A senior developer's sarcastic guide to C# exceptions. Learn to create meaningful error messages, preserve stack traces, and implement custom exception types. - Published: 2025-03-27 - Modified: 2025-03-27 - URL: https://rollbar.com/blog/throw-exceptions-c-sharp/ - Categories: C#, Code Tutorials - Tags: csharp Exceptions in C# are like fire alarms – they're loud, disruptive, and absolutely essential. And much like fire alarms, most beginners either ignore them or disconnect the batteries. Let me explain what we're dealing with here. In the C# world, exceptions are specialized objects that capture all the details when something goes wrong in your code. They're not just error messages – they're fully-fledged objects that inherit from the System. Exception class. They give you a structured way to identify, communicate, and handle unexpected conditions, allowing your program to either recover gracefully or at least fail with dignity instead of crashing in a blaze of cryptic error messages. Look, I get it. You just want your code to work, and exceptions seem like that annoying colleague who's always pointing out problems in your masterpiece. But trust me on this – learning to properly throw and handle exceptions will make you a better developer, save your future self countless headaches, and maybe even impress that senior engineer who never seems to like anyone's code. In this post, you'll learn the basics of exceptions in C#, how to throw them properly, when to create your own, and the best practices that separate the professionals from the "it works on my machine" crowd. The Basics of Exceptions Let's clear something up right away: exceptions aren't just "errors. " They're sophisticated objects designed to provide detailed information about what went wrong, where it went wrong, and sometimes even why it went wrong (though that... --- - [D. Rohov - CVENT (light) The out of the](https://rollbar.com/?testimonial=d-rohov-cvent-light-the-out-of-the): - [H. Villafuerte – Duolingo – light – I really can't imagine...](https://rollbar.com/?testimonial=h-villafuerte-duolingo-light-i-really-cant-imagine): ### How to Fix Python’s “List Index Out of Range” Error in For Loops > This error means Python can't find the list position you're asking for. Fix it with enumerate(), proper length checks, or by using -1 to safely get the last item. - Published: 2025-03-25 - Modified: 2025-03-25 - URL: https://rollbar.com/blog/how-to-fix-python-list-index-out-of-range-error-in-for-loops/ - Categories: Code Tutorials, Python - Tags: Python The List Index Out of Range error often occurs when working with lists and for loops. You see, in Python, when you attempt to access an element using an index that lies outside the valid index range of the list, you're essentially telling the program to fetch something that isn't there, resulting in this common error. For example, if you have a list with 3 elements: my_list = The valid indices for this list are 0, 1, and 2 (since Python uses zero-based indexing). If you try to access my_list or any index outside this range, Python will raise this error. It's the interpreter's way of signaling that there's a misalignment in your expectations of the list's size and the actual indices present. Let’s take a closer look at common ways a for loop can cause List Index Out of Range and how to either avoid it completely or gracefully handle this error when it crops up. What causes the “List Index Out of Range” error? As Python uses zero-based indexing, when you try to access an element at an index less than 0 or greater than or equal to the list’s length, Python tells you via this error that the specified index is out of the permissible bounds of the list's length. Here are some common scenarios when this error occurs: Incorrect loop indexing If an index used in a loop across a range of indices is greater than the list's length, the error IndexError: list Index Out of... --- - [Tyler Wells - Twilio (light) if a tool](https://rollbar.com/?testimonial=tyler-wells-twilio-light-if-a-tool): - [H. Villafuerte - Duolingo - light - Rollbar helps make...](https://rollbar.com/?testimonial=h-villafuerte-duolingo-light-rollbar-helps-make): - [R. Zuber (circle - dark)](https://rollbar.com/?testimonial=r-zuber-circle-dark): ### How to Throw Exceptions in C++ Constructors Correctly > Constructors are weird when it comes to error handling. Why? Because unlike regular functions, they don't have a return value. - Published: 2025-03-17 - Modified: 2025-03-17 - URL: https://rollbar.com/blog/throw-exceptions-in-cpp-constructors/ - Categories: C++, Code Tutorials - Tags: c++ In C++, when you create a new object (like a database connection or a game character), a special function called a constructor runs automatically to set up that object. Think of constructors as the "birth" process for objects—they allocate resources, set initial values, and make sure the object starts life in a valid state. But what happens when something goes wrong during this setup? Maybe a file can't be opened, a network connection fails, or invalid data is provided. Since constructors can't return error codes like regular functions, they need another way to signal problems—this is where exceptions come in. Constructor exceptions are like emergency abort buttons that stop an object from being created when something critical fails. When a constructor throws an exception, it tells the program, "I couldn't properly initialize this object, so don't use it at all. " The partially built object gets automatically destroyed, preventing what we call "zombie objects"—objects that appear normal but are broken inside and can corrupt your program. This guide will show you, step by step, how to use exceptions in constructors effectively. You'll see examples that demonstrate why this technique is so important and by the end, you'll understand how to ensure your objects are either created properly or not created at all—a fundamental skill that elevates your C++ from basic to production-ready. Why Throw Exceptions in Constructors? The Constructor's Dilemma Let's say you're building a DatabaseConnection class. The constructor needs to establish a connection, and a million things could go... --- - [T. Wells (circle - dark)](https://rollbar.com/?testimonial=t-wells-circle-dark): - [S. Hacker (circle - dark)](https://rollbar.com/?testimonial=s-hacker-circle): - [Duolingo - Hacker (light)](https://rollbar.com/?testimonial=duolingo-hacker-light): ### Efficient Error Triage: Reducing Debugging Time > Efficiently triaging issues can drastically reduce downtime, improve user experience, and keep your development team focused on innovation. Rollbar offers powerful features designed to help teams streamline error triage and resolve issues quickly. Here's how you can master the triage process and leverage Rollbar to reduce time spent debugging. - Published: 2025-03-12 - Modified: 2025-03-12 - URL: https://rollbar.com/blog/error-triage/ - Categories: topics - Tags: debugging, error-handling, exception monitoring, triage When software errors strike, developers must act fast. Efficiently triaging issues can drastically reduce downtime, improve user experience, and keep your development team focused on innovation. Rollbar offers powerful features designed to help teams streamline error triage and resolve issues quickly. Here's how you can master the triage process and leverage Rollbar to reduce time spent debugging. Step 1: Identify and Prioritize Critical Errors Not all errors are equal. To efficiently manage errors, developers need to focus on those with the highest impact first. Rollbar Features for Prioritization: Real-time Alerts: Rollbar sends instant notifications via Slack, Microsoft Teams, PagerDuty, and other tools to ensure critical errors are surfaced immediately. Error Grouping: Rollbar intelligently groups errors based on root causes, reducing noise and helping you identify the most impactful issues first. Advanced Search: Rollbar allows you to search complex payloads across all services and projects. Step 2: Gather Contextual Information Once you've identified a key issue, having the right data to understand its context is crucial for efficient triage. Rollbar Features for Context: Detailed Error Reports: Each error report includes stack traces, request parameters, affected users and deployment details. Telemetry: Rollbar records key browser and app events leading up to an error, offering developers valuable insights into what happened just before failure. Step 3: Assign Ownership and Take Action Ensuring accountability is key to resolving errors efficiently. Assigning ownership reduces confusion and ensures issues are resolved promptly. Rollbar Features for Ownership: Team and User Assignment: Rollbar can assign errors to the... --- - [D. Rohov - CVENT (dark)](https://rollbar.com/?testimonial=d-rohov-cvent-dark): ### Exciting Security Enhancements: Stronger, Smarter Access Tokens - Published: 2025-03-04 - Modified: 2025-03-04 - URL: https://rollbar.com/blog/smarter-access-tokens/ - Categories: product - Tags: security, tokens Security has been our top priority over the last year, and we’re rolling out major improvements to account and project access tokens to bring Rollbar up to today’s security standards. Newly created tokens will be stored in an encrypted format, inaccessible via the UI or API after being created, and you will be able to manually encrypt your existing tokens. This change to token storage will give you more control over who can submit, access or update data in your system. How are we improving token security? Stronger Protection – Newly created tokens will now be encrypted and will no longer be accessible via the UI or API after creation. When you generate a token, be sure to copy and store it securely - once you close the create token window, the token will be securely encrypted with no way to view it again. Flexible Security Options – Choose between 512-bit tokens for maximum security or 128-bit tokens if you need to maintain compatibility with existing token lengths. Updated Scope Rules – To enhance security, for newly created tokens certain token scopes must now be separate - post_server_item and post_client_item can no longer be combined with other scopes. Your current tokens can remain in their current state, but we recommend that you create new tokens with separate scopes. Encrypt Existing Tokens - You can immediately encrypt your tokens without having to make any changes to the tokens themselves or your code - the tokens will be updated to the new... --- - [R. Zuber - CircleCI (dark)](https://rollbar.com/?testimonial=r-zuber-circleci-dark): - [T. Wells - Twilio (dark)](https://rollbar.com/?testimonial=t-wells-twilio-dark): ### Throwing Exceptions in C++ > Exceptions provide a formal and well-defined way for detecting errors and to pass the information up the call stack. - Published: 2025-02-28 - Modified: 2025-03-01 - URL: https://rollbar.com/blog/error-exceptions-in-c/ - Categories: C++, Code Tutorials - Tags: c++ Imagine spending months developing a C++ application, only to have users report that it crashes whenever they enter unexpected input or when network connections fail. This common scenario happens when programs lack proper error handling. The good news is that C++ provides a built-in mechanism called exceptions that helps your code anticipate and respond to problems rather than simply crashing. In this comprehensive guide, you'll learn how to use exceptions to create resilient applications that can detect errors, communicate what went wrong, and recover gracefully - skills that separate amateur code from professional-grade applications. Why Use Exceptions in C++? Exceptions provide a way to react to exceptional circumstances in programs by transferring control to special functions called handlers. Throwing exceptions are preferred in modern C++ over traditional error handling for the following reasons: Automatic resource cleanup — C++ destroys all objects in scope after an exception occurs, preventing resource leaks Separation of concerns — Exceptions separate error-handling logic from the main algorithm, improving code readability Flexible error handling — Errors can be handled at the appropriate level of abstraction, not necessarily where they occur Type-based categorization — C++ error types can be organized in hierarchies, making it easier to handle related errors consistently Cleaner code — They eliminate the need to check return values after every function call These advantages make exceptions particularly valuable in large-scale projects where code clarity and maintainability are essential. C++ try catch and throw Exception handling in C++ is done using three keywords: try, catch... --- - [M. Blaze - Duolingo (dark)](https://rollbar.com/?testimonial=m-blaze-duolingo-dark): - [C. Amadieh - Cvent (dark)](https://rollbar.com/?testimonial=c-amadieh-cvent-dark): ### Java Exceptions Hierarchy Explained > The tree diagram below shows the standard exception and error classes defined in Java, organized in the Java exceptions hierarchy. - Published: 2025-02-28 - Modified: 2025-03-01 - URL: https://rollbar.com/blog/java-exceptions-hierarchy-explained/ - Categories: topics - Tags: java In Java “an event that occurs during the execution of a program that disrupts the normal flow of instructions” is called an exception. This is generally an unexpected or unwanted event which can occur either at compile-time or run-time in application code. Java exceptions can be of several types and all exception types are organized in a fundamental hierarchy. Understanding this hierarchy is crucial for implementing robust error handling strategies in production. Java Exceptions Hierarchy The class at the top of the exception class hierarchy is the Throwable class, which is a direct subclass of the Object class. Throwable has two direct subclasses - Exception and Error. The diagram below shows the standard exception and error classes defined in Java, organized in the Java exceptions hierarchy: Figure 1: Exceptions hierarchy in Java The Exception class is used for exception conditions that the application may need to handle. Examples of exceptions include IllegalArgumentException, ClassNotFoundException and NullPointerException. The Error class is used to indicate a more serious problem in the architecture and should not be handled in the application code. Examples of errors include InternalError, OutOfMemoryError and AssertionError. Exceptions are further subdivided into checked (compile-time) and unchecked (run-time) exceptions. All subclasses of RuntimeException are unchecked exceptions, whereas all subclasses of Exception besides RuntimeException are checked exceptions. Java Errors vs Exceptions According to the official documentation, an error “indicates serious problems that a reasonable application should not try to catch. ” This refers to problems that the application can not recover from -... --- - [M. Blaze - Duolingo (light)](https://rollbar.com/?testimonial=m-blaze-duolingo): - [C. Amadieh - Cvent (Light) Anytime you fix](https://rollbar.com/?testimonial=c-amadieh): ### Sunset of Bitbucket Web Frame > Sunset of BitBucket Web Frame - Published: 2025-02-25 - Modified: 2025-02-25 - URL: https://rollbar.com/blog/sunset-bitbucket-web-frame/ - Categories: product, topics - Tags: atlassian, bitbucket Sunset of BitBucket Web Frame We wanted to let you know that we’ll be retiring the Atlassian Rollbar Bitbucket Web Frame application on March 15, 2025. After that date, the app will be archived, and it will no longer be available for download from the Atlassian Marketplace. We want to reassure you that this will not impact our internal code-context integration with Bitbucket. The sunset only applies to the web frame application in the Atlassian marketplace. The Rollbar integration with Bitbucket for code context, code versions, and issues remains unaffected, and you can continue to rely on it for seamless error tracking and debugging. If you have any questions or concerns, feel free to contact our support team. We’re here to help, and we appreciate your continued support. Thank you for being part of the Rollbar community Error Monitoring at Scale Managing errors and exceptions in your code is challenging. It can make deploying production code an unnerving experience. Being able to track, analyze, and manage errors in real-time can help you to proceed with more confidence. Rollbar automates error monitoring and triaging, making fixing errors easier than ever. Sign Up Today! --- - [T. Wells - Twilio (light)](https://rollbar.com/?testimonial=t-wells-twilio): - [R. Zuber - CircleCI (light)](https://rollbar.com/?testimonial=r-zuber-circleci): - [D. Rohov - CVENT (light)](https://rollbar.com/?testimonial=d-rohov-cvent): ### How to Fix the "Unexpected End of zlib Input Stream" Error > Improve your decompression process. Learn how to handle truncated data, corrupted streams, and flawed logic with actionable code examples. - Published: 2025-02-24 - Modified: 2025-02-24 - URL: https://rollbar.com/blog/unexpected-end-of-zlib-input-stream/ - Categories: Code Tutorials, Python - Tags: Python The error message "unexpected end of zlib input stream" means that the zlib library, while trying to decompress data, reached the end of the input stream sooner than expected. Basically, zlib anticipated more data (or proper termination) to decompress the stream, but it didn't find it. This could be due to a few reasons, such as the data being incomplete, corrupted, or even because of mistakes in how the data stream was handled in the code. I’ll break down these three most common causes and provide a code example for each one to illustrate both the problem and the remedy. 1. Truncated or Incomplete Data The Cause A truncated or incomplete data stream is the most common culprit. It might occur during file transfers, network transmission, or due to a file getting corrupted during saving. Solution Ensure that the complete compressed data is available before attempting decompression. Adding validation steps (like checking the file size or using checksums) can help detect incomplete data early. Also, implementing proper error handling around your decompression code can prevent unexpected crashes and allow you to gracefully notify the user or retry the operation. Example Problem import zlib # Compress original data original_data = b'This is some data that will be compressed. ' compressed_data = zlib. compress(original_data) # Simulate a truncated stream by only taking part of the compressed data truncated_data = compressed_data try: # Attempt to decompress truncated data decompressed_data = zlib. decompress(truncated_data) except zlib. error as e: print("Error during decompression (likely truncated data):",... --- - [Duolingo - Hacker (dark)](https://rollbar.com/?testimonial=duolingo-hacker): ## Employees ### Expanded Search: Nearly All Standard Fields Are Now Searchable > We’re excited to share some great news about our Related Tab feature! We’ve listened to your feedback and made big improvements to help you manage and investigate your items more easily. The Related Tab is a helpful tool that shows you other items related to the one you’re looking at. This makes it easier to see if the same issue is happening in different parts of your code base or if there are similar items that might be connected. Knowing this can help you understand if a problem is widespread or if there are other occurrences that could help you debug it quicker. - Published: 2025-02-04 - Modified: 2025-02-06 - URL: https://rollbar.com/blog/expanded-search/ - Categories: product - Tags: Usage Notifications Following our recent updates on faster item search and searching within custom data fields, we’re excited to announce another major improvement: nearly all standard data fields within Rollbar are now indexed and searchable! What's new? 50+ additional fields are now available for search, expanding the ways you can filter and analyze your data. Previously unsearchable fields, like host, are now fully indexed, resolving past limitations. Faster and more accurate search performance, building on our recent enhancements. Custom fields remain fully searchable, allowing for even greater flexibility. With these updates, you can search using a wider range of fields, get more precise results, and experience faster response times. Newly Searchable Fields & Key Highlights The full list of available search fields can be found in our Searchable Fields Documentation — newly indexed fields are marked there with an asterisk (*). A few key additions include: UUID – Search for a specific item by its unique identifier. message_body & request_body – Find errors based on detailed message content. Additionally, when you apply a search, the statistics on the Item List page (such as count, unique IPs, and trends over time) now reflect only the occurrences that match your search criteria. Previously, these statistics counted all occurrences within matching items, making results less precise. Unlocking New Use Cases With expanded search capabilities, improved speed, and enhanced accuracy, several highly requested use cases are now easier to achieve: Find the top errors affecting a specific URL or route name Filter errors based on custom... --- ### Enhanced Search: Key/Value Searching Now Available for Custom Fields > We’re excited to share some great news about our Related Tab feature! We’ve listened to your feedback and made big improvements to help you manage and investigate your items more easily. The Related Tab is a helpful tool that shows you other items related to the one you’re looking at. This makes it easier to see if the same issue is happening in different parts of your code base or if there are similar items that might be connected. Knowing this can help you understand if a problem is widespread or if there are other occurrences that could help you debug it quicker. - Published: 2025-02-04 - Modified: 2025-02-06 - URL: https://rollbar.com/blog/custom-field-search/ - Categories: product - Tags: Usage Notifications Following our recent update on faster item search, we’re excited to introduce another powerful improvement to our search functionality: key/value searches for specific fields! What's new? You can now perform key/value searches in the format: field:value This enhancement is available for the following fields: custom (custom data fields added to occurrences) request_get, request_header, request_param, request_post (request-related fields) traceframe_local (trace frame local variables) Why This Matters A major benefit of this update is the ability to search within personalized custom data fields—something that was not previously possible within search. For example, if you have a custom field custom. response containing the string "Permission denied", you can now search for it using: custom:%Permission_denied% Key/Value Search Tips & Examples Case-Insensitive Prefix Search: By default, searches are case-insensitive. Use exact match by placing the value in quotes: custom:"value" Wildcard Support: Use % to match any number of characters, use _ to match a single character: custom:%value% Escaping Wildcard Characters: To search for an actual % character, escape it with \: custom:%\%% Searching Within Nested Fields: If custom data contains subfields, only include the top-level field. For example: to search within a field custom. rollbar-log. server, use: custom:%search_term% More Powerful & Granular Searches With these updates, you can narrow down your item list more precisely than ever, including searches within custom data fields that extend your occurrence data. What’s Next? In our next blog post, we’ll be sharing exciting news about additional standard Rollbar fields that are now supported in search. Stay tuned! Learn more... --- ### Fast, Accurate and Powerful Item Search > We’re excited to share some great news about our Related Tab feature! We’ve listened to your feedback and made big improvements to help you manage and investigate your items more easily. The Related Tab is a helpful tool that shows you other items related to the one you’re looking at. This makes it easier to see if the same issue is happening in different parts of your code base or if there are similar items that might be connected. Knowing this can help you understand if a problem is widespread or if there are other occurrences that could help you debug it quicker. - Published: 2025-02-03 - Modified: 2025-02-06 - URL: https://rollbar.com/blog/upgraded-search/ - Categories: product - Tags: Usage Notifications We’ve overhauled the search backend that powers the Item List UI and Item Search API. Item Search is now far more powerful, working with custom fields and nearly all the data you send Rollbar. Searches return quickly and return the results you'd expect. What's new? With the new backend, Item Search has: Better Performance Faster performance on most searches, especially when a date range is selected. Better Accuracy Item statistics (e. g. count, unique IPs, chart over time) in search results reflect occurrence-level filters. (Previously, occurrence-level filters like context, person or host would filter items but not affect statistics; now, it works as expected. ) Many bugs solved, including host search not working and unexpected behavior on context search. More Search Features Nearly all fields are now indexed and searchable, including key-value pairs within custom data, request params, and trace locals. Total result count is now available for large projects, for all searches covering --- ### How to Resolve an object reference is required for the non-static field > This error occurs when a static method tries to use a non-static member without having an instance to work with. I'll show you three simple fixes. - Published: 2025-01-26 - Modified: 2025-01-27 - URL: https://rollbar.com/blog/how-to-resolve-an-object-reference-is-required-for-the-non-static-field/ - Categories: .NET, C#, Code Tutorials - Tags: .NET, c++, error-handling, error-monitoring The "Object reference is required for the non-static field" error happens in C# when you try to access a non-static member from a static method. Every class in C# can have two types of members: static and non-static. Static members are shared by the whole class, like a public bulletin board anyone can read. Non-static members are different - they belong to specific instances of the class, like personal notes that only exist in your copy of a notebook. This error occurs when a static method tries to use a non-static member without having an instance to work with. Let's look at some code where this happens - we'll see how trying to update a form label from a static method causes this error, and show you three simple fixes. Consider the following C# example namespace WindowsApplication1 { public partial class Form1 : Form { public Form1 { InitializeComponent; } private void button1_Click(object sender, EventArgs e) { //int val = { 0, 0}; int val; if (textBox1. Text == "") { MessageBox. Show("Input any no"); } else { val = Convert. ToInt32(textBox1. Text); Thread ot1 = new Thread(new ParameterizedThreadStart(SumData)); ot1. Start(val); } } private static void ReadData(object state) { System. Windows. Forms. Application. Run; } void setTextboxText(int result) { if (this. InvokeRequired) { this. Invoke(new IntDelegate(SetTextboxTextSafe), new object { result }); } else { SetTextboxTextSafe(result); } } void SetTextboxTextSafe(int result) { label1. Text = result. ToString; } private static void SumData(object state) { int result; //int icount = (int)state; int... --- ### 5 Best Error Monitoring Tools to Use in 2025 > Rollbar leads with full-stack support, followed by Sentry, Datadog, Bugsnag, and LogRocket. Includes pricing, pros/cons, and essential features. - Published: 2025-01-26 - Modified: 2025-01-27 - URL: https://rollbar.com/blog/best-error-monitoring-tools/ - Categories: topics - Tags: error-monitoring The best tool to track, analyze, and manage errors at scale? Rollbar tops our list. What every developer should know about error monitoring Ever had your app crash and struggle to figure out why? That's where error monitoring comes in. When something breaks, these tools give you the full picture - exact state of the app, complete stack trace, and even the code change (git commit) that caused the issue. Think of it as your production environment's black box recorder. The best engineering teams in the world utilize these tools to stay ahead of issues before their customers ever report them. You'd be hard pressed to find a leading startup or member of the Fortune 500 that isn't using error monitoring. Critical features to look for When evaluating error monitoring solutions, certain capabilities are essential - they're the features you simply can't compromise on. Here's what to look for: Smart alerts that cut through noise and highlight critical issues, showing exact impact and severity. No more guessing which errors matter most. Release health tracking that instantly reveals if a new deployment spiked error rates or revived old bugs. Deploy with confidence, knowing you'll catch regressions fast. Quick recovery tools including one-click rollbacks and feature flag controls. Spot a problem? Roll back the code or disable specific features in seconds. Root cause analysis that connects errors to specific code changes, making debugging feel like time travel instead of guesswork. User impact tracking that shows you whose experience is affected, helping prioritize... --- - [Anler Hernandez Peral](https://rollbar.com/?employee=anler-hernandez-peral): - [Cyrus Radfar](https://rollbar.com/?employee=cyrus-radfar): - [Nick Hodges](https://rollbar.com/?employee=nick-hodges): ### 5 Best Session Replay Tools in 2025 > Users lie, logs lie, everything lies. But session replay tools show you exactly what happened. The newest tools use AI to keep watch so you don't have to. - Published: 2025-01-21 - Modified: 2025-02-21 - URL: https://rollbar.com/blog/session-replay-tools/ - Categories: topics - Tags: topics Remember when debugging user issues meant asking them "can you tell me exactly what you were doing? " and getting responses like "I clicked the thing and it went whoosh"? Those dark days are behind us thanks to session replay tools, which are like having a super-powered security camera for your app - minus the grainy footage and that one guard who's always falling asleep. Let's look at some of the top players in this space and see how they're helping developers turn "works on my machine" into "works on every machine. " Fullstory Source: Fullstory FullStory's session replay tool does more than just play back user sessions - it uses AI to generate quick summaries of what happened, which is super handy when you're trying to debug issues without watching hours of footage. What really caught my eye though is their privacy approach - you can customize exactly what gets recorded and what gets masked out, which is crucial if you're dealing with sensitive data. The tool automatically captures everything without requiring you to add special tags to your code (they call it "tagless autocapture"), and you can see all sorts of user behavior, even when people are jumping between multiple tabs. FullStory also built in some neat features for tracking conversion funnels and generating heatmaps, so you can spot where users are getting stuck or dropping off. Basically, it's trying to be your all-in-one tool for understanding what's actually happening when users interact with your site or app.... --- - [](https://rollbar.com/?employee=1139): - [Juanjo Marrón](https://rollbar.com/?employee=juanjo-marron): ### Unlock Enhanced Item Management with Our Revamped Related Tab > We’re excited to share some great news about our Related Tab feature! We’ve listened to your feedback and made big improvements to help you manage and investigate your items more easily. The Related Tab is a helpful tool that shows you other items related to the one you’re looking at. This makes it easier to see if the same issue is happening in different parts of your code base or if there are similar items that might be connected. Knowing this can help you understand if a problem is widespread or if there are other occurrences that could help you debug it quicker. - Published: 2025-01-07 - Modified: 2025-01-07 - URL: https://rollbar.com/blog/enhanced-related-items/ - Categories: product - Tags: Usage Notifications We’re excited to share some great news about our Related Tab feature! We’ve listened to your feedback and made big improvements to help you manage and investigate your items more easily. The Related Tab is a helpful tool that shows you other items related to the one you’re looking at. This makes it easier to see if the same issue is happening in different parts of your code base or if there are similar items that might be connected. Knowing this can help you understand if a problem is widespread or if there are other occurrences that could help you debug it quicker. With our latest update, merging items is now simpler than ever. You can combine related items right from the Similar Items table. This means you don’t have to go through the hassle of searching for and merging items on a separate page. By grouping similar items together, your list stays organized and clear, making it easier to spot real issues in your system. We’ve also added new tables that show items introduced or reactivated in the same code versions as your current item. This helps you find other items that might have the same root cause because they appeared with related code updates. These new tables make it easier to see patterns and fix problems more effectively. But that’s not all! When you upgrade to our Essentials plan you get access to the improved Related Tab and additional tools like Summarization and Item Snooze. This means you... --- - [Maggie Liu](https://rollbar.com/?employee=maggie-liu): - [Drew Meyers](https://rollbar.com/?employee=drew-meyers): ### What is OpenTelemetry > An Observability framework and toolkit designed to create and manage telemetry data such as traces, metrics, and logs. - Published: 2024-12-17 - Modified: 2024-12-19 - URL: https://rollbar.com/blog/what-is-opentelemetry/ - Categories: topics What is OpenTelemetry? Let’s explore what OpenTelemetry is and isn’t. Here is what OpenTelemetry says about the project... OpenTelemetry is: An Observability framework and toolkit designed to create and manage telemetry data such as traces, metrics, and logs. Vendor- and tool-agnostic, meaning that it can be used with a broad variety of Observability backends, including open source tools like Jaeger and Prometheus, as well as commercial offerings. Not an observability backend like Jaeger, Prometheus, or other commercial vendors. Focused on the generation, collection, management, and export of telemetry. A major goal of OpenTelemetry is that you can easily instrument your applications or systems, no matter their language, infrastructure, or runtime environment. The storage and visualization of telemetry is intentionally left to other tools. OpenTelemetry has a very broad focus that includes traces, metrics and logs which is a double edge sword for many developers. To understand why OpenTelemetry collects the amount of data it does, it’s worth understanding what Observability is as seen by OpenTelemetry. What is observability? Observability is the ability to understand the internal state of a system by examining its outputs. In the context of software, this means being able to understand the internal state of a system by examining its telemetry data, which includes traces, metrics, and logs. To make a system observable, it must be instrumented. That is, the code must emit traces, metrics, or logs. The instrumented data must then be sent to an observability backend. Why OpenTelemetry? OpenTelemetry satisfies the need for observability... --- - [Diego Veralli Bortheiry](https://rollbar.com/?employee=diego-veralli-bortheiry): ### Most Popular Java Web Frameworks in 2025 - Published: 2024-12-16 - Modified: 2024-12-19 - URL: https://rollbar.com/blog/most-popular-java-web-frameworks/ - Categories: topics - Tags: frameworks Look, if you're starting a new Java web project in 2025, you should probably just use Spring Boot. With the highest adoption rate in the Stack Overflow Developer Survey of any Java web framework and overwhelming enterprise usage, it's the default choice for modern Java web development. It has the largest ecosystem, best documentation, most active community, and strongest cloud-native support. That said, there are specific scenarios where you might consider other Java frameworks. JSF still makes sense if you're deeply invested in the Jakarta EE ecosystem. GWT can be valuable if your team wants to write frontend code in Java instead of JavaScript. Vaadin shines for internal business applications where rapid UI development trumps customization. Play Framework deserves serious consideration if you're building reactive systems, as its architecture is specifically designed for high-concurrency and real-time applications. While these frameworks may have smaller communities than Spring Boot, they excel in their specific use cases. Below, we'll examine what makes each of these frameworks uniquely valuable, starting with the dominant Spring ecosystem. Spring Project Site: https://spring. io/ Primary Sponsor: Pivotal Software Spring is more than just a web framework. It is a complete programming model that is built on and with Java, starting with Spring Boot, which is a way to get a spring application up and running with minimal configuration and no application server required. At the other end of the spectrum is Spring Cloud, which is a combination of components that allows developers to build resilient and reliable cloud-native... --- - [Owen Linderholm](https://rollbar.com/?employee=owen-linderholm): - [Rafael Moore Cid](https://rollbar.com/?employee=rafael-moore-cid): ### How to Fix Android's Resources.NotFoundException > This error is like trying to order your favorite dish at a restaurant, only to have the waiter tell you it's not on the menu anymore. - Published: 2024-12-10 - Modified: 2025-02-19 - URL: https://rollbar.com/blog/android-content-res-resources-notfoundexception/ - Categories: Android, Code Tutorials - Tags: Android The Resources. NotFoundException is Android's way of saying "Hey, you told me to grab something, but it's not where you said it would be! " This error typically shows up when you're trying to access strings, layouts, drawables, or other resources that Android can't locate in your app's resource files. Maybe they were renamed, deleted, or never existed in the first place. Or perhaps they're hiding in the wrong folder. But before you start questioning your career choices or contemplating a switch to iOS development (let's not get crazy here), let's break down what's actually causing this error and how to fix it. Trust me, it's simpler than you might think. Common Causes and Solutions Let's cut to the chase and look at the four most common reasons you're seeing this error, along with how to fix each one. No fluff, just solutions. 1. The Case of the Missing String You're trying to use getString(R. string. welcome_message), but welcome_message is nowhere to be found in your strings. xml. Welcome! // Typo in name Welcome! // Correct name Solution: Double-check your strings. xml. Look for typos and make sure you actually defined the string you're trying to use. 2. findViewById Gone Wrong This classic mistake happens when you try to find a view that doesn't exist in your layout. It's usually caused by a mismatch between your layout XML and your Java/Kotlin code. // The problematic code val textView = findViewById(R. id. text_view_missing) // Oops! // The fix: Make sure the... --- - [David Hackett](https://rollbar.com/?employee=david-hackett): - [Christian Fitzgerald](https://rollbar.com/?employee=christian-fitzgerald): - [Jennifer Vannoy](https://rollbar.com/?employee=jennifer-vannoy): - [Justin Hochsprung](https://rollbar.com/?employee=justin-hochsprung): - [Krisztián Griz](https://rollbar.com/?employee=krisztian-griz): - [Nitin Bhasin](https://rollbar.com/?employee=nitin-bhasin): ### Next.js or Remix: Which Framework is Better, and When? > Both frameworks cater to modern web development needs, but they differ in their approach to routing, data fetching, and performance optimization. - Published: 2024-12-07 - Modified: 2025-01-09 - URL: https://rollbar.com/blog/nextjs-vs-remix/ - Categories: topics - Tags: JavaScript, next The choice between Next. js and Remix is not just about picking a framework; it's about embracing a way of thinking that will define the trajectory of your application and your growth as a developer. Both frameworks cater to modern web development needs, but they differ in their approach to routing, data fetching, and performance optimization. By understanding the philosophical underpinnings and practical implications of each framework, you can make an informed decision about which path aligns best with our project's goals and your own development philosophy. 1. Routing and Navigation Next. js uses a file-based routing system where each file in the “pages” directory becomes a route. For example, if you have a file called index. js in the pages directory, it will be mapped to the / route. So to create a new route in Next. js, simply create a new file in the pages directory. For example, if you want to create a new route called /about, you simply create a new file called about. js in the pages directory: import React from 'react'; function AboutPage { returnAbout Us; } export default AboutPage; Remix, on the other hand, uses a route-centric approach, meaning routes are explicitly mentioned in the configuration file, generally remix. config. js. This configuration file maps the URLs to route modules. Let’s say you have a Remix project with the following route modules: src/ ├── routes/ │ ├── index. tsx // Represents the root route ("/") │ ├── about. tsx // Represents the "/about"... --- - [Maria Stanley](https://rollbar.com/?employee=maria-stanley): - [Daniel McCoy](https://rollbar.com/?employee=daniel-mccoy): ### Email Warmup's Story with Rollbar > We use Rollbar to monitor our backend systems, particularly for email deliverability algorithms and campaign management tools. It integrates seamlessly with our Slack channels to alert our team about issues in real-time. Without Rollbar, small glitches could escalate into bigger problems, impacting our clients’ email performance. - Published: 2024-12-06 - Modified: 2024-12-06 - URL: https://rollbar.com/blog/emailwarmup-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Email Warmup is a company focused on improving email deliverability, helping outbound emails drive sales rather than end up as spam 1. Can you introduce yourself, and tell us about your team or company? We’re Email Warmup, a business dedicated to boosting email deliverability so outbound emails increase sales, not spam. 2. How do you plan to use Rollbar? We use Rollbar to monitor our backend systems, particularly for email deliverability algorithms and campaign management tools. It integrates seamlessly with our Slack channels to alert our team about issues in real-time. Without Rollbar, small glitches could escalate into bigger problems, impacting our clients’ email performance. 3. What made you choose Rollbar? Rollbar stood out due to its intuitive dashboards, easy setup, and actionable insights. Compared to other tools, Rollbar excels at prioritizing critical issues using the Pareto principle, allowing us to focus on what matters most and deliver uninterrupted service to our clients. Visit Founder of Email Warmup's LinkedIn Page --- - [Rollbar Editorial Team](https://rollbar.com/?employee=rollbar-editorial-team): - [Pawel Szczodruch](https://rollbar.com/?employee=pawel-szczodruch): ### How to Detect Memory Leaks in Java: Causes, Types, & Tools > If memory leaks are not handled, your application can eventually run out of memory and terminate. Learn what causes memory leaks in Java and how to handle it. - Published: 2021-04-01 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/how-to-detect-memory-leaks-in-java-causes-types-tools/ - Categories: Code Tutorials, Java - Tags: java A memory leak is a situation where unused objects occupy unnecessary space in memory. Unused objects are typically removed by the Java Garbage Collector (GC) but in cases where objects are still being referenced, they are not eligible to be removed. As a result, these unused objects are unnecessarily maintained in memory. Memory leaks block access to resources and cause an application to consume more memory over time, leading to degrading system performance. If memory leaks are not handled, an application can eventually run out of memory and terminate with an 'OutOfMemoryError', which is irrecoverable. What Causes Memory Leaks in Java In general, a Java memory leak happens when an application unintentionally (due to logical errors in code) holds on to object references that are no longer required. These unintentional object references prevent the built-in Java garbage collection mechanism from freeing up the memory consumed by these objects. Common causes for these memory leaks are: Excessive session objects Insertion without deletion into Collection objects Unbounded caches Excessive operating system page swapping Un-invoked listener methods Poorly written custom data structures Types of Memory Leaks in Java Memory leaks can be of various types, depending on how they happen. The most common types are detailed below: 1. Through static Fields Excessive usage of static fields can potentially lead to a memory leak. In Java, static fields usually remain in memory as long as the application is running. Here’s an example: public class StaticFieldsMemoryLeakExample { private static List integers = new ArrayList; public... --- ### Sentry, But Better? 6 Sentry Alternatives to Keep Your Code Error-Free > If you're looking to optimize your app’s performance and squash bugs more efficiently, we look at some top-tier alternatives to Sentry you should consider. - Published: 2024-12-04 - Modified: 2024-12-04 - URL: https://rollbar.com/blog/sentry-alternatives-for-error-tracking/ - Categories: topics - Tags: topics We all know Sentry, right? It's a big name in error monitoring. But what if I told you there are some impressive alternatives out there that might just suit your needs even better? We’ve got Rollbar, Raygun, Bugpilot, and a few more on the table. Each one brings something unique. Let's compare them against Sentry by diving into their features, ease of use, integrations, and of course, their price. If you're looking to optimize your app’s performance and squash bugs more efficiently, this is the guide for you. Rollbar With 4. 5 out of 5 stars on both Capterra and G2, Rollbar is acclaimed as one of the top error monitoring tools. Rollbar provides real-time error monitoring and reporting with features like error grouping, deduping, and detailed error analytics. It supports a wide range of platforms and allows for stack traces and proactive triaging of errors. Rollbar also integrates well with project management tools like Slack, Jira, and GitHub. All this makes Rollbar a solid, user-friendly choice for keeping your app running smoothly. If you're looking for an easy to use error monitoring tool with advanced diagnostic capabilities, give Rollbar a try. Plans start at $0/mo and unlike Sentry’s free plan, Rollbar’s offers unlimited users. Raygun Raygun focuses on providing detailed diagnostic data with a developer-friendly interface. It offers real-user monitoring, dashboards, transaction tracing, and usage-based pricing. Raygun also goes beyond tracking bugs. They offer an integrated platform that combines error monitoring, real user monitoring, and application performance monitoring (APM).... --- - [Patrick Bonner](https://rollbar.com/?employee=patrick-bonner): - [Nico Kruger](https://rollbar.com/?employee=nico-kruger): ### How to Debug Java Code Faster with Eclipse > Modern IDEs like Eclipse provide debugging tools that make it easier for developers to walk through their code interactively. Learn all the best practices here. - Published: 2021-03-26 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/how-to-debug-java-code-faster-with-eclipse/ - Categories: Code Tutorials, Java - Tags: java Java Debugging with Eclipse Debugging is the process of identifying and fixing any issues in the source code of a program. Modern IDEs like Eclipse provide debugging tools that make it easier for developers to walk through their code interactively and inspect it to spot and resolve any issues. Debugging support in Eclipse Eclipse allows running an application in Debug mode which helps with stepping through each line of code in a program. Eclipse also provides a Debug Perspective which is a set of views grouped together that help inspect code and make the debugging process very effective. Let’s walk through the steps of debugging a Java application with Eclipse using a simple program, as shown below: public class EclipseDebuggingExample { public int add(int a, int b) { int result = a + b; return result; } public static void main(String args) { EclipseDebuggingExample ede = new EclipseDebuggingExample; int a = 3; int b = 7; int result = ede. add(a, b); System. out. printf("%d + %d = %d", a, b, result); } } Two simple methods mainandaddare defined in the above code example. The main method calls the add method to add two integers a and b and return their sum. The steps for debugging this program are shown below: Step One: Set Breakpoints A breakpoint is a point in code where the program execution pauses during debugging. This allows the programmer to inspect code and the flow of execution at the defined breakpoint. To define a breakpoint, either... --- ### Smarter Operations: How Rollbar + GrowthBook Minimize Downtime and Boost Reliability > Software development and operations teams are the guardians of system stability, ensuring uptime, reliability, and performance across complex software ecosystems. The stakes are high—every second of downtime impacts your brand’s reputation and bottom line. That’s why integrating Rollbar’s error monitoring with GrowthBook’s feature flagging is a game-changer for ops teams. - Published: 2024-12-02 - Modified: 2024-12-02 - URL: https://rollbar.com/blog/how-rollbar-growthbook-minmize-downtime-boost-reliability/ - Categories: Engineering, product - Tags: Usage Notifications Software development and operations teams are the guardians of system stability, ensuring uptime, reliability, and performance across complex software ecosystems. The stakes are high—every second of downtime impacts your brand’s reputation and bottom line. That’s why integrating Rollbar’s error monitoring with GrowthBook’s feature flagging is a game-changer for ops teams. This combination equips you to proactively identify and mitigate issues tied to new features before they impact your users. Here’s how Rollbar and GrowthBook transform your workflows and safeguard your operations. Real-Time Alerts for Feature-Specific Issues With Rollbar, your team already has detailed, real-time insights into application errors. But what happens when a spike in errors is tied to a specific feature rollout? GrowthBook’s feature flags take the guesswork out of identifying the culprit. You can toggle features on or off instantly while Rollbar continues to monitor the broader system. Example: A new payment gateway rollout causes intermittent errors for users in specific geographies. Rollbar flags the issue, and with GrowthBook, your team disables the feature in those regions in seconds, ensuring minimal user disruption. Instant Rollbacks Without Releasing New Code When critical errors arise, traditional workflows often require a full rollback or emergency patch deployment. GrowthBook eliminates this bottleneck by allowing you to disable problematic features on the fly—no redeployments needed. Rollbar ensures your team is alerted the moment something goes wrong. Key Benefit: Spend less time firefighting and more time ensuring system stability. Focused Root Cause Analysis Large-scale applications can make debugging a needle-in-a-haystack challenge. By linking Rollbar’s... --- - [Jack Delahunt](https://rollbar.com/?employee=jack-delahunt): ### Announcing the Rollbar Terraform Provider For Managing Rollbar Automatically - Published: 2021-03-23 - Modified: 2021-09-08 - URL: https://rollbar.com/blog/announcing-the-rollbar-terraform-provider-for-managing-rollbar-automatically/ - Categories: product - Tags: integrations It can be really exciting when your development team is growing fast! But then you soon realize that managing all the developer tools to constantly create new projects or add users is becoming a full-time job. Well, not anymore. At least, not for Rollbar. We’re releasing our HashiCorp Terraform Verified Provider for Rollbar today, built in partnership with HashiCorp. Organizations can now provision and manage Rollbar accounts automatically through Terraform, the world’s most widely used multi-cloud provisioning product. We know that managing tools can become harder as teams scale. This shouldn’t get in the way of discovering and resolving errors in real-time across applications to ensure the desired customer experience. Our partnership with HashiCorp allows teams to solve this by utilizing infrastructure-as-code to manage Rollbar for the first time ever. Teams can easily automate several account management processes while saving time and preventing manual errors. This offers an easier way to manage your Rollbar account instead of relying on the UI or the API directly. “With the new HashiCorp Terraform Verified Provider for Rollbar, our joint customers can manage their Rollbar projects, tokens, users, and teams with ease. ” said Asvin Ramesh, Director, Technology Alliances, HashiCorp “ We are pleased to have Rollbar as a technology partner and look forward to our future collaboration”. What can you do with it? Manage projects and users with ease Terraform can control resources such as projects, teams, and users in your Rollbar account. You can use declarative config files to - Create, read,... --- - [Nia Hampton](https://rollbar.com/?employee=nia-hampton): ### The Python stderr Guide I Wish I Had As A Beginner > Learn how to separate error messages from regular output in Python using stderr. Clear examples, command-line tricks, and formatting tips. - Published: 2024-11-18 - Modified: 2024-11-18 - URL: https://rollbar.com/blog/raise-stderr-python/ - Categories: Code Tutorials, Python - Tags: Python Is your program throwing a fit but those error messages are lost somewhere in the avalanche of print statements? Let's fix that! Enter stderr - Python's built-in solution for separating your normal program output from your "everything is on fire" messages. Think of your Python program as having two voices: stdout (its inside voice) and stderr (its "EVERYONE PANIC" voice). stdout is for normal stuff like "Hey, I processed that file" or "Here's your data. " stderr is for when things go wrong and your code needs to scream for help. It's like having a separate lane for emergencies. Quick example of stderr Here’s a super simple way to use stderr: import sys # Your regular, calm output print("Everything is fine, just processing some data... ") # Your code's panic mode print("HELP! SOMETHING'S ON FIRE! ", file=sys. stderr) You could also write it this way with sys. stderr. write, which is slightly more efficient but the performance difference is too small to matter for most people: sys. stderr. write("🔥 ERROR: The thing that shouldn't break just broke 🔥\n") Real life stderr examples (because theory is boring) The case of the evil CSV Ever tried to process a CSV file only to find out it's missing, corrupted, or formatted by someone who thinks commas are optional? Here's how to handle those file mishaps gracefully with stderr: import sys import csv def process_important_file(filename): try: with open(filename) as f: data = csv. DictReader(f) # Actually do stuff with the data print("Processing your amazing... --- - [Queen Lee](https://rollbar.com/?employee=queen-lee): ### Infographic: The State of Software Code - Published: 2021-03-16 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/infographic-the-state-of-software-code/ - Categories: topics - Tags: error-monitoring We surveyed nearly 1,000 developers across the U. S. to uncover key development trends and insights. Today’s businesses are software businesses. If there was any positive in 2020, it’s the power software has to allow us to continue in some “normal” sense. Learn how this survey uncovers how too many companies and their development teams still have a major blind spot when it comes to errors in their code. Take a look at our recent infographics for the highlights of the state of software code today. --- - [Gaurav Anand](https://rollbar.com/?employee=gaurav-anand): ### Chayn's Story with Rollbar > At PLUM, we focus on crafting custom software solutions tailored to specific needs. Our projects range from helping startups launch their initial products to assisting established enterprises in scaling and enhancing their software infrastructure. - Published: 2024-11-04 - Modified: 2024-11-04 - URL: https://rollbar.com/blog/chayn-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Chayn is a global nonprofit that creates open, online resources and services for survivors of abuse that are trauma-informed, intersectional, multilingual and feminist. 1. Can you introduce yourself, and tell us about your team or company? My name is Ellie and I am the Senior Software Engineer for Chayn. Chayn is a global nonprofit, run by survivors and allies from around the world, creating resources to support the healing of survivors of gender-based violence. 2. How do you plan to use Rollbar? At Chayn, we rely on Rollbar for monitoring some of our key platforms, including Bloom, our online support space that offers video courses and various resources for survivors of gender-based violence. Rollbar helps us stay responsive to the needs of our users by immediately alerting us to any technical issues they may encounter. By using Rollbar, our team can quickly address and resolve issues, ensuring our users have uninterrupted access to vital resources. Without Rollbar, identifying and fixing these issues would be more challenging and would delay our ability to support survivors effectively 3. What made you choose Rollbar? As a nonprofit, we need reliable, high-quality tools that offer strong value for the investment. Rollbar stood out for its excellent balance of functionality and affordability. Its seamless integration with our existing alerting systems made it easy to adopt, helping us stay agile and responsive to any issues that may impact our users Visit Chayn's LinkedIn Page --- - [Hayden Kempton](https://rollbar.com/?employee=hayden-kempton): ### Announcing The 2021 State of Software Code Report - Published: 2021-02-17 - Modified: 2023-06-20 - URL: https://rollbar.com/blog/announcing-the-2021-state-of-software-code-report/ - Categories: topics - Tags: error-monitoring When Cory Virok and I started Rollbar in 2012, we knew something was lacking in how software was being built. Developers continue to get better everyday at building applications — the widespread adoption of microservices architectures and open source are evidence of this. But, we realized something was still holding us back. And that was how we track and fix bugs. We both personally felt the pain of spending hours, days, or even weeks investigating issues, combing through logs, to not just figure out how to fix a bug, but to figure out what the bug was. We had application performance monitoring (APM) tools but they only told us the health of our system and infrastructure. The rise of observability is helpful to gain that systematic insight as software becomes more complex. But we didn’t need to understand the health of our systems, we needed to know where our code was broken. I knew we weren’t the only developers lacking that insight, and I know that pain is still felt in companies, large and small, today. That’s why I’m excited to share our first “State of Software Code Report” that provides insights into the current state of how developers are building software and dealing with the inevitability of bugs and errors. We surveyed nearly 1,000 developers across the U. S. to find out and uncover key trends and insights, including: Traditional Error Monitoring Falls Short. Nearly every developer surveyed responded that traditional methods fall short. They’re spending too much time... --- - [Ian Flanagan](https://rollbar.com/?employee=ian-flanagan): ### How to Fix the OutOfMemoryError in Java > A java.lang.OutOfMemoryError is a runtime error in Java which occurs when the JVM is unable to allocate an object due to insufficient space in the Java heap. - Published: 2024-10-20 - Modified: 2024-10-21 - URL: https://rollbar.com/blog/how-to-handle-outofmemoryerror-exceptions-in-java/ - Categories: Code Tutorials, Java - Tags: java Picture this: It's Black Friday, and you're circling a packed mall parking lot. Every space is taken, and cars are lined up waiting for spots. You keep circling, but there’s just no place to park and you run out of gas. When you see a java. lang. OutOfMemoryError it’s just like what you experienced in that overcrowded parking lot. The Java Virtual Machine (JVM) has run out of space to "park" new objects in memory. Now here's the thing about Java: it loves objects. It can't get enough of them. Objects here, objects there, objects everywhere. But all these objects need a place to park, and that place is called the heap. When there’s not enough native memory to support the loading of a Java class or the Java Garbage Collector (GC) cannot free up the space in the heap required for a new object, it throws its hands up and yells "OutOfMemoryError! " which is programmer-speak for "We're doomed! " No matter how efficiently your code is written, if there's no room left, you're stuck. Let’s take a stroll through the heap and figure out how to give your JVM that sweet, sweet memory it craves. What Causes java. lang. OutOfMemoryError The JVM's memory management scheme sets aside a portion of the heap memory to store newly allocated objects. Any referenced objects remain active in the heap throughout their lifespan (until their reference is closed) and occupy memory. When objects are no longer referenced, they become eligible for the... --- - [Israel Perez](https://rollbar.com/?employee=israel-perez): ### Spring Boot vs Spring MVC: How do They Compare? - Published: 2021-01-11 - Modified: 2022-06-21 - URL: https://rollbar.com/blog/spring-boot-vs-spring-mvc-how-do-they-compare/ - Categories: topics - Tags: frameworks It’s common to confuse Spring Boot and Spring MVC. They both, after all, include the word “Spring” and are used with the Spring Framework. However, both accomplish different purposes and can be used alongside each other, rather than one being better than the other. We unravel and demystify your frequently asked questions so you can grasp when to use which and reduce the development time of your web application. What Is Spring Boot? Spring Boot is an extension of the Spring framework that allows developers to shorten the process needed to build a web application by using auto-configuration. You can create a standalone application that uses Java and get it up and running without needing to install it onto a separate web server. Use Spring Boot anytime you need a production-ready application quickly. What Is Spring MVC? Spring MVC is a library within the Spring framework that simplifies handling HTTP requests and responses. It’s built on the Servlet API and is an essential component of the Spring Framework. The MVC stands for Model-View-Controller, which is its core function, allowing separation of the business logic, presentation logic, and navigation logic. Use Spring MVC’s ready-made components to build fully functional Java web applications. Difference Between Spring MVC and Spring Boot While Spring MVC is an essential framework that exists within Spring as a whole, Spring Boot is an optional module that is used to streamline the development process, which can include integrating Spring MVC during the build process. Without Spring Boot, Spring... --- - [Matheas Hutcherson](https://rollbar.com/?employee=matheas-hutcherson): ### How to Fix TypeError: NoneType Object Is Not Iterable in Python > The Python TypeError: NoneType Object Is Not Iterable is an exception that occurs when trying to iterate over a None value. Learn how to fix it. - Published: 2024-10-20 - Modified: 2024-10-21 - URL: https://rollbar.com/blog/python-typeerror-nonetype-object-is-not-iterable/ - Categories: Code Tutorials, Python - Tags: Python Imagine your friends are over to play poker and you reach for the box of playing cards, but something feels off - it's surprisingly light. You open it and see the box is completely empty. In this moment of surprise, you're experiencing something akin to a TypeError: NoneType Object Is Not Iterable in Python. Just as you can't play cards with an empty box, Python can't iterate over a None value. You're trying to perform an action (playing cards/iterating) on something that simply isn't there, even though you expected it to be. The tricky part is, just like you didn't realize the card box was empty until you checked inside, you might not know a Python object is None until you try to use it. This is why this error can catch developers off guard, appearing in seemingly working code. In this blog post, we'll explore why this error occurs, how to identify it in your code, and provide multiple strategies to fix and prevent it. What Causes TypeError: NoneType Object Is Not Iterable For an object to be iterable in Python, it must contain a value. Therefore, trying to iterate over a None value raises the Python TypeError: NoneType Object Is Not Iterable exception. Some of the most common sources of None values are: Calling a function that does not return anything. Calling a function that sets the value of the data to None. Setting a variable to None explicitly. Accessing a non-existent key in a dictionary. How to... --- - [Abby Dugan](https://rollbar.com/?employee=abby-dugan): - [Martin Malloy](https://rollbar.com/?employee=martin-malloy): ### Introducing AI-Assisted Workflows and Automation-Grade Grouping - Published: 2020-11-17 - Modified: 2022-12-07 - URL: https://rollbar.com/blog/introducing-ai-assisted-workflows-and-automation-grade-grouping/ - Categories: product - Tags: continuous-delivery Imagine you’ve been working on a new feature for weeks. Finally—after exhaustive QA and testing, and more late coding sessions than you care to count—you release with a feeling of both accomplishment and relief. Only to be woken up at 3am that something’s wrong. Or worse, you get flooded with customer complaints that it’s not working properly. Well, it’s probably a scenario you don’t need to imagine. Every developer has a version of this story to tell. But, it doesn’t have to be this way. At Rollbar, we help developers focus on continuously improving their code. Instead of just fixing it. That’s why we’re excited to announce our newest features that let developers do just that: AI-Assisted Workflows and Automation-Grade Grouping. Rollbar’s AI-Assisted Workflows are automated workflows made for development teams who want to get ahead of errors before they impact users. Automation-Grade Grouping, our next generation grouping engine, provides the foundation for these AI-Assisted Workflows. Powered by machine learning, it automatically groups similar errors together to give developers trustworthy alerts, while eliminating noise and missed alarms. Read on to learn more about how these new features help developers proactively discover, predict, and remediate errors faster at all stages from dev to staging to release. The Benefits of AI-Assisted Workflows Companies, and their development teams, invest significant time and resources in QA, testing, and the tools to support those efforts to find and fix errors. Because they know uncaught bugs can negatively impact user experience and, ultimately, revenue. But investing... --- - [András Tarsoly](https://rollbar.com/?employee=andras-tarsoly): - [Dean Rizzo](https://rollbar.com/?employee=dean-rizzo): ### Meet Continuous Code Improvement - Published: 2020-11-17 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/meet-continuous-code-improvement/ - Categories: company - Tags: company growth If your experience as a developer is anything like mine, the best moments are those known as the "flow state. ” When distractions drift into the background and all your energy is going in the creative direction of solving the problem at hand. Your brain is directly connected to your users through your code. Months of progress happens in hours. Unfortunately, those moments are rare. But it’s not emails or Slack messages that are the biggest distractions. The biggest headache is when things should work but don't. We spend too much time and effort banging our heads against the wall just trying to keep things from breaking. It’s not sustainable. Especially in 2020, when every business is now a software business. I believe that “flow state” is achievable. The entire Rollbar team and I are inspired by the challenge to make it a reality for every developer, every day. But we need to move the focus from fixing to building. And, after 8 years with more than 5,000 businesses relying on Rollbar to build software quickly and painlessly, I’m excited to share our vision for the future. Today, we’re announcing the next evolution of Rollbar as The Continuous Code Improvement Platform. In support of this evolution, we’re introducing a new brand identity—including a new logo—and we’re releasing unique features to enable a new way to code. We call them AI-Assisted Workflows and Automation-Grade Grouping. Now, it’s possible to deal with errors proactively, instead of being reactive. Introducing Continuous Code Improvement... --- - [Jeffrey Hoffer](https://rollbar.com/?employee=jeffrey-hoffer): ### How to Fix SyntaxError: Unexpected Token in JavaScript > This error typically results from missing or misplaced symbols, such as parentheses, commas, or brackets, or from improper JSON formatting. Let's fix it. - Published: 2024-10-09 - Modified: 2024-10-09 - URL: https://rollbar.com/blog/how-to-fix-syntaxerror-unexpected-token-in-javascript/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript It’s a vague, unhelpful message that feels more like a riddle than an error. You know something doesn’t belong, but you're left guessing what that "token" is and why it's unexpected. Let's demystify what’s really going on behind the scenes and get your code running smoothly again. The "SyntaxError: Unexpected token" in JavaScript occurs when the code contains a character or symbol that the JavaScript engine does not expect, often due to a typo or syntax mistake. Luckily, if you read the full error log there are usually some helpful details about where the error occurred, including the line number and sometimes even the specific character position. For example: Uncaught SyntaxError: Unexpected token ',' at script. js:12:15 The part Unexpected token ',' tells you which token was unexpected—in this case, a comma. The part script. js:12:15 points you to the exact location of the error — line 12, character 15 in the file named script. js. To fix it, you’ll need to carefully review the line and nearby lines where the error is reported, checking for missing characters or incorrect syntax. For example, say you tried to define a function that takes two numbers and returns their multiplication: const multiply = x, y => x * y; You would get SyntaxError: Unexpected token ',' with that because multiple parameters in an arrow function should be enclosed in parentheses. The fix would be to edit the code to this: const multiply = (x, y) => x * y; As you can... --- - [Alex Tkach](https://rollbar.com/?employee=alex-tkach): ### Rollbar SDKs and the new Apple-Silicon Mac Platform - Published: 2020-11-11 - Modified: 2023-01-19 - URL: https://rollbar.com/blog/rollbar-sdks-and-the-new-apple-silicon-mac-platform/ - Categories: product - Tags: SDK Apple just introduced Apple M1, it’s new processor, along with their latest product versions. Back in June, when Apple had first announced the transition to Apple silicon, we applied for their Universal App Quick Start Program and, eventually, received an Apple Developer Transition Kit (DTK) so that we could try out our Rollbar-iOS and Rollbar. NET (via Xamarin) SDKs on the Apple new platform. After setting up a beta version of Big Sur macOS that came preinstalled on the DTK and installing our development tools, we downloaded the latest at the time source code of our Rollbar-iOS SDK v2 codebase and our latest Rollbar. NET SDK codebase. Here is a summary of our findings. Rollbar-iOS SDK v2 (Coming out soon as the Rollbar-Apple SDK) The SDK source code was fully compilable (using the latest available Xcode beta-version) and run-time operational with no issue at all. A payload sent from one of our SDK sample apps compiled and ran on the DTK was successfully transmitted to the Rollbar Project Dashboard and reflected some specifics of its origin: macOS 11. 0. 0 (Big Sur) and device code listed as arm64: Rollbar. NET SDK Since the SDK must be built on a Windows machine (due to the SDK also targeting . NET Framework that is only available on Windows), our test case for this SDK looked like this: After downloading the SDK source code, we opened one of our sample apps in Visual Studio for Mac (that installed on the DTK without a... --- - [Nathan Sweet](https://rollbar.com/?employee=nathan-sweet): ### Shilpa's Story with Rollbar > Rollbar has been an excellent tool for error reporting on both the server and client sides. It has greatly helped us in pinpointing and identifying the root causes of issues. By using Rollbar, we’ve been able to make our product more robust over time. - Published: 2024-09-27 - Modified: 2024-09-27 - URL: https://rollbar.com/blog/shilpas-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Shilpa Dalmia Co-Founder & Chief Technology Officer     Shilpa has now been using Rollbar for 104 months! 1. My Role ActivityHero is a marketplace where families can find and book after-school classes and holiday camps, including summer, winter, fall, and spring break camps. For school districts and activity providers, ActivityHero serves as an after-school SIS management platform, helping them manage enrollments, track attendance, generate reports, communicate with parents, and much more. I am the co-founder and CTO of ActivityHero and I manage the ActivityHero product and engineering team. 2. My Passion in the Role Our mission at ActivityHero has always been to make after-school activities accessible to all children. It has been an incredible journey to see our platform become a hub for schools, activity providers, and families seeking enriching programs for kids. We have helped countless children participate in a wide variety of activities that inspire them to succeed and thrive in their personal and career pursuits. 3. The Rollbar Experience Rollbar has been an excellent tool for error reporting on both the server and client sides. It has greatly helped us in pinpointing and identifying the root causes of issues. By using Rollbar, we’ve been able to make our product more robust over time. We especially appreciate the detailed information Rollbar tracks, which helps us determine the scenarios in which particular issues occur. Additionally, features like GitHub integration, which allows us to track issues directly in GitHub, and Slack integration, which notifies us as soon as errors... --- - [Oluwarotimi Joseph Olorunyomi](https://rollbar.com/?employee=oluwarotimi-joseph-olorunyomi): ### 10 Developer Horror Stories To Keep You Up at Night - Published: 2020-10-19 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/10-developer-horror-stories-to-keep-you-up-at-night/ - Categories: topics - Tags: error-handling This is a guest post from our partners at LaunchDarkly. We software engineers like to think ourselves unflappable. Consider that we spend most of our days staring at glowing pages of eldritch horror that no mortal was meant to witness. We whisper and type our otherworldly incantations, all the while feeling the hungry gaze of a lurking cross-site scripting bug, or a shadowy use-after-free, or an accidental summoning of ZALGO. (H̨e̛ ̕c͢om͢es, you know. ) But no. Truthfully, we’re far more fragile than that. Living our lives on a tightrope over an ocean of chaos (or “unspecified behaviour”), we’re only one bad deploy away from a manic screaming fit, followed by a move to the countryside and banishment of any technology invented after 1947. So we consume horror novels by the truckload in an attempt to persuade ourselves that... well, things could be worse, you know? When you see that a senior engineer dresses all in black, listens to Sisters Of Mercy and Dimmu Borgir, and has a line of Melanie Tem novels above the O’Reilly manuals, remember that she uses them to calm down. Because she’s seen things. As, likely, have you. We know every developer has at least one horror story that still haunts them to this day. Likely, they have more than they’d care to remember. For All Hallows’ Eve, we decided to share some of the most dreadful stories we’ve come across over the years. We hope that some will be educational to the innocents in... --- - [Yoz Grahame](https://rollbar.com/?employee=yoz-grahame): ### Reduce noise and save time with the new Merge feature on the item detail page > We are excited to release a new feature that will make it easier to group your items, reduce noise, and simplify your error management directly from the Item Detail page header. While you are investigating an item,, you can now search for other items within the same project and environment and merge right from that page without having to navigate back to the Item List page. - Published: 2024-09-25 - Modified: 2024-09-25 - URL: https://rollbar.com/blog/item-merge/ - Categories: product - Tags: Usage Notifications We are excited to release a new feature that will make it easier to group your items, reduce noise, and simplify your error management directly from the Item Detail page header. While you are investigating an item,, you can now search for other items within the same project and environment and merge right from that page without having to navigate back to the Item List page. With all the details in front of you, this feature allows you to efficiently merge related items, helping to keep your Rollbar environment cleaner and more organized. Merging and grouping items helps you maintain focus on the information you find most relevant and keep a cleaner view of your Rollbar environment, so you can get a better idea of the current state of your system and find it easier to spot and address new issues. How it Works: Click the Merge button in the header of the item detail page. Use the merge panel to search for other items, grouping them into a new merged item or adding them to an existing group. We hope this enhancement will improve clarity, give you a clearer view of your system’s state, and allow you to resolve issues more efficiently. --- - [Ami Felson](https://rollbar.com/?employee=ami-felson): ### Introducing Versions API to Automate Error Response for New Code Versions - Published: 2020-08-05 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/introducing-versions-api-to-automate-error-response-for-new-code-versions/ - Categories: product - Tags: API You know the feeling. You’ve just deployed a new version to production and are monitoring the Rollbar dashboard for any new errors or looking out for any Slack notifications. You’re keeping an eye on the number of new or reactivated errors, their severity level, and triaging to see which errors need to be assigned and to whom. Now what if you could automate these tasks? We’re continuing our focus on automation with the release of our new Versions API! Back in 2018, we released Versions that allowed users to monitor and respond to any new or reactivated errors for every version of code deployed. As continuous delivery and workflow automation becomes more widespread, we want to make sure our users can automate the monitoring and response to errors. Why Use Versions API The difference between retaining and losing customers often comes down to user experience and application quality. With this feature, you can release more frequently or implement continuous delivery while ensuring the best possible end-user experience at all times. In addition, we all know how valuable engineering time can be. And automating error monitoring can help developers focus their energy on just the most important errors or even writing new code. What Can You Do With It While there can be many applications depending on your tech stack and workflows, here’s a quick summary of what you can do with this API: Gain visibility into the affects of new deployed versions on error rates through integrated dashboards. As an... --- - [Tamsin Guy](https://rollbar.com/?employee=tamsin-guy): ### How to Fix TypeError: Cannot Read Property of Undefined in JavaScript > This guide explains the root causes and offers multiple solutions from basic checks to advanced ES2020+ features like optional chaining. - Published: 2024-09-16 - Modified: 2025-03-17 - URL: https://rollbar.com/blog/javascript-typeerror-cannot-read-property-of-undefined/ - Categories: Code Tutorials, JavaScript - Tags: error-handling, error-monitoring, JavaScript Imagine you're at a buffet, eagerly approaching what you think is the dessert table, only to find an empty space where the chocolate cake should be. That disappointing moment? That's pretty much what happens in your code when you encounter the infamous "Cannot read properties of undefined" error. Just as you can't slice a piece of cake that isn't there, JavaScript can't read a property of an object that doesn't exist. But don't worry! Unlike that missing cake (which is truly a tragedy), this JavaScript error is something we can fix. In this guide we’ll unpack this common coding hiccup, understand why it happens, and explore several ways to prevent and handle it. What Causes “TypeError: Cannot Read Property of Undefined”? This error happens when you attempt to use a variable or object that hasn't been properly initialized or doesn't exist. Undefined means that a variable has been declared but has not been assigned a value, or you're trying to access a property that doesn't exist on an object. In JavaScript, properties and functions can only belong to objects. Since undefined is not an object type, calling a function or accessing a property on such a variable causes the TypeError: Cannot read property of undefined. To fix this, you can: Ensure the object exists before accessing its properties Use optional chaining (obj? . x) to safely access nested properties Provide default values using the OR operator (||) or nullish coalescing operator (? ? ) Let’s go through an example. “TypeError:... --- ### Introducing our new Java Spring Error Monitoring SDK - Published: 2020-07-20 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/introducing-our-new-java-spring-error-monitoring-sdk/ - Categories: product - Tags: java We’re excited to announce that we’ve strengthened our solution for Java Spring exception handling. Spring developers can now integrate Rollbar into their Java Spring Boot and Spring Web MVC applications even more quickly and easily. With our new SDK, instrumentation and getting real-time actionable error alerts takes just a few minutes. Spring has consistently been one of the most popular Java frameworks and we want to make sure we’re consistently offering the best possible solution for it. Get Real-time Error Alerts with Code Context Nobody likes to find out about errors from end users. For those unfamiliar with Rollbar, you can get real-time notifications of all errors with code context and metadata before your users get impacted. With telemetry, local variables, stack traces, and git blame all available at a click, debugging Spring errors can be a lot faster and easier. Here you can see the exact line of code that caused the error along with the avatar of the last person to edit that line of code - Notable Improvements Any exceptions raised by Spring will be handled automatically by Rollbar. Users don’t need to manually catch and send the exceptions. However, they do have the ability to catch and send custom events to Rollbar for debugging. The new integration automatically includes all the settings required for Spring, minimizing the number of changes and customization required by the users. The default setup already includes helpful components such as request's URL, parameters, etc. that can be powerful when debugging web... --- - [Omar Powell Guaglione](https://rollbar.com/?employee=omar-powell-guaglione): - [Árpád Fülöp](https://rollbar.com/?employee=arpad-fulop): ### How to use the Throws keyword in Java (and when to use Throw) > Both throw and throws are concepts of exception handling in Java. The throws keyword is used to ..., while the throw keyword is used to explicitly... - Published: 2024-09-16 - Modified: 2024-09-16 - URL: https://rollbar.com/blog/how-to-use-the-throws-keyword-in-java-and-when-to-use-throw/ - Categories: Code Tutorials, Java - Tags: java Imagine you're a postal worker sorting through a mountain of packages. Some packages are ticking suspiciously, while others are leaking mysterious liquids. As a responsible postal worker, you have two choices: deal with these problematic packages yourself (throw) or slap a big "HANDLE WITH CARE" sticker on them and pass them along to the next person in line (throws). Think of throw as actually creating an error in your program. You use it when something goes wrong and you want to stop the program. For example, you might use throw if someone enters an invalid password. On the other hand, throws is like a warning sign. You write it after the name of a function to say, "Hey, this part might cause an error. " It doesn't actually create the error; it just warns that an error could happen. You usually see throws next to functions that might have problems, like reading a file that might not exist. In short, throw makes errors happen, while throws just warns about possible errors. Java Throws Keyword The throws keyword in Java is used to declare exceptions that can occur during the execution of a program. For any method that can throw exceptions, it is mandatory to use the throws keyword to list the exceptions that can be thrown. The throws keyword provides information about the exceptions to the programmer as well as to the caller of the method that throws the exceptions. The throws keyword allows exceptions to be propagated in the... --- ### 5 Ways to Improve Your Dev Team Velocity > Velocity, much like the pulse rate of an individual, is a measure of health for your scrum team. Learn how to use velocity to ensure that throughput stays high. - Published: 2020-06-29 - Modified: 2022-06-21 - URL: https://rollbar.com/blog/5-ways-to-improve-your-dev-team-velocity/ - Categories: topics - Tags: business-impact Velocity, much like the pulse rate or oxygen level of an individual, is an important measure of health for your development team. A low velocity score for recent sprints limits your team's options for delivering value. Sustained failure to deliver to stakeholders can erode trust with those stakeholders quickly. But how do you know exactly what your velocity is and how you can improve it? In this article, we'll share some best practices for improving the throughput of your development team and how to use velocity as a measure to ensure that throughput stays high. The practices and ideas in this article come from the research of Dr. Nicole Forsgen and Jez Humble. Their research is shared in the 2018 book Accelerate and represents the distillation of over 23,000 survey responses over four years of annual DevOps surveys. Dr. Forsgren, VP of Research & Strategy at GitHub, has proved in her research that high performing IT organizations use the practices and techniques shared in this article. First, let's look at exactly what we mean when we say velocity. What Is Velocity and Why Does it Matter? What Is Team Velocity? Velocity is a capacity planning tool that was introduced in Agile methodologies like eXtreme Programming (XP) and Scrum. In both those methodologies, work is broken down into user stories, the team estimates how much effort each story will take to get done, and then uses this estimate to commit stories for that development iteration or sprint. Velocity is expressed in... --- ### 3 Ways to Fix “jquery is not defined” > Discover common causes like incorrect capitalization, missing script tags, and loading order issues. Get step-by-step solutions and best practices. - Published: 2024-09-13 - Modified: 2024-09-13 - URL: https://rollbar.com/blog/fix-jquery-is-not-defined/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript You've just stumbled into one of the most common jQuery pitfalls. The "jquery is not defined" error is a JavaScript ReferenceError that occurs when your script tries to use jQuery functions or methods, but the jQuery library is not properly loaded or initialized. How did this happen? Probably one of three reasons: The jQuery library is not included in the HTML file The script using jQuery is executed before the library is loaded There's a typo in the jQuery reference (e. g. , using lowercase 'jquery' instead of 'jQuery') Let’s start with the last reason as that’s the easiest to fix. There's a typo in the jQuery reference You have a capitalization error, as the correct reference should be jQuery (with a capital 'J') or $. Here's an example of code that would cause this error: jQuery Error Example Hello, World! This code will produce the error "uncaught referenceerror jquery is not defined" because the code is using lowercase jquery instead of jQuery or $. To fix this error, you need to use the correct capitalization for jQuery: jQuery Error Fixed Hello, World! Remember, it's generally a good practice to use $ instead of jQuery for brevity, unless you're in an environment where $ might conflict with other libraries. Both $ and jQuery are valid ways to reference the jQuery object once the library is properly loaded. The jQuery library is not included in the HTML file If you don’t see any lowercase ‘jquery’ instances in your code, check if... --- - [Michael Ng](https://rollbar.com/?employee=michael-ng): ### How a Hackathon Led to 80% Fewer Rollbar Items - Published: 2020-05-26 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/how-a-hackathon-led-to-80-fewer-rollbar-items/ - Categories: company - Tags: customer-stories Earlier this year, we were invited to Thredup’s wonderful office space in Oakland to be one of the presenters at their quarterly Hackathon. Thredup, a fashion retail marketplace with over 35,000 brands, has been one of our key customers since 2013. We soon realized this wasn’t a normal Hackathon. This hackathon was dedicated to instrumentation and monitoring. Instead of asking the teams to work on new features or ideas that can be delivered in two days, they challenged the participants to learn how to monitor their application and the advance use cases for different tools, such as Rollbar, Pagerduty, and Datadog. Getting the Most Value from Rollbar The first day was focused on learning sessions. And the next two days were for instrumenting, triaging, and get more acquainted with the different metrics for the applications. As part of our Customer Success Program, we offer product training sessions for our customers. And our Solutions Engineer, Ivan, led one of their morning learning session as a training session for Rollbar. The goal of the training was to give a broader view of Rollbar making sure that it was useful for a wide spectrum of audience - from anyone who had just started to use Rollbar to those who have been using it for a long time. We touched on a wide array of topics and went over many product features. We talked about reducing noise by actively managing your Rollbar items using our custom grouping features and setting up the workflow that... --- - [Syed Ahmed](https://rollbar.com/?employee=syed-ahmed): ### How to Fix the EOFException in Java.io > This exception typically pops up when you're working with streams of data, such as reading from a file or receiving data over a network. Learn how to fix it. - Published: 2024-08-25 - Modified: 2025-02-24 - URL: https://rollbar.com/blog/java-eofexception/ - Categories: Code Tutorials, Java - Tags: java The java. io. EOFException is a checked exception in Java that occurs when an end of file or end of stream is reached unexpectedly during input. It's Java's way of letting you know, "Hey, I was expecting more data here, but there's nothing left to read! " Since EOFException is a checked exception, it must be explicitly handled in methods that can throw this exception - either by using a try-catch block or by throwing it up the chain using the throws clause. What Causes EOFException Here are some common scenarios that can lead to an EOFException: Reading Beyond Available Data When using classes like DataInputStream, ObjectInputStream, or RandomAccessFile, if you attempt to read more data than is available, an EOFException will be thrown. For example: Trying to read an int (4 bytes) when only 2 bytes are left in the stream. Attempting to read a UTF-8 encoded string, but reaching the end of the stream before the full string is read. Unexpected End of Stream In network communications or when reading compressed data (using ZipInputStream or GZIPInputStream), the stream might end prematurely due to connection issues or corrupted data. Serialization Issues When using ObjectInputStream to deserialize objects, an EOFException can occur if the stream ends before all expected object data is read. Mismatched Read Operations If you're using different read methods than those used to write the data, you might encounter an EOFException. For instance, writing data as bytes but trying to read it as integers. File Truncation If... --- - [Daniel Day](https://rollbar.com/?employee=daniel-day): ### Introducing the Rollbar Deploy GitHub Action - Published: 2020-05-15 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/introducing-the-rollbar-deploy-github-action/ - Categories: product - Tags: continuous-deployment We’re excited to announce our support for GitHub Actions with our new Rollbar Deploy GitHub Action. Teams using GitHub Actions for building their CI/CD pipeline can now easily send deploy information to Rollbar and respond to any new errors quickly. See and Respond to New Errors with Every Deploy At Rollbar, we love automation and GitHub Actions is the latest in the long list of CI/CD tools that we integrate with to automatically send deployment information to Rollbar. With this action, you'll be able to - Automatically notify Rollbar of any new deploys from GitHub Actions Easily link deploy information to new versions to gain visibility into the changes being deployed, the person deploying the changes, the environment impacted, and the new errors that are being generated Respond to errors with detailed code context You can click on deployed versions to see any new or reactivated errors for that specific version. With more visibility and confidence on the quality of each deployment, you can release code more frequently and ensure best possible experience for your customers at all times. Setting up Rollbar Deploy GitHub Action The action is available on the GitHub Action marketplace and you can set it up directly with your GitHub repository. From Source Code to Deployments - Get the Most Out of Rollbar for GitHub For the best user experience, we recommend using our GitHub integration for your source code repository. In case you missed it, we also recently launched support for Git blame allowing you... --- - [Charles Roberts](https://rollbar.com/?employee=charles-roberts): ### How to Fix ReferenceError: Require is Not Defined in JavaScript > Since require is specific to Node.js, if JavaScript code is executed outside of a Node.js environment, require will not be recognized. - Published: 2024-08-25 - Modified: 2024-08-26 - URL: https://rollbar.com/blog/referenceerror-require-is-not-defined-javascript/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript So, you've run into the dreaded ReferenceError: require is not defined error, huh? Don't sweat it – we've all been there. The "require is not defined" error is just your code's way of saying, "Hey, I think we need to talk about modules. " It’s confusing at first, but totally solvable once you know the tricks. Let's break this down and get you back to coding bliss. Why is Require Not Defined? Alright, let's start with the basics. The require function is like a helpful friend who fetches stuff for you. It's part of the CommonJS module system, which is Node. js's way of organizing code. But here's the kicker – it's not a built-in feature of JavaScript and is not recognized by web browsers. Put simply, require is a method used to load modules or external dependencies in a Node. js environment but you’re attempting to use it outside of Node. js. Or if you are working in Node. js, something’s off with your setup. ReferenceError: Require is Not Defined Example Here’s an example of a Javascript ReferenceError: require is not defined thrown trying to use the require function: const fs = require('fs'); In the above example, the fs module is attempted to be imported in a web browser environment by calling the require function. However, since require is not available in web browsers, running the above code throws a ReferenceError: Uncaught ReferenceError: require is not defined How to Fix ReferenceError: Require is Not Defined Understand where your code... --- - [Sachin Goyal](https://rollbar.com/?employee=sachin-goyal): ### We Are Rollbar Support - Published: 2020-04-14 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/we-are-rollbar-support/ - Categories: company - Tags: Customer Support Hello, we are Rollbar support! At Rollbar, support has many limbs. We receive all the communication sent to Rollbar via chat or to support@rollbar. com. We then triage that information and take action on it as applicable. Get Solutions to Your Technical Problems We troubleshoot all your technical questions and try to replicate the issues that you encounter. If you are not able to start a new app, we will double check your app configuration for you. If the GitHub link on your stack trace is pointing to a different endpoint than what you would like, we help you figure out how to set the right path. If you don't see the data that you’d like to see in the logs, we check your settings and give you tips on how to get to what you want. If you think that two different errors belong together, we will help you write a custom fingerprinting rule to get there. Learn More About New Features Even after working at Rollbar for over a year, I keep learning new things about our product everyday. Rollbar is always developing new ways to debug, monitor and triage your data, and helping you organize the errors. If you have any questions about any product features, such as: What can these features do for you? What’s the best way to set them up or use them? Are they available on the plan that you currently have? Support will walk you through and get you where you want... --- ### Xyla AI's Story with Rollbar > We use Rollbar for all our error reporting. It's used by our engineering team to notify us of issues that arise and to help us debug them. It's really helpful in cutting through the noise and letting us know only the errors that we need to care about. - Published: 2024-08-12 - Modified: 2024-08-12 - URL: https://rollbar.com/blog/xyla-ais-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Xyla AI is fully automated social media management. We take care of your content while you focus on selling products.   1. Describe your company and the service(s) offered. Xyla. AI is an AI social media autopilot for Shopify stores. Connect it to your store and it'll automatically create and schedule social media posts with fun-facts, motivational quotes, and memes, all tailored to your individual brand and tone of voice. Sprinkled with posts on store products, such as new-in and best-sellers. Link your social media accounts and it'll publish to your Instagram, Facebook, Pinterest, TikTok and X profiles. 2. What are you most passionate about in your current and/or past roles? We use Rollbar for all our error reporting. It's used by our engineering team to notify us of issues that arise and to help us debug them. It's really helpful in cutting through the noise and letting us know only the errors that we need to care about. When this happens, we receive an alert. The Rollbar dashboard is our first point of call. It's great at pointing you in the right direction to solve an issue. 3. What made you choose Rollbar? Rollbar integrates seamlessly with Ruby on Rails. I've used it in many projects over the years and it's never let me down. It's easy to use and great value for money. Visit XylaAI. com --- - [Mrunal Kapade](https://rollbar.com/?employee=mrunal-kapade): ### Apache Kafka Example: How Rollbar Removed Technical Debt - Part 2 - Published: 2020-04-07 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/apache-kafka-example-how-rollbar-removed-technical-debt-part-2/ - Categories: topics - Tags: kafka In the first part of our series of blog posts on how we remove technical debt using Apache Kafka at Rollbar, we covered some important topics such as: Sizing the Kafka cluster Measuring your expected throughput to size the topics correctly Write and configure the Kafka producer so it gives the latency and throughput desired In the second part of the series, we’ll give an overview of how our Kafka consumer works, how we monitor it, and which deployment and release process we followed so we could replace an old system without any downtime. Kafka Consumer Most of our backend projects are coded in Python so we wrote a process using Python 3. 8 that would consume messages from a Kafka topic and write them to the database in batches. We decided to use the Confluent Kafka client since it has better performance and uses librdkafka. We decided to write a CLI that allows us to run it like this: $ . /bin/ingestion --kafka-brokers kafka:9092 --kafka-topics stream. raw_items. raw --kafka-group ingestion_raw_item --db-host db --db-user $DBUSER --db-password $DBPASSWORD --db-name mox_raw --consumer-timeout 0. 15 We basically set up the Kafka consumer configuration along the database configuration. An important setting that affects the user experience is consumer-timeout, which represents the maximum time the consumer will block consuming and/or waiting for new messages. This value affects the delay seen by the user, having different delays for the first and last message of the batch. A small timeout period will provide lower latencies while will... --- - [Ryan Clark](https://rollbar.com/?employee=ryan-clark): ### How to Catch Multiple Exceptions in Java > Sometimes multiple catch blocks are best; other times, multi-catch or a catch-all block might be more appropriate. Learn all the best practices here. - Published: 2024-08-12 - Modified: 2024-08-12 - URL: https://rollbar.com/blog/how-to-catch-multiple-exceptions-in-java/ - Categories: Code Tutorials, Java - Tags: java Your Java code was humming along smoothly until... BAM! An exception. No problem, you caught it. But wait, there's another. And another. Suddenly, you're juggling exceptions like you’re in the circus. Don't worry, Java's got your back. Java offers three ways to catch multiple exceptions: using multiple catch blocks for different exception types, the multi-catch feature to handle multiple exceptions in a single block, and a catch-all block for general exception handling. Let’s look in depth at each. Use multiple catch blocks Multiple catch blocks allow you to handle different types of exceptions separately. Here's a simple example: try { // code that may throw exceptions } catch (IOException e) { // handle IOException } catch (SQLException e) { // handle SQLException } Let’s take a look at a runnable example: public class MultipleExceptionExample { public static void main(String args) { try { int numbers = {1, 2, 3}; System. out. println(numbers); // Throws ArrayIndexOutOfBoundsException int result = 10 / 0; // This line is never reached } catch (ArrayIndexOutOfBoundsException e) { System. out. println("Array index out of bounds"); } catch (ArithmeticException e) { System. out. println("Arithmetic error"); } System. out. println("After try-catch block"); } } This is what happens when you run that: The numbers line throws an ArrayIndexOutOfBoundsException. Java immediately jumps to the first matching catch block. The ArrayIndexOutOfBoundsException is caught and handled. The rest of the try block (i. e. int result = 10 / 0;) is skipped. Execution continues after all the catch blocks with "After... --- ### Rollbar Goes Remote - Recruiting From Home - Published: 2020-03-23 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/rollbar-goes-remote-recruiting-from-home/ - Categories: company - Tags: remote-work In the face of the coronavirus outbreak and sudden shift to working from home, Rollbar moved our entire recruiting process to function in a remote capacity in two days. Here's how we did it. Starting Point: Assessing Current Tools and Processes We prioritize in-person meetings for our final interview stage when possible, so most of our processes in place were set up for face to face meetings. For a fully remote panel, with a candidate, interviewers, and recruiting team all in different locations, we were concerned about glitches and confusion. Our strategy focused on anticipating the needs of both parties and be proactive in our communication so that both parties felt prepared for the interview. Here are some of the main gaps we found in our process when moving to fully remote panels: Candidate instructions and process: did not address unique situations for virtual interviews i. e. what to do when glitches occur, how to ask for breaks, how we use Zoom for panel interviews Team member panel instructions and process: did not address unique situations for virtual interviews i. e. ensuring panel knows the full lineup on the day of, how to handle a smooth virtual handoff, how to communicate with the team Tools and technology: no virtual whiteboard for coding interview Filling the Gaps In addressing these issues, our overarching goal was to ensure a continued positive experience and ensure that the panels were as effective as they would otherwise be as face to face meetings for both... --- ### New Rollbar Dashboard > We're thrilled to introduce a major update to your Rollbar experience: the new Rollbar Dashboard! Designed with your workflow in mind, this dashboard provides an intuitive, customizable view of your application’s item activity and project setup, all in one place. - Published: 2024-07-30 - Modified: 2024-07-31 - URL: https://rollbar.com/blog/introducing-new-dashboard/ - Categories: product - Tags: Usage Notifications We're thrilled to introduce a major update to your Rollbar experience: the new Rollbar Dashboard! Designed with your workflow in mind, this dashboard provides an intuitive, customizable view of your application’s item activity and project setup, all in one place. https://www. youtube. com/watch? v=F2ldMkrukBI Occurrence Card The Occurrence Card has been updated with a new design. It will still be familiar with all the same features, including comparing your current occurrences with previous periods to identify trends and spikes, filtering by project, environment, or item levels to focus on what matters most to you, and seeing detailed tables of occurrences, activations, item levels, and deploys. Explore More Cards But there's more! Your new dashboard comes with a suite of additional cards, ready for you to explore and customize. Simply click on the dashboard menu to reveal: Welcome Card: A helpful checklist to integrate Rollbar seamlessly. Projects Card: An overview of all your projects, their items, and settings. Integrations Card: A glance at your account integrations with third-party applications. Team Card: Quick access to your account’s teams and members. Users Card: Manage your account members with ease. These cards provide a comprehensive view of your Rollbar environment, allowing you to tailor the dashboard to your needs. Just click the new 3 dot menu in the top right corner to add additional cards to your dashboard. Future Enhancements Wait! We’re not stopping there! We’re working on making these cards shareable so you can collaborate more effectively with your team. Additionally, we’re developing... --- ### How to Fix the "document is not defined" Error in JavaScript > By ensuring you're in a browser context and that the DOM is fully loaded before you access ‘document’, you can avoid this error. - Published: 2024-07-18 - Modified: 2024-07-18 - URL: https://rollbar.com/blog/how-to-fix-document-is-not-defined-error-javascript/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript If you've encountered the "document is not defined" error while working with JavaScript, you're not alone. This common error can be frustrating, but it's usually straightforward to resolve once you understand its causes. Let's explore what this error means, why it occurs, and how to fix it. What is the 'document'? In web development, document is a crucial part of the Document Object Model (DOM). It represents the entire HTML document and serves as the entry point for accessing and manipulating the content on a web page. // A typical use of the document object document. getElementById('myElement'); Common Causes of the "document is not defined" Error There are two primary scenarios where you might encounter this error: 1) running JavaScript outside a browser environment, such as in Node. js, where the document object is not available, or 2) trying to access ‘document’ before the DOM has fully loaded in a web page. 1. Running JavaScript in a Non-Browser Environment JavaScript can run in various environments, not just browsers. If you try to use document in an environment like Node. js, you'll encounter this error because document doesn't exist there. // This works in a browser document. querySelector('button'). addEventListener('click', => { console. log('Button clicked! '); }); // But in Node. js, this would cause the "document is not defined" error 2. Accessing 'document' Before the DOM is Fully Loaded If your JavaScript code tries to access document before the DOM has finished loading, you may run into this error. How to... --- - [Sami Atiq](https://rollbar.com/?employee=sami-atiq): ### Apache Kafka Example: How Rollbar Removed Technical Debt - Part 1 - Published: 2020-03-10 - Modified: 2025-02-19 - URL: https://rollbar.com/blog/apache-kafka-example-how-rollbar-removed-technical-debt-part-1/ - Categories: topics - Tags: behind-the-scenes In this two-part series of blog posts, we’ll explain how Kafka has helped us in removing parts of our architecture that we consider to be “legacy”. During the development of a project sometimes we need to take decisions on our architecture or software design that may not be the best decisions from a pure and perfectionist technical perspective. However, the compromise between the business needs and the engineering solution might push you to adopt a particular solution. That’s how companies create technical debt, that at some stage is considered legacy software or legacy design. Eventually, a company can decide to address that technical debt and invest resources in removing it. At Rollbar we are using Kafka to improve our service that ingests data in our databases. How does the current ingestion service work? The first stage of our events processing pipeline, and the ingestion service, is our API. These are few of the main responsibilities of the API: Validates the schema of the payload Identifies the project for the received access token Checks that the access token passes the rate limiting configuration Serialize the occurrence payload before it can be written to database You can see that storing the occurrences in database is not API’s responsibility. Instead, our API writes the received payloads to disk using a Node library we wrote a while ago, batchelor. This library allow us to stream the received payloads into a file that rotates after a defined period of time or maximum file size. We... --- - [Hardik "HK" Parekh](https://rollbar.com/?employee=hardik-hk-parekh): ### Logging Levels in Python are Unnecessary - Just Log Everything > Is selective logging costing you valuable insights? Discover the power of logging everything in Python with Rollbar. - Published: 2024-07-18 - Modified: 2024-07-18 - URL: https://rollbar.com/blog/logging-levels-in-python-are-unnecessary/ - Categories: Code Tutorials, Python - Tags: Python I've spent countless hours debugging Python issues that could have been solved faster if I had just had more information. Today, I want to challenge a fundamental concept in Python logging: the idea of logging levels. The Traditional Approach: Python Logging Levels If you're familiar with Python's logging module, you know about the five standard logging levels: DEBUG: Detailed information, typically only valuable when diagnosing problems. INFO: Confirmation that things are working as expected. WARNING: An indication that something unexpected happened, or there may be a problem in the near future. ERROR: Due to a more serious problem, the software hasn't been able to perform some function. CRITICAL: A serious error, indicating that the program itself may be unable to continue running. These levels serve as a way to categorize log messages and filter them based on their perceived importance. It's a system that has served us well for years, but I believe it's time for a change. The Case for Logging Everything Here's my controversial take: we should stop using logging levels and instead log everything. Yes, everything. Here's why: Storage is cheap: The original rationale for logging levels was to conserve disk space. In today's world of cheap storage, this is no longer a significant concern. Information is invaluable: How many times have you wished you had more context when debugging an issue? By logging everything, you ensure you always have the information you need. Shift decision-making left: Instead of deciding what's important at coding time, we can... --- ### Announcing our new $11M Series B funding - Published: 2020-03-04 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/announcing-our-new-11m-series-b-funding/ - Categories: company - Tags: funding Nearly eight years ago, Cory and I started on a journey to help developers build software quickly and painlessly. As software developers ourselves, we had felt the pains of being afraid to ship and spending late nights tracking down bugs. In 2013, we launched Rollbar so that developers could build software faster, shipping often without fear. Lots of people talk about continuous delivery, and nearly all of them focus on automating releases. This is important, but it’s only half of the problem: after you release your code, when it breaks, you need to respond. Companies need automated response. That means being able to see, understand, and resolve problems in real-time. This sounds great, and it turns out it actually works! Companies who adopt Rollbar, on average, triple their release velocity every year. Rollbar provides an automated error response platform centered around our proprietary, customizable grouping engine. It gives developers 100% visibility on errors across the software development lifecycle with all the context they need to fix errors in minutes and deploy more often. 100,000+ developers, 4,500+ customers, 40+ employees, and three offices across three countries later, we’re very proud of where we’ve come. But in many ways, we’re just getting started. Today, I’m excited to announce that we’ve closed a Series B financing of $11M led by Runa Capital with participation from Long Light Capital and Blossom Street Ventures, along with existing investors Cota Capital, Bain Capital, and Patagonia Capital. We’re also excited to welcome Dmitry Galperin from Runa Capital... --- - [Angeline Junaedy](https://rollbar.com/?employee=angeline-junaedy): - [Finbar Fleming](https://rollbar.com/?employee=finbar-fleming): ### Introducing Notifications API to Automate Notification Settings Across Projects - Published: 2020-02-21 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/introducing-notifications-api-to-automate-notification-settings-across-projects/ - Categories: product - Tags: Slack At Rollbar we love workflow automation. With our new Notifications API, you can automate setting up of custom notification rules for all your Rollbar projects. As more of our customers switch to microservices, we wanted to build a programmatic way to set up these rules for multiple projects or services in just a few seconds, without having to go to the UI. With this API, you’ll be able to - Set-up multiple Rollbar projects with the notification settings you want in a few minutes Get notified about new errors occurring in your production environment through Slack or PagerDuty Instantly see new errors happening in your environments right in your Slack channels In this article we will go through automating the Slack and PagerDuty integration setup and defining some custom rules for notifications. Prerequisites for Slack notifications First, make sure you have a Slack channel ready for the notifications. You can either integrate with an already existing channel or create a new one. Let’s assume you create a Slack channel called #alerts. Second, you need to obtain a write access token for your Rollbar project from the project general settings: Rollbar dashboard → Settings → Project Access Tokens. Third, obtain your Service Account ID. You can find it here in your Rollbar's user settings page for Slack: Rollbar dashboard → Click your username in the top right corner → Account Settings → Connected Account → Slack → look for Notifications API section at the bottom. Configuring Slack notifications Now it’s time... --- - [Eva Zhang](https://rollbar.com/?employee=eva-zhang): ### Introducing Overage Budgets > We all know how tricky it can be to keep track of costs, especially when your projects spike or with the latest feature that your users love. That's why we've been working on a solution to ensure you never have surprise billing due to on-demand occurrences. - Published: 2024-07-17 - Modified: 2024-07-17 - URL: https://rollbar.com/blog/introducing-overage-budgets/ - Categories: product - Tags: Usage Notifications Say Hello to Overage Budgets We all know how tricky it can be to keep track of costs, especially when your projects spike or with the latest feature that your users love. That's why we've been working on a solution to ensure you never have surprise billing due to on-demand occurrences. Introducing our latest feature to give you both flexibility and control: Overage Budgets. Why a need for Overage Budgets: Traditionally, our billing model for occurrences operates on an "on-demand" basis, allowing for unlimited occurrences beyond plan limits. While this ensures uninterrupted service, it can sometimes lead to surprises in billing, especially after a spike in usage. The choice was binary: keep on-demand events on and adapt to the possibility of plan upgrades or turn them off and risk not being able to observe your errors. We’ve heard from you that this decision causes discomfort and most of you weren’t happy when you received the surprise bill, so it became clear that a more nuanced solution was needed—one that respects both the dynamic nature of your projects and the predictability of your budgeting. Introducing Flexibility and Control with Overage Budgets With the launch of Overage Budgets, we're changing how on-demand events are managed. This feature divides on-demand events into three categories: Off, Budgeted, and Unlimited Off mode will not change; your account will process the number of occurrences in your plan. Once you have reached your occurrences, we will stop processing errors, and you’ll have to wait until the start... --- - [Zoltán Bődi](https://rollbar.com/?employee=zoltan-bodi): ### Introducing Git Blame Support for GitHub Integration - Published: 2020-02-12 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/introducing-git-blame-support-for-github-integration/ - Categories: product - Tags: debug At Rollbar, we care about reducing the time it takes developers to find and fix errors. This is why we’re making our integration with GitHub even stronger to provide more context around errors and reduce the mean time it takes to resolve them MTTR. Last year, we launched Code Context to show additional lines of code within each frame of the stack trace, reducing the back and forth between GitHub and Rollbar. Now, we’re excited to support git blame to help you identify the last person to write or edit the line of code that caused the error, directly within the Rollbar UI. Get More Context to Debug Faster Let’s say a new error pops up in Rollbar that you would like to investigate. As you click on the Traceback in the Item details page, you can see the exact line of the code that caused the error in each frame of the stack trace directly within the Rollbar UI. Now, you may want to get more context on who should be assigned to the error or why some changes to the code were made. You don’t have to go to GitHub anymore to get this information. You can directly see the GitHub User Avatar of the last person to edit the offending line of code in Rollbar. If you hover over the Avatar, you can directly visit the pull request and the commit for that code. No more switching back and forth between Rollbar and GitHub! In a nutshell,... --- - [Phillip Ramirez](https://rollbar.com/?employee=phillip-ramirez): ### How to Fix The IllegalStateException in Java > The IllegalStateException in Java occures when a method has been invoked at an illegal or inappropriate time. - Published: 2024-07-05 - Modified: 2024-07-18 - URL: https://rollbar.com/blog/java-illegalstateexception/ - Categories: Code Tutorials, Java - Tags: error-handling, java An IllegalStateException is a runtime exception in Java that is thrown to indicate that a method has been invoked at an illegal or inappropriate time. To use an analogy, invoking a method in Java when the system is not in the appropriate state is like trying to start a car while it is in "Drive". Just as the car will not start because it is unsafe, a method call results in an IllegalStateException when the internal conditions necessary for its execution are not met. What Causes IllegalStateException The IllegalStateException is thrown when the Java environment or application is not in an appropriate state for the requested operation. This can occur when dealing with threads or the Collections framework of the java. util package under specific conditions. Here are examples of some methods where this exception can occur when they are called at the wrong time: Thread. start: When the Thread. start method is called on a thread that has already been started. Iterator. remove: When the remove method of the Iterator interface is called on a List without calling the next method. This leaves the List collection in an unstable state, causing an IllegalStateException. Queue. add: If an element is attempted to be added to a Queue that is full. Adding elements beyond the size of the queue will cause an IllegalStateException. IllegalStateException Examples Example One Here’s an example of an IllegalStateException thrown when the Iterator. remove method is called to remove an element from an ArrayList before calling the... --- - [Christopher Seaman](https://rollbar.com/?employee=christopher-seaman): ### Best Practices for Moving from a Monolith to Microservices - Published: 2020-02-10 - Modified: 2022-06-21 - URL: https://rollbar.com/blog/best-practices-for-moving-from-a-monolith-to-microservices/ - Categories: topics - Tags: business-impact In the first post of this series, we looked at the state of your organization, how to tell if Microservices are right for you, and wrapped up with a few challenges this architecture brings to the table.   In this article, we will look at organizational changes that will help you adopt a Microservice architecture. Additionally, we will touch on topics like how to bring change to your organization, how to embrace the primacy effect, and why you should embrace cross-functional teams. We'll also discuss several ways to change how you develop applications in a Microservice architecture. These items include topics like streamlining your build - optimizing how you build your Monolith, detangling your dependencies - setting up your Monolith for Microservices and optimizing your local development environment. Organizational Changes Here are best practices to prepare your organization to transition from a Monolithic codebase to a Microservices architecture. Establish Goals You should establish clear, measurable goals for your first projects. Everyone involved in the process, from the executive team down through the cross-functional team, should understand and agree on the initial goals. Since this will be a completely new and unfamiliar process, failure should be treated as a learning experience rather than punishable. Use these inaugural teams to flesh out your automation, streamline your development process, and experiment with different ways to build Microservices. Consider how people in your organization will be affected by the primacy effect, which is a cognitive bias that results in recalling what you first encounter... --- - [Julian Simpson](https://rollbar.com/?employee=julian-simpson): ### How to Fix "Illegal Start of Expression" in Java > The “illegal start of expression” error in Java often arises from an insufficient familiarity with the language or due to basic negligence. Learn how to fix it. - Published: 2024-07-05 - Modified: 2024-07-05 - URL: https://rollbar.com/blog/how-to-fix-illegal-start-of-expression-in-java/ - Categories: Code Tutorials, Java - Tags: error-handling, java Introduction to Java Compile-time Errors Over the past two and a half decades, Java has consistently been ranked as one of the top 3 most popular programming languages in the world , . As a compiled language, any source code written in Java needs to be translated (i. e. , compiled) into machine code before it can be executed. Unlike other compiled languages where programs are compiled directly into machine code, the Java compiler converts the source code into intermediate code, or bytecode, which is then translated into machine code for a specific platform by the Java Virtual Machine (JVM). This, in the simplest of terms, is how Java achieves its platform independence (Fig. 1). One advantage that comes with being a compiled language is the fact that many errors stemming from incorrect language syntax and semantics (such as “illegal start of expression”) can be captured in the compilation process, before a program is run and they inadvertently find their way into production environments. Since they occur at the time of compilation, these errors are commonly referred to as compile-time errors. The Java compiler can detect syntax and static semantic errors, although it is incapable of recognizing dynamic semantic errors. The latter are logical errors that don’t violate any formal rules and as such cannot be detected at compile-time; they only become visible at runtime and can be captured by well-designed tests. When it encounters an error it can recognize, the Java compiler generates a message indicating the type of... --- - [An Nguyen](https://rollbar.com/?employee=an-nguyen): ### Transforming Engineering at Rollbar - Published: 2019-12-18 - Modified: 2023-06-26 - URL: https://rollbar.com/blog/transforming-engineering-at-rollbar/ - Categories: company - Tags: behind-the-scenes It's been a busy year at Rollbar! While many of the new features we built got all the needed attention (press, blog posts, conferences), the underlying work to transform and modernize our platform might have been less visible. With this blog post I'd like to share with you all the exciting initiatives we launched in this past year and recognize all the deserved credit for all the engineers that worked restlessly to get us where we proudly are today. In order to really understand the amplitude of the transformation and the reasons behind it, it's important you realize why and where all of this started. A year ago our Engineering team was less than half the size, our User Experience was struggling to keep pace with modern design and, at the same time, our business was growing double digits in constant and continuous expansion. The number one priority that every customer would have underlined was availability! The more Rollbar was getting adopted from teams focusing on deeply integrating it in their CD/CI pipelines thorough APIs and WebHooks, the more our ability of processing errors in real time was a dealbreaker for our customers. It was clear that to be able to match the forecasted demand, some parts of our architecture needed to change. At the same time it become evident that to win in the Error Monitoring space, we needed to be absolutely best in class in avoiding "noise" across our platform. We needed a way to maintain our leadership... --- - [Renee Wells-Wood](https://rollbar.com/?employee=renee-wells-wood): ### How to Catch (and Fix) JavaScript TypeErrors - Published: 2019-12-18 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/how-to-catch-and-fix-javascript-typeerrors/ - Categories: Code Tutorials, JavaScript - Tags: debug It's Friday afternoon and you decide to check on your web logs one last time before you go out for the weekend. Since you've deployed recently, you want to make sure everything is going smoothly. You open your tool and suddenly you find your screen flooded with TypeErrors. Does this sound familiar? JavaScript TypeError is one of the most common browser errors because it wraps a number of different situations, each of which needs to be handled separately. What often makes fixing these problems difficult is the wide range of exception messages coming from different browser types, versions and languages. Looking at a list of TypeErrors in your logs makes it difficult to decide if it is one problem materializing in different forms or different issues altogether. When are TypeErrors thrown? According to the TypeError docs it's thrown “when an operation could not be performed, typically (but not exclusively) when a value is not of the expected type”. This can easily happen during a code refractor, when you reworked a function but didn't consider it being used in another part of your app that is now breaking. The most common cases of TypeError There are a number of different cases but we've found that the vast majority of errors can be categorized into one of the following. Case 1: Unable to get property of undefined or null reference This means that the object you are calling is null or you haven't defined it. Depending on the browser where the error... --- - [Jonathan Lilienthal](https://rollbar.com/?employee=jonathan-lilienthal): - [David Woller](https://rollbar.com/?employee=david-woller): ### Error Handling with Angular 8 - Tips and Best Practices - Published: 2019-12-16 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/error-handling-with-angular-8-tips-and-best-practices/ - Categories: Code Tutorials, JavaScript - Tags: angular Handling errors properly is essential in building a robust application in Angular. Error handlers provide an opportunity to present friendly information to the user and collect important data for development. In today's age of advanced front-end websites, it's more important than ever to have an effective client-side solution for error handling. An application that does not handle errors gracefully leaves its users confused and frustrated when the app suddenly breaks without explanation. Handling these errors correctly across an application greatly improves user experience. Collected data from the error handling can inform the development team about important issues that slipped past testing. This is why monitoring tools like Rollbar are so important. In this article, we will compare several solutions for error handling in Angular apps. First, we will describe the traditional approaches using ErrorHandler and HttpClient. Then, we will show you a better solution using HttpInterceptor. We'll also show you how to use this interceptor to monitor and track errors centrally in Rollbar. The Shortcomings of console. log Beginners in JavaScript programming often start out using the console log because that is the default output in most development environments. Once you deploy your application to a production environment, you no longer have access to the console log. That's because the code is now running on the client browser. Unless you record the errors that clients experience in a centralized location, you won't have any visibility into them. In order to understand the user experience and how errors can affect it,... --- - [Tin Nguyen](https://rollbar.com/?employee=tin-nguyen): - [Atsuko Nishiguchi](https://rollbar.com/?employee=atsuko-nishiguchi): ### Introducing the New Rollbar UX - Published: 2019-12-15 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/introducing-the-new-rollbar-ux/ - Categories: product - Tags: error-monitoring Migrating to microservices is hard enough. Monitoring errors and debugging shouldn’t be. When we first built Rollbar, microservice architectures and continuous delivery practices weren't as common as they are today. Over time, we saw how our customers were setting up different projects for each code repository. As a complex distributed architecture becomes the norm, we want to make sure our core user experience reflects this new normal. Today, we’re introducing the new Rollbar user experience. We hope you like it as much as we have enjoyed building it for you! Here’s a quick look at what you can do with the new UX. Monitor all microservices with one tool in one view With the new Rollbar user experience, we’re adopting powerful and consistent multi-project views across the entire user workflow. Get intelligent, real-time alerts on errors across microservices in a single view using our new multi-project filter. Whether you’re looking at the main dashboard, the Items view, or Versions, you’ll only see what you care about. Debug faster with a consistent workspace and powerful filters Users now have their own personal workspace with powerful filters for projects, environments, and frameworks that persist across all views. Finding new errors is faster and easier with improved Timeframe and ‘New or Reactivated’ filters. Using our Versions feature, track every deployed code version across all of your microservices in a single view. Quickly identify new and reactivated issues, and triage items easily with information on who deployed each code version. Get insights on data... --- ### How to Handle Checked & Unchecked Exceptions in Java > There are 2 types of Java Exceptions → ✓Checked ✓Unchecked. Learn more about Java Exceptions & How to Handle Them Now! - Published: 2024-07-05 - Modified: 2024-07-05 - URL: https://rollbar.com/blog/how-to-handle-checked-unchecked-exceptions-in-java/ - Categories: Code Tutorials, Java - Tags: java Fig1: Types of Exceptions in Java, Checked vs Unchecked Exceptions in Java can be divided into two main types: checked and unchecked. Checked exceptions are problems that Java forces you to plan for in advance. You must either handle them or declare that your method might throw them. They're usually for external factors that you can anticipate. Unchecked exceptions, on the other hand, are problems that Java doesn't force you to plan for. You can handle them if you want, but you're not required to. They're often due to programming errors. Put another way, think of them like potential hazards when driving your car. Checked exceptions are like road construction or bad weather. You know these might happen, so you're required to prepare for them, like checking if chains are required on a certain route. Unchecked exceptions are like running out of gas or getting a flat tire. These are things that could happen due to your own oversight. You're not legally required to constantly check your fuel gauge or tire pressure, but if these problems occur, your trip will still be disrupted. Let's take a closer look at the differences with some examples. Checked Exceptions in Java In broad terms, a checked exception (also called a logical exception) in Java is something that has gone wrong in your code and is potentially recoverable. For example, if there’s a client error when calling another API, we could retry from that exception and see if the API is back up and... --- - [Mani Askari](https://rollbar.com/?employee=mani-askari): - [Patrick Smyth](https://rollbar.com/?employee=patrick-smyth): ### Monolith to Microservices: Is Your Organization Ready? - Published: 2019-12-15 - Modified: 2022-06-21 - URL: https://rollbar.com/blog/monolith-to-microservices-is-your-organization-ready/ - Categories: topics - Tags: business-impact Transitioning from a Monolith to a Microservices architecture can take years to complete. The internet is full of stories of companies famously making this transformation. But how do you know if it’s right for your organization? Is your organization ready? In this article, we will look at five questions you can ask to see if you’ll benefit from a Microservices architecture. We’ll also discuss five challenges you will face during this transformation. In part II of this series, we’ll look at strategies for moving from a Monolith to Microservices. There will be one prevailing theme during this process: change. Can your executive team stay focused on a long-term, company-wide transformation long enough to see it through completion? Like any large project, it can take years to complete this transformation, can your organization continue to allocate resources to this project while managing other company initiatives? Have you successfully implemented other large-scale changes? If so, your transformation will likely be a success. Determining your organization's readiness is an essential part of mapping out your implementation plan. Benefits of a Microservices Architecture You shouldn't adopt a microservice architecture simply because it's trending, but because your organization needs the specific benefits this type of architecture provides. Is your company ready for these benefits? Team autonomy - Microservices are loosely-coupled independently deployable services. They are resilient to failure and are elastic. Does your organization have experience with independent teams? Deploying a Monolith is usually a coordinated effort across teams and departments. Autonomous teams are the... --- - [Michael Mukhin](https://rollbar.com/?employee=michael-mukhin): ### Announcing the First Error Monitoring Solution for Salesforce Apex - Published: 2019-11-12 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/announcing-the-first-error-monitoring-solution-for-salesforce-apex/ - Categories: product - Tags: SDK We're very exited to bring all the error monitoring and debugging capabilities of Rollbar to Salesforce Apex applications. According to Salesforce, millions of developers and thousands of independent software vendors develop customized applications using Apex to extend the fuctionality of Salesforce. A few months ago, when some of our customers reached out and asked us for an error monitoring solution for their Salesforce Apex developers, our engineering team jumped on the task. The result - you can now monitor multiple organizations, apps, and users in real-time with one tool in one view. No more digging through emails or the developer console to find unhandled exceptions. Get real-time error notifications with stack traces For those unfamiliar with Rollbar, here’s a quick look at some of the key features - Rollbar tracks all Apex errors instantly as they occur and notifies you via your preferred channel (slack, email, and more). You can view all Unhandled Apex Exceptions in all your Salesforce apps in one consolidated view on the Items page With advanced filters such as multi-project selector, timeframe, error severity, you can monitor all applications, organizations, and users with one tool in one place We group similar errors using Rollbar's fingerprinting technology to reduce noise and all errors include detailed data to help you assess impact and assign priority. You can assign owners and create issues in your preferred issue-tracking tool directly from Rollbar You can see detailed metadata such as the stack trace, organization data, custom data with occurrences, request parameters,... --- - [Colin Flynn](https://rollbar.com/?employee=colin-flynn): - [Ramon Niebla](https://rollbar.com/?employee=ramon-niebla): ### Turbocharge QA with Pre-Production Monitoring - Published: 2019-11-05 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/turbocharge-qa-with-pre-production-monitoring/ - Categories: topics - Tags: debug Traditionally, Quality Assurance (QA) has been a very manual process. Our QA teams do an amazing job running through test plans, finding critical bugs, and logging reports. But it can be a lot of work to run through the tests again and again, dig into the errors to provide the contextual information developers need to fix bugs quickly, and prepare the reports your developers need to find and fix errors in the codebase. Sometimes, even with all this support from the QA team, development teams may have to spend considerable time trying to reproduce errors and locating the relevant source code. And in this era of "doing more with less," not all dev teams are lucky enough to have dedicated QA support, so triaging bug reports is one more thing developers are responsible for. With Rollbar's advanced reporting, reliability engineers can create reports to track performance and assess the effectiveness of staging and other pre-production phases. Test failures can also be associated with their original exceptions, providing software developers with rich context information. The bottom line is that QA without Rollbar can be hard. With a little help from Rollbar, it's easier, faster, and provides more complete data for crushing bugs. We'll explain how in the rest of this article. Demonstrating QA Error Monitoring with Rollbar Let’s say you’re a developer working for a company that creates line-of-business applications. As part of the development lifecycle, your colleague Kendall from QA routinely sends you reports containing bugs you must understand, reproduce,... --- - [Gianina Borcean](https://rollbar.com/?employee=gianina-borcean): ### What is “except Exception as e” in Python? > Wrap risky code in a try block and catch exceptions in an except block. The exception is assigned to the variable e for further use. - Published: 2024-06-24 - Modified: 2024-06-24 - URL: https://rollbar.com/blog/what-is-except-exception-as-e-in-python/ - Categories: Code Tutorials, Python - Tags: Python except Exception as e is a construct in Python used for exception handling. It allows you to catch exceptions that occur during the execution of a block of code by using a try block to wrap the code that might raise an exception, and an except block to catch and handle the exception. The Exception part specifies that any exception of this type or its subclasses should be caught, and the as e part assigns the caught exception to a variable e, which you can then use to access details about the exception. Take a look at this example: try: # Code that might raise an exception result = 10 / 0 # Raises ZeroDivisionError except Exception as e: # Handles the exception print(f"An error occurred: {e}") Running that will print: An error occurred: division by zero This is what happens step-by-step: The try block attempts to execute result = 10 / 0. Division by zero is not allowed so a ZeroDivisionError is raised. The except Exception as e block catches the ZeroDivisionError. The exception is assigned to the variable e, which contains the error message "division by zero". The print(f"An error occurred: {e}") statement prints the error message to the console. When using except Exception as e, here are a few things to keep in mind for handling exceptions effectively: Catch specific exceptions rather than all exceptions Catching all exceptions with except Exception as e can mask unexpected errors and make debugging more difficult. 💡Best Practice: Whenever possible, catch... --- - [Austen Lacy](https://rollbar.com/?employee=austen-lacy): ### Rollbar CTO, Cory Virok, Shares His Expertise on Creating an Enterprise Solution for Today’s Modern Software Company - Published: 2019-10-24 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/rollbar-cto-cory-virok-shares-his-expertise-on-creating-an-enterprise-solution-for-todays-modern-software-company/ - Categories: topics - Tags: business-impact We sat down with Rollbar CTO, Cory Virok, for a Q&A on how his leadership role and industry expertise helped create an enterprise solution for today’s modern software company. How does your technical expertise and leadership as a CTO play into how Rollbar focuses on the enterprise? Before Rollbar, I was building high-throughput, network security systems for the government. After moving to SF, I worked at VMWare, followed by a social gaming company where I was scaling a product, infrastructure, and team for a massively popular set of Facebook games. Being a deeply technical CTO has been incredibly important for me to be able to provide our enterprise customers with solutions that their development teams use every day to ship better software, faster. Whether it's support, or the initial diligence on our product, or customer success, Rollbar's enterprise customers have a very high level of expectation from our team and service. As our CTO, I am proud of our ability to exceed these expectations and provide a level of stability and performance that our most demanding customers have come to expect. How has your technical and learned business experience helped you to build an enterprise startup and run a “modern” software company? From my experience, enterprise customers tend to all have customizations that they require, making it very easy to "go wide" and build all of the requested integrations. That's a fine approach. Just be sure to structure your team, architecture, and processes around that principle. It's very easy to... --- - [Marcelo Oliveira](https://rollbar.com/?employee=marcelo-oliveira): ### What does java.lang.RuntimeException mean? > Runtime exceptions help manage unexpected issues that arise while your application is running to avoid crashing. - Published: 2024-06-24 - Modified: 2024-07-24 - URL: https://rollbar.com/blog/java-lang-runtime-exception/ - Categories: Code Tutorials, Java - Tags: java Present in every version of Java, the java. lang. RuntimeException is an essential class that allows your application to handle unexpected problems without crashing. Runtime exceptions are exceptions only detected during the execution of your app - things like invalid user input or issues with external resources like files or networks. When an unexpected situation like those occurs, a RuntimeException can be thrown and your app can catch and handle it using a try-catch block. Simple example Imagine you have a method that divides two numbers. If you try to divide by zero, it should raise a RuntimeException. public class Main { public static void main(String args) { try { int result = divide(10, 0); System. out. println("Result: " + result); } catch (RuntimeException e) { System. out. println("Error: " + e. getMessage); } } public static int divide(int numerator, int denominator) { if (denominator == 0) { throw new RuntimeException("You can't divide by zero! "); } return numerator / denominator; } } When the divide method detects that the denominator is zero, it throws a RuntimeException. This error is then caught in the try-catch block in the main method, allowing the app to print an error message instead of crashing. What is the difference between RuntimeException and Exception in Java? An Exception represents checked exceptions that must be handled explicitly, while a RuntimeException represents unchecked exceptions that do not require explicit handling. For example, file I/O operations or database access issues are typical use cases for checked exceptions (Exception).... --- ### Announcing Crash Monitoring for macOS with Rollbar - Published: 2019-08-29 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/announcing-crash-monitoring-for-macos-with-rollbar/ - Categories: product - Tags: macOS What’s better than an SDK that supports iOS? One that also supports macOS! With the latest version of rollbar-ios (v1. 8. 1), Rollbar now supports crash monitoring for macOS. You can use Rollbar to monitor, triage, and debug crashes and errors on both iOS and macOS. What else, you ask? We’re excited about some significant improvements for both iOS and macOS. Read on for the details. Real-time crash monitoring & debugging for macOS All the Rollbar features previously available for iOS only are now available for both Apple platforms, iOS and macOS. You’ll get notified in real-time of any exception or an application crash (on the subsequent application restart). We’ll also group similar crashes using our fingerprinting technology so you won’t have to deal with noise and can focus on the most important issues. Additionally, Rollbar gives you all the data you’ll need to debug within minutes. This includes the available error and crash details, stack traces, any useful telemetry metadata, affected users, relevant app versions, and details about runtime environments (OS version, SDK version, device details, etc. ). You can also clearly see the device OS (iOS or macOS) of a payload on the Items view in the Rollbar dashboard. Rollbar CocoaPod now supports both iOS and macOS as a single universal pod targeting both platforms as well. But wait, there’s more! We’ve made the rollbar-ios SDK easier to integrate into your app (iOS or macOS based). You can include it: Via CocoaPods - see examples for iOS app... --- - [Imran Rizvi](https://rollbar.com/?employee=imran-rizvi): - [Dmitry Mazin](https://rollbar.com/?employee=dmitry-mazin): ### How to Fix Invalid SyntaxError in Python > The Python SyntaxError occurs when the interpreter encounters invalid syntax in code. Learn how to fix it. - Published: 2024-06-24 - Modified: 2024-06-24 - URL: https://rollbar.com/blog/python-syntaxerror/ - Categories: Code Tutorials, Python - Tags: Python The Python SyntaxError occurs when the interpreter encounters invalid syntax in code. When Python code is executed, the interpreter parses it to convert it into bytecode. If the interpreter finds any invalid syntax during the parsing stage, a SyntaxError is thrown. To illustrate, imagine sending a text message with autocorrect errors that change the meaning and make it incomprehensible. For example, if you type "Meet me at the park" but it sends "Meat me at the perk" the recipient will not understand the message. Similarly, if the syntax is incorrect in code, the interpreter cannot understand it. Fixing the errors is necessary for clear communication in both cases. What Causes SyntaxError Some of the most common causes of syntax errors in Python are: Missing quotes. For example, print(Hello) instead of print("Hello"). Misspelled reserved keywords. For example, writing iff instead of if. Incorrect Indentation. For example, missing required spaces or tabs. Invalid function definitions or calls. For example, missing a colon in a function definition or missing parentheses in a function call. Invalid variable declarations. For example, starting the variable name with a number or using invalid characters. Missing operators. For example, missing the + operator when trying to add two numbers. SyntaxError Examples Example One Here’s an example of a Python SyntaxError thrown due to missing quotes: print(Hello World) #Missing quotes in string In the above example, since the string “Hello World” is attempted to be printed without using quotes, a SyntaxError is thrown: File "test. py", line 1 print(Hello... --- ### Introduction to Error Handling in Angular 7 Using Rollbar - Published: 2019-08-15 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/introduction-to-error-handling-in-angular-7-using-rollbar/ - Categories: Code Tutorials, JavaScript - Tags: angular In this tutorial, you will be introduced to errors tracking in Angular 7 using the errorHandler class and Rollbar. This is the last part of the Angular 7 error handling series, you can refer to the first part here, and the second part here. In this series, you have been introduced earlier to handling client side errors and then HTTP errors gracefully in Angular 7 with tools like errorHandlers, Interceptors and even RxJS operators. In this post you will be shown how to track these errors in a remote tracking environment. For full tutorial, visit https://pusher. com/tutorials/error-handling-angular-part-4 --- - [Chris Maki](https://rollbar.com/?employee=chris-maki): - [Nicholas Vincent-Hill](https://rollbar.com/?employee=nicholas-vincent-hill): ### How to Fix ValueError Exceptions in Python > The Python ValueError occurs when a function receives an argument of the correct data type but an inappropriate value. Learn how to fix it. - Published: 2024-06-24 - Modified: 2024-06-24 - URL: https://rollbar.com/blog/python-valueerror/ - Categories: Code Tutorials - Tags: Python The Python ValueError is an exception that occurs when a function receives an argument of the correct data type but an inappropriate value. This error usually occurs in mathematical operations that require a certain kind of value. To use an analogy, imagine trying to enroll an adult in a children's school. The person is a valid human, but their age is inappropriate for the setting. Similarly, a ValueError occurs when a function receives the correct type of input but with an unsuitable value. What Causes ValueError The Python ValueError is raised when an object is assigned the right data type but the wrong value for a certain operation. Some of the most common scenarios where this can happen are: If the value is invalid for the operation. For example, if a negative integer is passed to a square root operation. Performing an operation when the value does not exist. For example, trying to remove a value from a list where it does not exist. Trying to unpack more values than available. For example, trying to unpack values from a list with 5 items to 3 variables. ValueError Examples Example One Here’s an example of a Python ValueError raised when trying to perform a square root operation on a negative number: import math math. sqrt(-100) #Performing square root operation on negative number In the above example, a negative integer is passed to the math. sqrt function. Since the function expects a positive integer, running the above code raises a ValueError: Traceback... --- ### New Integration - Create Microsoft Azure DevOps Work Items directly from Rollbar - Published: 2019-08-07 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/new-integration-create-microsoft-azure-devops-work-items-directly-from-rollbar/ - Categories: product - Tags: integrations Does your team use Azure DevOps for tracking work? You’re going to love our latest integration if that’s the case. You can now create and resolve Work Items in Azure DevOps directly from Rollbar, making error monitoring and debugging even faster. This is the latest addition to our toolkit for the Microsoft ecosystem (read about our Azure Active Directory integration). It reinforces our mission to help software developers build software quickly and painlessly. It also saves valuable time so that developers can stay in flow. With this integration, you can: Create an Azure DevOps Work Item directly from Rollbar, either directly or based on the ruleset (details below) View the stack trace in the Azure DevOps Work Item Auto-create tags and area paths, and view the Item in Rollbar with a single click Change the Work Item state automatically based on changes in Rollbar Resolve Azure DevOps Work Item automatically once resolved in Rollbar Rules for automatic Item related actions: You can create rules for specific actions to be triggered automatically. These include creating, resolving, or changing the state of a Work Item. An example can be setting up a rule that automatically creates a new Work Item when an error occurs for a specified number of times. You can also create a Work Item directly from the Rollbar item by clicking on ‘Create Azure DevOps Work Item’ if that works better for your workflow. Azure DevOps Work Item from a Rollbar Item: You can view key details of a... --- - [Gabriella Papp](https://rollbar.com/?employee=gabriella-papp): - [Lubos Parobek](https://rollbar.com/?employee=lubos-parobek): ### How to Resolve the NoClassDefFoundError in Java > NoClassDefFoundError is a Java error that occurs when the JVM is unable to find a class at runtime which was available at compile-time. - Published: 2024-06-24 - Modified: 2024-07-18 - URL: https://rollbar.com/blog/java-no-class-def-found-error/ - Categories: Code Tutorials, Java - Tags: java The NoClassDefFoundError is a runtime error in Java that occurs if the Java Virtual Machine (JVM) or a ClassLoader instance attempts to load the definition of a class but cannot find it at runtime. The class definition exists at compile-time but is not available at runtime. To explain using an analogy, it's like preparing a parcel for collection by a courier but when the courier arrives, they can't find the parcel because the directions to its location are missing. The JVM, like the courier, looks for the class definition (parcel) in the classpath (directions). If the class is not found where expected, the JVM throws a NoClassDefFoundError. What Causes NoClassDefFoundError The NoClassDefFoundError occurs in Java when the JVM is unable to find a particular class at runtime which was available at compile-time. Common causes of the class definition being unavailable at runtime are: Missing JAR file Permission issues Incorrect classpath at runtime This can happen as part of a normal method call or when creating an instance of the class using the new expression. Therefore, it can occur during the linking or loading of the unavailable class. NoClassDefFoundError Example Here’s an example of a NoClassDefFoundError thrown when a class is attempted to be loaded that is available at compile-time but not at runtime: class Vehicle { private String make; public String getMake { return make; } public void setMake(String make) { this. make = make; } } public class NoClassDefFoundErrorExample { public static void main(String args) { Vehicle vehicle =... --- ### Exception Monitoring Across Environments - Published: 2019-07-31 - Modified: 2025-02-19 - URL: https://rollbar.com/blog/exception-monitoring-across-environments/ - Categories: topics - Tags: error-monitoring Tools like Rollbar have changed the way development teams are recording and managing their exceptions. What used to be a very personal developer-by-developer activity can now be a team-wide tool for greater transparency, and increased application quality. But many still treat exception monitoring as a developer activity, and they are not leveraging its benefits across all environments, from development to stage and integration, to systems testing and production. Let's review why exception monitoring in all environments is so beneficial, and some best practices for setting it up. By standardizing with Rollbar for exception monitoring across environments and clients, you have better visibility and better input into the application and development processes, and it’s a good way to ensure quality prior to delivering releases to customers. But even after release, the tool has been extremely useful for: 1. Support of CD and canary releases: More and more we are asked to consider using continuous delivery (CD) and canary release processes. While in many cases it is not possible or a good fit, when we do get an opportunity to implement CD, exception monitoring is the only way to support it, because code goes from developer to source repo and directly to prod as long as the basic tests show up green. We know very little about the code, and do not have the eyeballs on exceptions that we normally would. This way, an exception in prod is just one more trigger to let us know that a release should be rolled... --- - [Mike French](https://rollbar.com/?employee=mike-french): - [Rachel Foster](https://rollbar.com/?employee=rachel-foster): ### Upload Source Maps to Rollbar - Published: 2019-07-22 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/upload-source-maps-to-rollbar/ - Categories: Code Tutorials, JavaScript - Tags: source-maps From https://michalzalecki. com/upload-source-maps-to-rollbar/ Upload source maps to Rollbar In production, the most important advantage of using a build tool like webpack is a smaller size and thus improved overall application performance. Although beneficial for our users, the bundled and minified code is harder to debug for developers as the code they have written doesn't map 1:1 to error stack traces. Multiple tools for minifying, bundling and transpiring JavaScript modules can generate source maps along with the resulting code. Source maps allow developer tools (Chrome DevTools, test runners, error reporting software) to find a reverse mapping from the optimized code back to the source code. Rollbar (and often other error tracking software) supports source maps to display error stack traces that point to the erroneous lines in the source code instead of an optimized client-size bundle your users download. The easiest, although not recommended, way to provide Rollbar with source maps is to make them available for download from your production server. Once Rollbar receives the error, it will schedule the download of the source map file. A reliable and recommended way to make source maps available for Rollbar is to upload them pre-deploy. It's also the only way if you don't wish to share the source code of your app by exposing it via publicly-available source maps. In this article, we will create a required configuration and write a script for uploading source maps to Rollbar. Read Full Article at: https://michalzalecki. com/upload-source-maps-to-rollbar/ --- - [Erwin Tung](https://rollbar.com/?employee=erwin-tung): ### How to Fix java.lang.StackOverflowError in Java > The java.lang.StackOverflowError is a runtime error which indicates that the application stack is exhausted. Let's fix it. - Published: 2024-06-23 - Modified: 2024-07-24 - URL: https://rollbar.com/blog/how-to-fix-java-lang-stackoverflowerror-in-java/ - Categories: Code Tutorials, Java - Tags: java The java. lang. StackOverflowError is a runtime error which indicates that the application stack is exhausted. This is usually caused by deep or infinite recursion. To put it more simply, imagine a to-do list where each task keeps adding a new sub-task to the list. If this goes on indefinitely, the list eventually becomes too long for the sheet of paper. This is essentially what happens to cause a StackOverflowError in Java, where too many recursive method calls exceed the stack limit. What Causes java. lang. StackOverflowError The java. lang. StackOverflowError occurs when the application stack continues to grow until it reaches the maximum limit. Some of the most common causes for a java. lang. StackOverflowError are: Deep or infinite recursion: If a method calls itself recursively without a terminating condition. Cyclic relationships between classes: If a class A instantiates an object of class B, which in turn instantiates an object of class A. This can be considered as a form of recursion. Memory intensive applications: Applications that rely on resource heavy objects such as XML documents, GUI or java2D classes. java. lang. StackOverflowError Example Here is an example of java. lang. StackOverflowError thrown due to infinite recursion: public class StackOverflowErrorExample { public void decrementAndPrint(int myInt) { System. out. println(myInt--); decrementAndPrint(myInt); //Recursively calling method without terminating condition } public static void main(String args) { StackOverflowErrorExample soee = new StackOverflowErrorExample; soee. decrementAndPrint(5); } } In this example, the recursive method decrementAndPrint calls itself over and over again until it reaches the... --- - [Paul Moriarty](https://rollbar.com/?employee=paul-moriarty): ### Continuous Delivery with Jenkins and Rollbar - Published: 2019-07-10 - Modified: 2023-06-20 - URL: https://rollbar.com/blog/continuous-delivery-with-jenkins-and-rollbar/ - Categories: topics - Tags: continuous-delivery Continuous delivery (CD) helps reduce the cost, time and risk of delivering changes by allowing for fast incremental updates to applications in production. However, it’s essential to monitor your application after each deployment. You need to be notified immediately if something is wrong or users are having a poor experience. Rollbar is a leading solution for error monitoring in the software development lifecycle. It alerts you when new errors occur after a deployment. It can also tell you which deployment the error was first seen in, and which code changes were likely responsible. This can dramatically speed up your troubleshooting time and help you fix problems faster. In the screenshot above, you can see that Rollbar has automatically identified the suspected deployment where the error was first seen (indicated by the second red circle). Additionally, it has identified the code change where the error was introduced (indicated by the third red circle). You can click on these links to go straight to the code change in GitHub or Bitbucket. Jenkins is a popular open source server to automate continuous integration and continuous delivery. We'll show you how to configure Jenkins to notify Rollbar when a new version is deployed. Then, Rollbar will tell you the suspected deployment for each error. Our pet clinic example Rollbar and Jenkins should work with pretty much all applications but we chose the Java pet clinic project to demonstrate the integration capabilities. It is freely available and simple to run or modify. The source code... --- - [Steve Beane](https://rollbar.com/?employee=steve-beane): ### How We’re Improving Error Grouping - Published: 2019-05-15 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/how-were-improving-error-grouping/ - Categories: product - Tags: grouping Imagine that you are developing an application and there's an error in the code. When you release it to production, this error causes hundreds of thousands of crashes. In this case, a logging tool would list all the crashes but an error monitoring tool, like Rollbar, would attempt to group the crashes together. Now you would receive just one notification about an error that crashed hundreds of thousands of times instead of many notifications about different crashes. Error grouping is hence essential to any error monitoring solution. Our commitment to helping software developers spend less time on debugging has recently led to the acquisition of Hungary-based Samebug, experts in the topic of error grouping. With an expanded team we now have the resources to operate an entire squad focused on grouping algorithm improvements. This squad is made up of computer and data scientists working full time on delivering various improvements to the algorithm, both small and large, that will be rolled out gradually. We are excited to announce the release of the first few improvements, solutions to specific issues that are small but can be very annoying when they come up. Recognize Missing jQuery First off, we have a JavaScript-related improvement. We know how annoying it is to see many different items created when jQuery is missing. We decided to group these together to reduce the noise and let you focus on the real errors. Every JavaScript project should use this migration, as you might see this error even when... --- ### How to Throw IllegalArgumentException in Java > The IllegalArgumentException is thrown to indicate an illegal or unsuitable argument passed to a method. Learn how to solve it. - Published: 2024-06-20 - Modified: 2024-07-18 - URL: https://rollbar.com/blog/how-to-throw-illegalargumentexception-in-java/ - Categories: Code Tutorials, Java - Tags: java The IllegalArgumentException is an unchecked exception in Java that is thrown to indicate an illegal or unsuitable argument passed to a method. It is one of the most common exceptions in Java. To illustrate, it's like what happens when trying to set a password in a registration system with specific requirements. If the system expects an 8 character password with at least one number and one special character and you enter "password" or "password123", the system rejects it and notifies you of the invalid input. Similarly, Java methods throw the IllegalArgumentException to reject inappropriate or incorrect arguments, ensuring the input meets the required criteria. What Causes IllegalArgumentException An IllegalArgumentException is thrown when an argument passed to a method doesn't fit within the logic of the usage of the argument. Some of the most common scenarios for this are: If the argument is out of range. For example, if a method declares an integer age as a parameter, which is expected to be a positive integer. If a negative integer value is passed, an IllegalArgumentException is thrown. If the format of the argument is invalid. For example, if a method declares a string email as a parameter, which is expected in an email address format but a regular string is passed that doesn’t match the format. If the argument is null. In such cases, the IllegalArgumentException is thrown when the method expects a non-empty object as an argument. IllegalArgumentException Example Here is an example of an IllegalArgumentException thrown when the argument... --- - [Michael "MC" McCullough](https://rollbar.com/?employee=michael-mc-mccullough): - [David Basoco](https://rollbar.com/?employee=david-basoco): ### Welcoming Letania Ferreira - Published: 2019-04-15 - Modified: 2023-06-26 - URL: https://rollbar.com/blog/welcoming-letania-ferreira/ - Categories: company - Tags: team Letania is another new member of our support team and started as a Customer Service Engineer in December 2018. She’s new to the software engineering world and, like many other Rollbar employees, has a unique background that led her here. Letania has lived and worked in Europe, North America and South America. She is originally from Brazil, where she studied Portuguese and English as an undergrad. She went on to eventually earn her Master’s in Romance languages and a PhD in Romance Linguistics. She has previously worked as an English instructor in Belgium, has taught university classes as an assistant professor/visiting instructor at universities in Illinois and Brazil, and worked as a linguist in Brazil for an innovation technology company. After many years in this field, she attended Hackbright Academy to learn some basic coding skills but ended up falling in love with it and is now working towards becoming a full-fledged developer. When asked what drew her to pivot her career interests towards software engineering Letania responds that she was looking for a change to something new. Going from 20 years in academia to working for a startup may seem like quite the 180 but Letania finds a lot of similarities between the work and research she was doing in linguistics and coding. Both of them, she says, are based on finding and following rules and patterns. As a researcher she spent a lot of time running and analyzing large amounts of data to translate that data into actionable... --- ### How to Handle JavaScript Uncaught TypeError: "x" is Not a Function > The Javascript TypeError: "x" is not a function occurs when calling a function on a value or object, which is not actually a function. Learn how to fix it. - Published: 2024-06-20 - Modified: 2024-06-21 - URL: https://rollbar.com/blog/how-to-handle-uncaught-typerror-x-is-not-a-function/ - Categories: Code Tutorials, JavaScript - Tags: error-handling, error-monitoring, JavaScript The Javascript error TypeError: "x" is not a function occurs when there is an attempt to call a function on an object, which is not actually a function. To illustrate using an analogy, imagine you're in a kitchen following a recipe. The recipe says to use a blender to blend certain ingredients together but you accidentally use a juicer. When you try to blend with a juicer, it doesn't work properly since blending is not a function of the juicer. Similarly, in Javascript when you try to call a function (blend) on an object (juicer) that doesn't contain the function, the TypeError: "x" is not a function occurs. What Causes TypeError: "x" is not a function A TypeError: "x" is not a function in Javascript generally occurs in one of the following scenarios: A typo in a function call. Missing script library. When a property is called on an object like a function but is not actually a function. When calling a built-in function that expects a callback function argument, which does not exist. When the called function is within a scope that is not accessible. TypeError: "x" is not a function Examples 1. Typo A typical scenario for the TypeError: "x" is not a function to occur is when there is a typo in the called function name: var elem = document. getElementByID('ID'); Running the above code leads to the following Javascript error: TypeError: document. getElementByID is not a function The correct function name is getElementById: var elem =... --- - [Francesco Crippa](https://rollbar.com/?employee=francesco-crippa): ### Introducing Interactive Slack Notifications - Published: 2019-03-12 - Modified: 2021-07-19 - URL: https://rollbar.com/blog/introducing-interactive-slack-notifications/ - Categories: product - Tags: Slack Quickly responding to new, reactivated, and otherwise important exceptions is a critical part of adopting continuous delivery and other DevOps best practices. Rollbar provides code version-specific dashboards and a live feed for proactively monitoring for exceptions during a deploy, but for those exceptions that happen when you aren't actively watching Rollbar, our Slack integration is the most popular way to get real-time alerts. Previously our Slack alerts were read-only, but it's now possible to take immediate action on exceptions from within Slack, including: Assigning items to a teammate for further investigation. Resolving, muting, or reopening items. Setting the level to critical, warning, etc. Slack actions require the acting user to be logged into Rollbar, so you'll have a full audit trail and only members of your team with Rollbar access will be able to update items from Slack. Already have Slack notifications set up? In order to use Slack actions the authorization token used by Rollbar needs to be updated with a new scope. This is a quick change and can be done by clicking the link in the banner that appears in-app and then re-authorizing Rollbar's access to your Slack account. Slack actions are enabled for by default in all new projects, with the option to turn them on/off for an entire project or per notification rule. Want to add the Slack integration to your project? Check out our docs for Slack and notification setup. Feedback? Questions? We're excited to hear what you think and ready to help if... --- - [Anthony Tran](https://rollbar.com/?employee=anthony-tran): ### How to Fix KeyError Exceptions in Python > The Python KeyError is an exception that occurs when an attempt is made to access an item in a dictionary that does not exist. Learn how to fix it. - Published: 2024-06-20 - Modified: 2024-06-20 - URL: https://rollbar.com/blog/python-keyerror/ - Categories: Code Tutorials, Python - Tags: Python The Python KeyError is an exception that occurs when trying to access an item in a dictionary where it does not exist. The key used to access the item is not found in the dictionary, which leads to the KeyError. As an analogy, it's like trying to open a locker within a set of lockers using a code that doesn't match any of them. In such a case, the system will not be able to find a locker with the code entered and will raise an error. In the context of Python, the set of lockers represents a dictionary and the code is the key you're trying to use to access an item. If the key doesn't exist in the dictionary, Python raises a KeyError. What Causes KeyError The Python KeyError is raised when a mapping key is not found in the set of existing keys of the mapping. In Python, the most common mapping is the dictionary. When an item in a dictionary is accessed using a key, and the key is not found within the set of keys of the dictionary, the KeyError is raised. KeyError Example Here’s an example of a Python KeyError raised when trying to access a dictionary item that does not exist: employees = {"one": "John", "two": "Darren", "three": "Paul"} print(employees) #Attempt to access an item that does not exist in dictionary In the above example, the dictionary employees contains some key-value pairs. An attempt is then made to access an item from employees... --- - [Kay Xiong](https://rollbar.com/?employee=kay-xiong): ### Introducing the Rollbar Pipe for Bitbucket Pipelines - Published: 2019-02-28 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/introducing-the-rollbar-pipe-for-bitbucket-pipelines/ - Categories: product - Tags: continuous-delivery Automating your deployment process is a critical step towards adopting continuous delivery. For teams that use Bitbucket for hosting their source code, Bitbucket Pipelines provide an easy way to automatically build and deploy when changes are made in your origin repository. The Rollbar team is excited to participate in the launch of Bitbucket Pipes, which make it even easier to configure your pipeline. Bitbucket Pipes makes it easy to build and automate a CI/CD pipeline that meets your exact needs. Bitbucket Pipes replaces custom-written scripts with parameterized calls to vendor-supported 'pipes'. For instance, you can now report a deploy to your Rollbar project with a call to the rollbar/rollbar-notify pipe: As you can see in the example above, adding the rollbar/rollbar-notify pipe takes just a couple of lines of YAML and it unlocks several features in Rollbar which will speed up your debugging process when exceptions occur. Deploy Tracking in Rollbar Reporting deploys to Rollbar makes it easier to correlate exceptions to code changes which may have triggered them: Each exception in Rollbar has a 'Suspect Deploy' which is the last reported deployment before it became active. Deploys will appear as an entry in your live exception feed so you can quickly see when code changes occurred. If your Rollbar account is on an Advanced or Enterprise plan, you can track exceptions by version, providing a real-time dashboard of exceptions occurring in your last deployed version. Reporting Deploys via the Bitbucket Pipe When you add the rollbar/rollbar-notify pipe to your... --- - [Sharrin Fuller](https://rollbar.com/?employee=sharrin-fuller): ### Welcoming Samebug to Rollbar - Published: 2019-02-26 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/welcoming-samebug-to-rollbar/ - Categories: company - Tags: behind-the-scenes Today we're announcing that we've acquired Hungary-based Samebug. This is an important moment for Rollbar and represents a big step in our mission to help companies build software better, faster, and our vision of a life without bugs. Two summers ago, Cory and I stumbled across the samebug. io website. We had been noodling on the observation that many of the bugs that developers find and fix via Rollbar are pretty similar to the ones that other developers are finding and fixing, and we were wondering if there could be a way that Rollbar could help connect those developers to each other and reduce that duplication of work. When we saw the stack trace search engine that Samebug had built, powered by what appeared to be a grouping algorithm not unlike ours, we were intrigued. Soon, we met Samebug's founders, Reni, Arpi, and Dani, and discovered kindred spirits. It was clear that we shared a vision of how much better building software could be, and an approach to business and life grounded in honesty and transparency. Over the past year and a half, we explored various ways we could work together, culminating in today's announcement. As a Rollbar customer, you can look forward to our core feature - grouping - getting better and better as we integrate Samebug's technology into the Rollbar grouping engine, and longer-term, to our combined team putting our heads together to solve this and other deep problems that remain unsolved by any error monitoring solution. And... --- - [Artur Moczulski](https://rollbar.com/?employee=artur-moczulski): ### 4 Reasons Why You Need Error Monitoring - Published: 2019-02-19 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/4-reasons-why-you-need-error-monitoring/ - Categories: topics - Tags: business-impact Errors are a fact of life in web development, and even the world's greatest brands are not without fault. Errors can create unhappy customers, deter new ones and reduce revenues. An error monitoring solution offers a clear view of the most important errors based on how often they occur and how they impact users. It will give your engineering team confidence to deploy faster, and debug problems quickly, so they can get back to building new features. Here are four good reasons why you need error monitoring: 1. It Improves Customer Experience Most consumers now have high expectations for apps, and things like server errors, timeouts and missing resources can quickly degrade the user experience. A bigger issue is that the consumers don't even report many of the errors they encounter. Organizations that don't have an efficient system to identify and address errors will lose sales, customers, and market share should those errors persist or happen repeatedly. You shouldn't rely on customers to report problems, instead find and fix them proactively. An error monitoring solution gives you visibility into errors that affect the most users and highest value users. This helps your team prioritize errors by impact and efficiently allocate resources. The richer debugging capabilities of an error monitoring solutions can reduce Mean Time to Detect (MTTD) and Mean Time to Restore (MTTR), both of which can reduce outages and increase uptime. {: . highlightbox} “Rollbar is our early warning system for errors. The worst thing that can happen is... --- ### How to Catch and Fix NullPointerException in Java > The java.lang.NullPointerException occurs when trying to use a variable that does not point to an object and refers to nothing or null. - Published: 2024-06-19 - Modified: 2024-07-18 - URL: https://rollbar.com/blog/how-to-catch-and-fix-nullpointerexception-in-java/ - Categories: Code Tutorials, Java - Tags: java The java. lang. NullPointerException is a runtime exception in Java that occurs when trying to use a variable that does not point to an object and refers to nothing or null. To use an analogy, it’s like trying to send a letter without specifying the recipient's address. Without an address, the letter cannot be delivered. Similarly, if a variable in Java doesn't point to an actual object, the program gets confused and throws a NullPointerException. What Causes NullPointerException The NullPointerException occurs when an uninitialized variable is used. Such a variable has no object reference and does not point anywhere. Therefore, it has a null value in Java and using it throws a NullPointerException. Some of the most common scenarios for a NullPointerException are: Calling methods on a null object Accessing a null object’s properties Accessing an index element (like in an array) of a null object Passing null parameters to a method Incorrect configuration for dependency injection frameworks like Spring Using synchronized on a null object Throwing null from a method that throws an exception NullPointerException Example Here is an example of a NullPointerException thrown when the length method of a null String object is called: public class NullPointerExceptionExample { private static void printLength(String str) { System. out. println(str. length); //Trying to call a method on a null object } public static void main(String args) { String myString = null; printLength(myString); } } In this example, the length method of a String object is called without performing a null check.... --- - [Andrey Kornich](https://rollbar.com/?employee=andrey-kornich): ### Reduce noise in error monitoring with Grouping Suggestions - Published: 2019-01-16 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/reduce-noise-in-error-monitoring-with-grouping-suggestions/ - Categories: product - Tags: monitor One perennial problem we face in monitoring is dealing with noise. We don't want to miss important signals, but sorting through all the noise can be a chore. Ideally, we want to spend as little time as possible doing the setup work needed to achieve excellent signal-to-noise ratio. The feature we've just released will help you get closer to that optimal setup faster, with less work. Noise reduction using Rollbar Several major noise reduction mechanisms are built into Rollbar today: Automatic default grouping of all occurrences of an error, so if an error occurs 100 times, you'll see only one error item in your real-time error & crash reporting feed. Custom grouping rules you can set. For example, you can set a custom rule so that all future occurrences of an exception class are grouped as one error, regardless of the stack trace. You can also manually merge errors directly in the feed. When you do a manual merge all past occurrences get grouped, not just future ones. Custom grouping suggestions With Grouping Suggestions, Rollbar will now attempt to suggest a custom fingerprint rule whenever you manually merge errors. When you accept a suggestion a new custom fingerprint rule is created and you won't have to manually merge similar errors again in the future. How it works: Step 1: Perform a manual grouping Step 2: Review and accept suggestion The first release of this feature detects items with the same exception class and similar exception messages, and automatically generates the... --- - [Mary Lee Olson](https://rollbar.com/?employee=mary-lee-olson): ### Introducing IP Safelist for our API access > We are excited to announce the expansion of our security controls by introducing IP Safelist for our API access. This new feature extends the advanced security options available in our Enterprise packages. - Published: 2024-06-12 - Modified: 2024-06-12 - URL: https://rollbar.com/blog/ip-safelist-api-access/ - Categories: product - Tags: Usage Notifications Introducing IP Safelist for our API access Simplifying Your Debugging Experience At Rollbar, we understand that security is not just a feature but a cornerstone of modern enterprise operations. As part of our ongoing commitment to providing robust security solutions, we are excited to announce the expansion of our security controls by introducing IP Safelist for our API access. This new feature extends the advanced security options available in our Enterprise packages. Previously, our Enterprise customers enjoyed enhanced security features, including customizable login attempt limits, tailored password settings, session expiration controls, and the ability to restrict UI access via IP Safelist for VPN connections. Today, we are taking these capabilities a step further by enabling the Safelist feature for API access as well. With the new IP Safelist functionality, you can control UI and API access by specifying allowed IP addresses. This enhancement ensures that only requests from trusted IP addresses can access your API, adding a layer of security to protect your critical data. It's a straightforward yet powerful way to manage who can interact with your systems, significantly reducing the risk of unauthorized access. Implementing the IP Safelist is seamless. Our Enterprise owners can easily add and manage IP addresses through their existing Advanced Security Controls settings in your Account Settings. Whether managing a small team or a large distributed workforce, this feature allows you to secure your applications precisely how you need them. Secure your application's access now with Rollbar's enhanced IP Safelist. For more information on... --- - [Jessica Hsieh](https://rollbar.com/?employee=jessica-hsieh): ### Error Monitoring In Zend 3 - Published: 2019-01-14 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/error-monitoring-in-zend-3/ - Categories: Code Tutorials, PHP - Tags: PHP Zend Framework 3 is a free and open-source PHP framework. It uses a model-view-controller (MVC) pattern which makes its structure consistent and maintainable. It also accesses the database in an object-oriented way. Instead of directly interacting with the database using SQL queries, you can use doctrine object-relational mapping (ORM) to manage the structure and relationships of your data. This makes code easier to write and maintain. In production applications, it’s important to monitor errors so you understand your users experiences and can fix issues before more users are affected. In this tutorial, you will see how to set up Zend Framework 3 to handle errors natively and send errors to the error monitoring service Rollbar. The error message can be seen in your PHP error log or in Rollbar, including a stack trace that provides information about the line of code that caused the error. Native error handling in Zend 3 The easiest and most basic way to handle errors is using try, catch, and finally statements. When an error is thrown in the try block, the catch block executes and handles the error. For example, you may want to record the error or present a more friendly error message to the user. try { $value = 5 / 0; } catch (\Exception $e) { echo $e->getMessage; } In production, the application can crash due to uncaught or runtime errors, such as when an application tries to access invalid data or code or an illegal action is attempted. To avoid... --- - [Letania Ferreira](https://rollbar.com/?employee=letania-ferreira): ### Warmup Inbox's Story with Rollbar > At PLUM, we focus on crafting custom software solutions tailored to specific needs. Our projects range from helping startups launch their initial products to assisting established enterprises in scaling and enhancing their software infrastructure. - Published: 2024-06-10 - Modified: 2024-06-10 - URL: https://rollbar.com/blog/warmupinbox/ - Categories: company, User Stories - Tags: User Stories Warmup Inbox automatically raises your email sending reputation through a network of inboxes that talk to each other. 1. Describe your company and the service(s) offered. WarmupInbox is a tool to help improve email deliverability. The tool increases your chances for your email to be in the main inbox rather than the promotion tab or worse the spam folder. 2. What are you most passionate about in your current and/or past roles? Email deliverability is an ever-evolving field. There are frequent updates from big players like Google and Yahoo. It is challenging to stay on top of the news but it is also really interesting. We have to iterate really quickly about product and marketing messaging. Rollbar is actually helping us iterate quickly by making sure we aren’t breaking things. 3. Is there anything in particular about Rollbar that has kept you a loyal user? Ease of use and smooth integration with Slack, and easy to read dashboards, which allows to solve the most important defects in accordance with the Pareto principle. Visit Fabian Maume's LinkedIn Page --- ### Error Handling with Angular 6 - Tips and Best Practices - Published: 2019-01-04 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/error-handling-with-angular-6-tips-and-best-practices/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript Handling errors properly is essential in building a robust application in Angular. Error handlers provide an opportunity to present friendly information to the user and collect important data for development. In today's age of advanced front-end websites, it's more important than ever to have an effective client-side solution for error handling, which is covered in this article. An application that does not handle errors gracefully leaves its users confused and frustrated when the app suddenly breaks without explanation. Handling these errors across an application greatly improves user experience. Data can also be collected from within the error handlers to inform the development team about important issues that slipped past testing. In this article, we will compare several solutions for error handling in Angular apps. First we will describe traditional approaches using ErrorHandler and HttpClient, and then we will show you a better solution using HttpInterceptor. We'll also show how you can use this interceptor to track errors centrally in Rollbar. The shortcomings of the console log Beginners in JavaScript programming often start out using the console log because that is the default output in most development environments. Once you deploy your application to a production environment, you no longer have access to the console log. That's because the code is now running on the client browser. When those clients experience errors, you'll have no visibility to them unless you record them in a centralized location. In order to understand the user experience and how errors can affect it, you need... --- - [Vijay Selvaraj](https://rollbar.com/?employee=vijay-selvaraj): ### How to Fix the Array Index Out Of Bounds Exception in Java > To avoid this exception, ensure that your index values are within the valid range, from 0 to the length of the array minus one. - Published: 2024-05-30 - Modified: 2024-05-31 - URL: https://rollbar.com/blog/how-to-fix-the-array-index-out-of-bounds-excepiton-in-java/ - Categories: Code Tutorials, Java - Tags: java The ArrayIndexOutOfBoundsException is a runtime exception in Java that occurs when an array is accessed with an illegal index. The index is either negative or greater than or equal to the size of the array. Let’s put that in simpler terms with an analogy. Imagine you have a row of five boxes lined up in front of you. Each box has a number on it. If you want to put a toy in one of these boxes, you have to say which box number you're putting it in. For example, "Put this toy in box number 2. " But what if you say, "Put this toy in box number 6"? There's no box number 6 because you only have five boxes. So, it's like asking for something that doesn't exist, and that causes a problem. Think of ArrayIndexOutOfBoundsException then as Java's way of saying, "Hey, that box number doesn't exist! " What Causes ArrayIndexOutOfBoundsException The ArrayIndexOutOfBoundsException is one of the most common errors in Java. Since a Java array has a range of , when an attempt is made to access an index outside this range, an ArrayIndexOutOfBoundsException is thrown. Besides arrays, this exception can also happen with strings, ArrayLists, and any other data structure that uses indexing to access elements. ArrayIndexOutOfBoundsException Example Here is an example of a ArrayIndexOutOfBoundsException thrown when an attempt is made to retrieve an element at an index that falls outside the range of the array: public class ArrayIndexOutOfBoundsExceptionExample { public static void main(String args)... --- - [Renáta Tamási-Irsai](https://rollbar.com/?employee=renata-tamasi-irsai): ### What we've shipped in 2018 - Published: 2018-12-27 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/what-weve-shipped-in-2018/ - Categories: product - Tags: triage With 2018 almost coming to a close, let's take a look at all the product improvements we've shipped this year . New features and SDK releases Account dashboard: Track error trends account-wide Versions: Monitor errors by deployed code revisions All items view: View all and/or specific errors across projects Enhanced stack trace Enhanced deploy API Official . NET SDK - now v2. 1 Official Golang SDK - v1. 0 Official React Native SDK - v0. 4 Integrations customizable data retention Notifications: edit notification rules before turning on, disable email notifications for a new project User onboarding: email domain whitelisting, user provisioning via Okta Search: search items with issues, search by method name in stacktrace A brand new Docs site For the full list, check our changelog. Tutorials If you're new to Rollbar, or want to use Rollbar with a language or framework new to you, check out these tutorials we've written in 2018. Examples included. JavaScript source maps Vue. js ASP. NET Xamarin Android iOS PHP Symfony PHP Magento PHP Wordpress On to 2019 ! If you aren't using a tool like Rollbar yet, you're practically outsourcing bug discovery to users. Rollbar provides realtime error monitoring to help you release better software faster. Instantly see all errors as they occur, and debug them before users notice. Give it a try for free! --- - [Árpád Tamási](https://rollbar.com/?employee=arpad-tamasi): ### How to Fix the ClassNotFound Exception in Java > The Java ClassNotFoundException occurs when the JVM tries to load a class but does not find it in the classpath. Learn the three steps you can take to fix it. - Published: 2024-05-26 - Modified: 2024-05-27 - URL: https://rollbar.com/blog/how-to-resolve-classnotfoundexception-in-java/ - Categories: Code Tutorials, Java - Tags: error-handling, exception monitoring, java When you run a Java program, the Java Virtual Machine (JVM) needs to load various classes to execute the program. The java. lang. ClassNotFoundException occurs when the JVM tries to load a particular class but doesn’t find it in the classpath. One of the most common reasons for the ClassNotFoundException is missing third-party libraries. Double-checking that all necessary dependencies are included in the classpath and that the classpath is correctly configured can prevent this exception. What Causes ClassNotFoundException The classpath is a parameter that tells the JVM and the Java compiler where to look for user-defined classes and packages when running a program. When you use any of the following methods to load a class but the JVM can’t find it in the classpath, java. lang. ClassNotFoundException is thrown. Class. forName ClassLoader. findSystemClass ClassLoader. loadClass If you get the ClassNotFoundException but are sure the class is there, what probably happened is one of these: The classpath might be incorrectly set up. The JAR file or directory containing the required classes is incorrect or the classpath is overridden by a start-up script or build configuration. Typos in the class name specified in methods like Class. forName If the required class depends on other classes that are not present in the classpath, it can lead to the ClassNotFoundException. This is common in complex applications with many dependencies. Sometimes, using different versions of a library can cause this exception if the class you are trying to load is not present in the version... --- - [Dániel Poroszkai](https://rollbar.com/?employee=daniel-poroszkai): ### Monitoring errors in Xamarin apps - Published: 2018-12-20 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/monitoring-errors-in-xamarin-apps/ - Categories: .NET, Code Tutorials - Tags: dotnet Xamarin is based on Mono, the open source implementation of Microsoft's . NET Standard. It allows us to create apps that easily run in multiple devices like phones and smart watches. It solves the difficulties many developers face when they’re developing cross-platform apps like different coding languages and UI paradigms. With Xamarin, you can use C# as a single language for iOS, Android, and Universal Windows apps. Apps freezing, crashing, or slowing down are the top reasons for a bad review. According to a survey by Dimensional Research, 49 percent of users expect mobile apps to start within two seconds. If an app crashes, freezes, or has errors, 53 percent of users will uninstall it. These problems not only cause existing users to delete your app, but they can also discourage new users from downloading your app. That’s why having visibility into the performance of mobile apps in real time and from real users is so critical—it helps identify customer problems and create great user experiences. We will show you how to handle errors using both native error handling in Xamarin and using Rollbar, which is a dedicated service for remote error monitoring. Below, you can see we’ve created an example app that triggers an exception when the user clicks on a button. The error message will be tracked by Rollbar, including a stack trace where you can see the line of code that caused the error. Rollbar captures errors that occur anywhere in the app. Native error handling in... --- - [András Horváth](https://rollbar.com/?employee=andras-horvath): ### How to Resolve Java.lang Exceptions > Understand and resolve common Java.lang exceptions with this comprehensive guide, including NullPointerException, IllegalArgumentException, and more. - Published: 2024-05-24 - Modified: 2024-05-24 - URL: https://rollbar.com/blog/how-to-resolve-java-lang-exceptions/ - Categories: Code Tutorials, Java - Tags: java Java. lang exceptions are some of the most commonly encountered exceptions in Java programming. As one of the foundational packages in the Java Standard Library, you don't even explicitly import java. lang in your code; it’s automatically imported into every Java program. Thanks to java. lang you get essential classes such as String, Math, and System, among others. You also get a variety of base classes for handling exceptions and errors. The many java. lang exceptions reflect the complexity of Java itself, and each provides detailed feedback to address specific issues. This guide serves as a central hub summarizing what the most common java. lang exceptions mean and linking to our in-depth blog posts that provide detailed solutions and best practices. Understanding these exceptions is not just about fixing errors but about gaining deeper insights into the mechanics of your codebase. java. lang. NullPointerException A NullPointerException occurs when you try to use an object reference that has not been initialized. This is one of the most common exceptions in Java. It’s crucial to check for null before performing operations on objects to avoid this exception. Learn More: How to Catch and Fix NullPointerException in Java java. lang. ArithmeticException An ArithmeticException is thrown when an exceptional arithmetic condition has occurred, such as division by zero. Properly handling mathematical operations and validating input can prevent this. Learn More: Java ArithmeticException java. lang. IllegalArgumentException This exception is thrown to indicate that a method has been passed an illegal or inappropriate argument. Validating method... --- ### Win-Win Deployment Strategies for Modern Apps - Published: 2018-11-13 - Modified: 2023-06-20 - URL: https://rollbar.com/blog/win-win-deployment-strategies-for-modern-apps/ - Categories: topics - Tags: continuous-delivery These days, the biggest change to software development is the frequency of deployments. Product teams deploy releases to production earlier (and more often). Months or years-long release cycles are becoming rare—especially among those building pure software products. Today, using a service-oriented architecture and microservices approach, developers can design a code base to be modular. This allows them to write and deploy changes to different parts of the code base simultaneously. The business benefits of shorter deployment cycles are clear: Time-to-market is reduced Customers get product value in less time Customer feedback also flows back into the product team faster, which means the team can iterate on features and fix problems faster Overall developer morale goes up However, this shift also creates new challenges for the operations or DevOps team. With more frequent deployments, it’s more likely that the deployed code could negatively affect site reliability or customer experience. That’s why it’s important to develop strategies for deploying code that minimize risk to the product and customers. In this article, we’ll talk about a few different deployment strategies, best practices, and tools that will allow your team to work faster and more reliably. Challenges of Modern Applications Modern applications are often distributed and cloud-based. They can scale elastically to meet demand, and are more resilient to failure thanks to highly-available architectures. They may utilize fully managed services like AWS Lambda or Elastic Container Service (ECS) where the platform handles some of the operational responsibility. These applications almost always have frequent deployments.... --- ### How to Handle java.lang.IndexOutOfBoundsException > The IndexOutOfBoundsException is thrown when an index used in arrays, lists, or strings is not valid. Fixing it depends on the situation that led to it. - Published: 2024-04-30 - Modified: 2024-07-24 - URL: https://rollbar.com/blog/how-to-handle-java-lang-index-out-of-bounds-exception/ - Categories: Code Tutorials, Java - Tags: java The java. lang. IndexOutOfBoundsException in Java is thrown when an index used in arrays, lists, or strings is not valid. A valid index must be a number from 0 up to one less than the total number of items. For example, in a list of 3 items, the valid indices are 0, 1, and 2. Here’s a quick example: List list = new ArrayList(Arrays. asList(1, 2, 3)); int element = list. get(3); // This will throw IndexOutOfBoundsException The error message you’d get would look something like this: Exception in thread "main" java. lang. IndexOutOfBoundsException: Index: 3, Size: 3 Here are some other common ways the IndexOutOfBoundsException might be thrown: Sublist Operations: When creating a sublist from a larger list, if the start or end index is out of bounds. For example, list. subList(-1, 3) or list. subList(2, 10) where the list size is less than 10. String Manipulation Methods: Beyond just accessing characters, methods like substring, charAt, and split can throw this exception if the indices provided are out of range. Vector or Stack: Other data structures in the Java Collections Framework like Vector and Stack can also throw this exception when trying to access elements with an invalid index. Custom Data Structures: Developers can implement custom data structures that use indexing, and they may throw IndexOutOfBoundsException to indicate misuse, such as accessing elements not present in the structure. You may also see StringIndexOutOfBoundsException and ArrayIndexOutOfBoundsException, which are more specific subtypes of the IndexOutOfBoundsException, indicating out-of-bounds conditions for strings and... --- ### How to Show Errors in WordPress - Published: 2018-11-06 - Modified: 2024-03-07 - URL: https://rollbar.com/blog/monitoring-errors-in-wordpress/ - Categories: Code Tutorials, PHP - Tags: PHP WordPress is an open source blogging and website creation tool written in PHP and MySQL. It is a highly flexible content management system (CMS) that enables you to build and manage your website using just your web browser. According to a W3Techs survey, WordPress is used by 31. 8% of all websites. WordPress sites generate errors that can negatively affect users, but they are not reported in tools like Google Analytics. You need to examine server-side logs to determine how often they happen. These errors are not just generated by Wordpress, but by the dozens of plugins and custom themes that businesses add. Common WordPress errors experienced by users include the "white screen of death," “internal server error,” “connection timed out,” and many more. We’ve created an example app to demonstrate how errors are handled in WordPress. Also, we’ll show you how Rollbar can help you monitor and display errors on a dashboard. Rollbar will show you the error message along with contextual information to see the impact and debug the root cause. Native WordPress error logging WordPress has a built-in mechanism to log errors but it's not enabled by default. To turn it on, add the WP_DEBUG constant in your wp-config file. WordPress will turn on debugging and generate a debug. log file under {your website}\wp-content\debug. log. define ('WP_DEBUG',true); WordPress does not create debugging logs by default because it displays all the PHP errors on the live site. To prevent errors from being displayed and only record them in... --- ### Sergey's story with Rollbar > From the very beginning, Rollbar has been integral to our operations, utilized even prior to our official launch. Our commitment to delivering exceptional service to our clients relies on the efficacy of our alerting and monitoring tools, with Rollbar being an important component. - Published: 2024-04-23 - Modified: 2024-04-23 - URL: https://rollbar.com/blog/sergeys-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Sergey Belogurov Sergey has now been using Rollbar for 100 months! 1. My Role I've worked for a marketing data analytics company called Attribution (www. attributionapp. com) for 8 years now. My role as Tech Lead is to ensure reliable operation of our services and continued delivery of new features with the help of the development team. Attribution’s mission is to make marketing performance more transparent. Marketers spend much of their time trying to understand what marketing efforts are working and which are not. The Attribution marketing analytics platform provides marketers with the insights to understand the cost, revenue and profit resulting from marketing programs by channel and down to the individual customer level so they can make better decisions, faster and with more confidence than ever before. 2. My Passion in the Role From early ages, I was always passionate about all types of tech: the first one being wooden bricks, I guess. So it's no surprise that over the years it transformed into the profession of my life. I like to build things and what could be more fun than building software in digital era? Don't be afraid to experiment and keep learning. The world of technology is constantly evolving, and there's always something new to discover. Embrace the challenges, and who knows, maybe your next creation will change the world! 3. The Rollbar Experience If everything always worked perfectly, Rollbar wouldn't be necessary, but in reality, it's a vital tool that works tirelessly behind the scenes for... --- ### Stacktrace Enhancements - Code Context in each Traceback Frame - Published: 2018-10-26 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/stacktrace-enhancements-code-context-in-each-traceback-frame/ - Categories: product - Tags: stacktrace Rollbar item stacktrace has a new UI and this change was done to support the new and advanced stacktrace. Users hosting their code on GitHub, GitLab or Bitbucket can now view code context within each frame of the stacktrace! Code context is a new feature in stacktrace through which we show additional lines of code for each entry in a traceback, saving you the trouble of jumping to your source code to figure out where exactly an exception occurred. One of our lovely engineers decided to demonstrate the benefits of the new stacktrace into her workflow. Of course if you're already well aware of the benefits, feel free to check out How to set up code context for your project in our docs. Debugging stacktrace without the code context Let’s go through a Rollbar item where I actually used the code context in the new stacktrace to fix a bug quickly (Easter egg - I realized this was a bug IN the code context feature itself! ) The Rollbar title/exception message for this item reads - AttributeError: 'SCMRepoNotAccessible' object has no attribute 'api_name'. From this, I know that SCMRepoNotAccessible. api_name has failed. From working on this feature, I know that SCMRepoNotAccessible is a custom exception. Now I take a look at the last frame of the stacktrace. From here I see the exact line of code where the error occurred - error_data = e. api_name. Based on this information solely, here's my hypothesis - It looks like we tried to... --- ### How to Fix Unterminated String Literals > In other words, you probably forgot a closing quotation mark somewhere. This causes an error because the compiler doesn't know where your string ends. - Published: 2024-04-22 - Modified: 2024-10-09 - URL: https://rollbar.com/blog/how-to-fix-unterminated-string-literals/ - Categories: Code Tutorials - Tags: c++, java, JavaScript, PHP, Python, ruby Imagine you want to leave a note for someone. You write the message on a piece of paper and put it in an envelope. The envelope around your note keeps the message contained and separate from other things. It's the same idea with terminating string literals. A string literal is like the note you wrote, while terminating it is like sealing the envelope. Here's an example: "Hello, world! " The phrase "Hello, world! " is the string literal, while the double quotation marks tell the computer where the string begins and ends. An unterminated string literal then would be like: "Hello, world! See the missing closing quotation mark? When a string literal is not closed properly, it confuses the compiler or interpreter, which expects every opening quote to have a corresponding closing quote. The result is an error that can halt the execution of your program and can sometimes be tricky to spot, especially in longer blocks of code. In this post, we'll explore how unterminated string literals manifest in popular programming languages like Python, Java, JavaScript, C#, PHP, and Ruby. You'll learn not only how to identify but also how to resolve these common yet troublesome coding errors. Unterminated String Literals in Python When you run code like print("Hello, world! ), Python will throw a SyntaxError because it reached the end of the line and couldn't find the closing quotation mark. The error message looks like: SyntaxError: EOL while scanning string literal Here, EOL stands for "End Of Line.... --- ### Robin's story with Rollbar > From the very beginning, Rollbar has been integral to our operations, utilized even prior to our official launch. Our commitment to delivering exceptional service to our clients relies on the efficacy of our alerting and monitoring tools, with Rollbar being an important component. - Published: 2024-04-18 - Modified: 2024-04-18 - URL: https://rollbar.com/blog/robins-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Robin Dunlop Software Business Owner     Robin has now been using Rollbar for 103 months! 1. My Role I am now self-employed. I am a software consultant for various clients, I work mostly in a maintenance capacity. 2. My Passion in the Role I am passionate about maintenance. I have enough experience that I think that large re-writes are generally a bad idea. Identifying and fixing issues on existing systems are more important than replacing the system wholly. 3. The Rollbar Experience It works, it's easy to integrate, it's notification system (through email) with grouping works well (usually... sometimes the grouping is not quite right, but I haven't taken the time to figure out how to fix that on my end) --- ### How to Monitor Errors in Magento 2 the Easy Way - Published: 2018-10-25 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/how-to-monitor-errors-in-magento-2-the-easy-way/ - Categories: Code Tutorials, PHP - Tags: PHP Magento is the largest open-source eCommerce platform in the world, used by more than 250,000 merchants. While Magento makes setting up a store easier, there is complexity with custom plugins and extensions, and custom site behavior. Sophisticated stores also introduce more opportunity for problems with errors, exceptions, bugs, performance, and more. A critical production issue might not just cost you a sale, but also customer trust. Errors can affect your business in surprising ways. To avoid impacting customers, your team needs visibility into problems that affect user experience to fix issues as quickly as possible. In this post, we’ll show you how to enable exception printing and monitor errors in Magento 2 applications, both using the native exception log and the popular error monitoring solution Rollbar. Rollbar will give you an overview of all the errors happening on your store, how many customers are affected, and debugging information to find the root cause. We will walk you through the process of setting up Rollbar with Magento 2. We’ve created an example app that will trigger an exception when the user clicks on a button. The error message is recorded on Rollbar with a stack trace so you can see the exact line of code that caused the error. Native exception handling in Magento 2 Magento 2 gives you exception logs in a file by default. If you get an error message that says “There has been an error processing your request, Magento exception printing is disabled by default for security... --- ### Benoit's story with Rollbar > From the very beginning, Rollbar has been integral to our operations, utilized even prior to our official launch. Our commitment to delivering exceptional service to our clients relies on the efficacy of our alerting and monitoring tools, with Rollbar being an important component. - Published: 2024-04-16 - Modified: 2024-04-16 - URL: https://rollbar.com/blog/benoits-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Benoit Tremblay Chief Technology Officer Benoit has now been using Rollbar for 100 months! 1. My Role I work for UEAT Technologies, an ordering platform for restaurants. I am managing the engineering team that is building the online ordering and self-serving kiosk. 2. My Passion in the Role I am not only proud of the quality of the product that we built, I am even more proud of the amazing team of engineers that we built. We try as hard as we can to foster teamwork and I couldn't be more proud of my team. 3. The Rollbar Experience Rollbar is amazing at tracking issues, making it easy to get alerts and find information on how to reproduce them. We tried consolidating all our observability tools within Google Cloud but Rollbar saves us so much time, especially on the frontend projects, we will probably keep it forever. --- ### Enhancements to the Rollbar Deploy API - Published: 2018-10-09 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/enhancements-to-the-rollbar-deploy-api/ - Categories: product - Tags: monitor Rollbar introduced Versions a few months ago, providing developers a way to easily see whether their most recently deployed code changes are introducing new or reactivated errors. As a follow-on improvement, we've updated our Deploys API so you can notify Rollbar immediately when starting a deploy as well as when it completes. Notifying Rollbar immediately when a deploy starts will ensure that notifications about the new version will include as much information as possible, including the number of commits since the previous deploy as well as the user who started the deploy. Read on to see how to use the updated Deploy API to notify Rollbar when your deploy starts and finishes. Starting a Deploy For this post I'll show you how to notify Rollbar using a Bash deploy script, but any tool that is able to make HTTP calls can be used to report deploys to Rollbar. The example relies on curl and jq, both of which can be downloaded and intalled for free, and come pre-installed in many environments. At the start of your deploy script, you'll need to send a POST request to report a new deploy and save the deploy_id into a variable so it can be used later: # ... # set variables for the POST command ROLLBAR_ACCESS_TOKEN=YOUR_POST_SERVER_ITEM_ACCESS_TOKEN_HERE ENVIRONMENT=development GIT_SHA=YOUR_GIT_SHA_HERE # ... ROLLBAR_DEPLOY_ID=`curl https://api. rollbar. com/api/1/deploy/ \ --form access_token=$ROLLBAR_ACCESS_TOKEN \ --form environment=$ENVIRONMENT \ --form revision=$GIT_SHA \ --form local_username=$USER \ --form status=started | jq -r '. data. deploy_id'` # Additional steps for your deploy... Running deploys... --- ### Error Monitoring in Symfony - Published: 2018-09-27 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/error-monitoring-in-symfony/ - Categories: Code Tutorials, PHP - Tags: SDK Symfony is a PHP model-view-controller framework used to develop web applications. The main reasons Symfony has acclaimed fame among the developer community are its database engine compatibility, its faster development and its robust system. These features make it easy to develop and customize web applications. To make your web application successful, you should consider how user experience is affected by the inevitable errors that pop up in production. Customers can walk away from a purchase or churn out from a subscription when applications do not run properly. A fast response to critical problems is essential. To minimize customer impact, it is important to track and fix issues quickly. In this tutorial, we’ll show you how to add native error handling so you can capture handled and unhandled errors. Doing so lets you present a clear message to the user as well as track the error to prioritize fixes. Then, we’ll show you how to monitor errors using Rollbar. Rollbar is an error monitoring service that tracks errors centrally and gives you tools to better monitor and troubleshoot problems in production. We'll show a working example for Symfony 3, but Rollbar also supports Symfony 4. Native error handling in Symfony 3 Starting at the most basic level, error handling can be achieved using try, catch and finally statements. These statements can be used to handle caught exceptions in Symfony components. try { $value = 5 / 0; } catch (\Exception $e) { return $e->getMessage } Symfony 3 also offers multiple approaches... --- ### Pay directly from your bank account > Pay for your Rollbar subscription directly from your bank account, thanks to ACH payments! This is for customers in the United States looking for a simple, more direct way to handle subscription payments. - Published: 2024-03-29 - Modified: 2024-03-29 - URL: https://rollbar.com/blog/ach-payment-support/ - Categories: product You asked, and we listened. Now it’s here. Pay for your Rollbar subscription directly from your bank account, thanks to ACH payments! This is for customers in the United States looking for a simple, more direct way to handle subscription payments. What is ACH and why would I use it? ACH payments are electronic payments made through the Automated Clearing House network, a secure system that connects all U. S. financial institutions. They’re secure and fast, and sometimes easier than a usual credit payment. As with our credit cards, it's a set-it-and-forget-it way to keep your Rollbar subscription up and running. How to Switch to ACH Payments Switching to ACH payments is straightforward. Account owners can navigate to the 'Payment Details' section within the Rollbar settings. From there, clicking the 'Change Payment Method' button will allow you to select ACH as your preferred payment method. Once you've entered your bank account details and saved your settings, future payments will be automatically deducted from your bank account, making your payment process smoother and hassle-free. Tell Us What You Think! This new feature is all about making your life easier. If you have questions or need a hand setting things up, our support team is here to help. And we’re always here for your feedback, too. Do you have ideas, or thoughts, or just wanna chat about how we can make Rollbar even better for you? Shoot us an email at product@rollbar. com. Thanks for being such an awesome part of the... --- ### Error Handling in React Native > Learn how to catch unhandled exceptions in React Native, perform tasks to provide the best experience for users, and handle these errors using our SDK. - Published: 2018-09-20 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/error-monitoring-in-react-native/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript React Native has recently gained popularity among the mobile app developer community due to its cross platform compatibility, quick development cycle and better user experience. It is easier to develop, build and maintain apps using React Native. For mobile apps, business success or failure is determined by user experience and retention rate. The retention rate can drop immediately if the application does not work properly, causing customers to switch to other apps or leave poor reviews in the app store. A fast response to critical errors is essential to minimize customer impact. Let’s start by covering how to handle errors in vanilla React Native. We will then show you how Rollbar is a game changer to get better error monitoring. How to handle errors in React Native Error handling in vanilla JavaScript can be achieved using try, catch and finally statements. You can use these statements to handle caught exceptions in React Native components. try { var test; test. color; } catch(err) { // handle error here } React Native has its own mechanism to handle uncaught exceptions. This allows you to track the error, display a message to the user, or attempt to recover. See the example below: const previousHandler = ErrorUtils. getGlobalHandler; ErrorUtils. setGlobalHandler((error, isFatal) => { // handle the error here console. log(error); }); Logging to the console works fine during development, but there is no out-of-the-box way to track these errors centrally after they are installed. This is essential to see how many of your users... --- - [Magdalena Dzindzisz](https://rollbar.com/?employee=magdalena-dzindzisz): ### How to Fix a Circular Import in Python > An ImportError (most likely due to a circular import) happens when two or more modules depend on each other to function, creating a loop in the import statements. - Published: 2024-03-25 - Modified: 2025-03-17 - URL: https://rollbar.com/blog/how-to-fix-circular-import-in-python/ - Categories: Code Tutorials, Python - Tags: Python Think of two pieces of code (let's call them A and B) that need each other to work. A says, "I need B to do my job," and at the same time, B says, "I need A to do my job. " But if A is waiting for B to work, and B is waiting for A to work, neither can start working. This "waiting on each other" situation causes Python to get stuck and throw a circular import error. Example Here’s a real life example of this error message: importerror: cannot import name 'db' from partially initialized module 'app' (most likely due to a circular import) This indicates that at some point in the code, there's an attempt to import an entity named db from a module named app. What does the error actually mean? The term partially initialized module 'app' means that when the import of db is attempted, the module app hasn't been fully loaded yet. Python needs to execute the entire body of a module to consider it fully initialized. If this process is interrupted or made conditional by a circular dependency, not all definitions within the module will have been executed, leading to this partial initialization problem. The error hints at a circular import being the likely culprit. The phrase (most likely due to a circular import) means that app might be trying to use something from another module, which in turn, directly or indirectly, tries to import app again (or something from app). Python... --- - [Ádám Németh](https://rollbar.com/?employee=adam-nemeth): ### Introducing Versions - Published: 2018-08-31 - Modified: 2021-07-19 - URL: https://rollbar.com/blog/introducing-versions/ - Categories: product - Tags: monitor We built Versions for customers who are adopting software development practices like Continuous Delivery. One important habit to cultivate when you're seeking to adopt Continuous Delivery is to deploy early and often. This is easier to do when you have a tool like Rollbar that allows you to see all production errors instantly and quickly prioritize and debug them as needed. With Versions, we're making it even easier for you to use Rollbar to monitor errors from code revisions you've just deployed. {: . highlightbox} If you haven't heard about All Items View - another Advanced feature we've broadly released recently - I encourage you check out this post. What Versions is for Versions allows you to see all new and reactivated errors from each deployed code version across multiple projects in your account, from a single screen. This feature comes in handy if you deploy continuously or have multiple code versions running in production. With Versions, it’s easy to tracking how the quality of each deployed version improve or regress over time. Triaging becomes easier too, because each version entry comes with information on who deployed it, which errors have been resolved, and which have not. Versions is deploy pattern agnostic, so it works with any pattern you use, including canary, blue/green, or anything else. It gives you the information that helps you decide whether to do a full rollout or a rollback. In addition to the account-level Versions, you also get a project-level Versions feed for each of... --- - [Zita Lőrinczi](https://rollbar.com/?employee=zita-lorinczi): ### Ibrahim's story with Rollbar > From the very beginning, Rollbar has been integral to our operations, utilized even prior to our official launch. Our commitment to delivering exceptional service to our clients relies on the efficacy of our alerting and monitoring tools, with Rollbar being an important component. - Published: 2024-03-22 - Modified: 2024-04-15 - URL: https://rollbar.com/blog/ibrahim-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Ibrahim Menem Co-Founder at Stomio     Ibrahim has now been using Rollbar for 100 months! 1. My Role I am Ibrahim Menem, co-founder of Stomio. io, a cutting-edge voice-of-customer platform dedicated to empowering product teams in crafting exceptional products. Our platform equips teams with great tools to gather customer feedback and execute top-tier beta programs effectively. Stomio was founded in 2021, with roots spanning from San Francisco, CA to Madrid, Spain. 2. My Passion in the Role From the very beginning, Rollbar has been integral to our operations, utilized even prior to our official launch. Our commitment to delivering exceptional service to our clients relies on the efficacy of our alerting and monitoring tools, with Rollbar being an important component. We integrate it to Stomio's production and staging environments and every exception report undergoes meticulous review, enabling us to proactively address any potential issues before they impact our clients. Moreover, Rollbar is connected to our engineering slack channel, ensuring that the entire team remains promptly informed about any emerging issues. 3. The Rollbar Experience We chose Rollbar because we already used and liked it from previous jobs. After a quick comparison with other options in the market, we found that Rollbar's free plan was really generous and was perfect for our traffic at that moment, once we started to have higher traffic volume we changed to a paid plan. --- - [Walt Jones](https://rollbar.com/?employee=walt-jones): ### Introducing All Items View - Published: 2018-08-30 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/introducing-all-items-view/ - Categories: product - Tags: error-feed Increasingly more software teams - ourselves and our customers included - are adopting practices like microservices and/or Continuous Delivery. What this typically means in terms of how our customers use Rollbar is two-fold: First, they set up multiple projects in Rollbar. A common setup is to have one project for each code repository of a deployable service. Second, they deploy to production often. Each time they deploy a release, they monitor Rollbar Items feed closely for errors. We built the All Items View to make error monitoring much easier for those using Rollbar in such ways. What All Items View is for The All Items View is very useful when you want a specific view across projects, because you can apply filters or search across them to create that view. For example, you're a Front-end Engineer and you have 10 different Rollbar projects, and you want to see specifically just the JavaScript errors from those ten. It's also handy when you are tasked to monitor multiple Rollbar projects as part of a deployment, because you can see not only the errors across projects, but also if they've been assigned to anyone and triage accordingly - all from a single screen. Sometimes errors from different projects may be correlated. A client-side error may result from a database error, and so on. All Items View makes it easier for you to notice such correlations. Try it yourself All Items View is one of two new features we've been incubating in Labs for... --- - [Nellie Sisti](https://rollbar.com/?employee=nellie-sisti): ### How to Fix java.lang Illegal Argument Exception Unsupported Class File Major Version 61 > The error is Java's way of saying, "I can't run this class because it was built with a version of Java that's newer than me." It's time to upgrade Java. - Published: 2024-03-20 - Modified: 2024-11-05 - URL: https://rollbar.com/blog/unsupported-class-file-major-version-61-error-in-java/ - Categories: Code Tutorials, Java - Tags: java The "Unsupported class file major version 61" error in Java means you're trying to run a Java program that's too advanced for the version of Java you have installed. To fix this, either update your Java to version 17 or newer, otherwise recompile the program with an older Java version that matches your runtime environment. This error often occurs when using libraries, frameworks, or tools that internally check class file versions and throw an IllegalArgumentException if they encounter a version they don't support. What’s “major version 61” mean? Each compiled Java class file contains metadata, including a "major version number," which indicates the version of the Java Development Kit (JDK) used to compile that class file. This version number helps the Java Virtual Machine (JVM) to identify whether it can support running the class file based on the JVM's own version. "Major version 61" refers to the internal version number used by Java to represent Java SE 17. Since you see this version number in your error, it means your current Java runtime environment is older than Java 17 and you need to update to Java 17 or higher to run the class file without issues. How to fix the error by updating your version of Java Updating Java to a newer version will solve compatibility issues and allow you to run applications compiled with newer JDK versions. Click the button below to go to Oracle’s website and install the latest version so you can run your program without this... --- - [Vince Power](https://rollbar.com/?employee=vince-power): - [Sergei Bezborodko](https://rollbar.com/?employee=sergei-bezborodko): ### Error Monitoring in iOS - Published: 2018-08-30 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/error-monitoring-in-ios/ - Categories: Code Tutorials - Tags: mobile In mobile apps, it’s important to monitor errors so you can understand your user’s experience. Your team should know quickly when there are problems with the app itself or your backend services so you can fix the issue before more customers are affected. We’ll show you how to handle errors in iOS apps. We’ll then show you how Rollbar error monitoring can give you better visibility into errors and help you troubleshoot them faster. Native error handling in iOS There are multiple ways to implement exception handling in Objective-C and Swift. We’ll focus on Swift in our examples as its a newer language. You’ll commonly use NSError to create runtime errors and use do-catch statements to handle them: do { throw NSError(domain: "my error description", code: 42, userInfo: ) } catch let error as NSError { // handle the error print("Caught NSError: \(error. localizedDescription), \(error. domain), \(error. code)") } Swift also offers a mechanism to handle uncaught exceptions. This allows you to track the error, display a message to the user, or attempt to recover. See the example below. NSSetUncaughtExceptionHandler { exception in // handle the error print("Uncaught exception", exception) } This lets you easily track the error in logs during development. However, it doesn’t offer an easy way to track errors once the app is installed on your customer’s phone. Error monitoring with Rollbar Rollbar offers an easy way to track exceptions and errors in your apps. It automatically captures errors that occur anywhere in the app, and reports... --- ### Removing Support for TLS 1.0 and 1.1 Protocols - Published: 2024-02-29 - Modified: 2024-03-21 - URL: https://rollbar.com/blog/removing-tls-1-0-and-1-1/ - Categories: product - Tags: security Removing Support for TLS 1. 0 and 1. 1 Protocols On March 31, 2024, Rollbar will remove support for TLS 1. 0 and 1. 1 protocols. Rollbar is discontinuing the support for these older versions of TLS. This means any attempted connections using older browsers that only support TLS 1. 0 and 1. 1 will no longer be allowed. As of March 31, 2024, only TLS 1. 2 and higher are supported by Rollbar. What is changing? Transport Layer Security (TLS) is the protocol at the heart of HTTPS (the successor to SSL). Its primary purpose is to encrypt the communication, thus preventing eavesdropping and data tampering. In the past, several security vulnerabilities in TLS have been found, the most famous being BEAST and POODLE. The solution has been to update newer versions of TLS protocols that fixed those vulnerabilities and implement other minor security improvements. Currently, TLS 1. 2 and TLS 1. 3 are supported by all major browsers and modern software due to these improvements. To maximize compatibility with existing deployments, Rollbar has continued to support all TLS versions starting from 1. 0. But now, the time has come to retire TLS 1. 0 and 1. 1. As of March 31, 2024, the minimum version of TLS supported by Rollbar will be 1. 2. What actions are needed? If you are using TLS 1. 0 or 1. 1, you will need to upgrade to 1. 2 or higher in order to keep using Rollbar. Not sure if you're... --- - [Chris Pfohl](https://rollbar.com/?employee=chris-pfohl): - [Zachary Flower](https://rollbar.com/?employee=zachary-flower): ### Error tracking with Vue.js - Published: 2018-08-09 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/error-tracking-with-vue-js/ - Categories: Code Tutorials, JavaScript - Tags: error-handling, vuejs Vue (pronounced /vjuː/, like view) is a progressive framework for building user interfaces on the web. Vue can power sophisticated single-page applications and is often used in combination with modern tooling and supporting libraries. We’ll show you how to add error handling in a Vue application to capture caught and uncaught errors. This gives you an opportunity to recover and update what’s presented to the user, as well as track the error to prioritize fixes. We’ll also show how to monitor errors in production using Rollbar. How to handle errors in vanilla Vue You can catch exceptions in vanilla JavaScript using basic try, catch and finally statements. You can use these statements to handle caught exceptions in Vue components. In this example, we are simply logging to the console. try { JSON. parse("non-JSON data") } catch(e) { console. log('Exception: ', e) } Vue provides a standard API to add a custom errorHandler. You should configure this on your root Vue instance, typically in a main. js file. However, it only captures errors that occur during component rendering. That means it won’t catch errors that happen later as a result of user behavior, etc. Vue. config. errorHandler = err => { console. log('Exception: ', err) } To handle errors globally across your entire page, you can add a handler to the onerror function on the window. window. onerror = function(message, source, lineno, colno, error) { console. log('Exception: ', error) } While this is great for handling errors during development, when you... --- - [Hemant Jain](https://rollbar.com/?employee=hemant-jain): - [Daniel Steuernol](https://rollbar.com/?employee=daniel-steuernol): ### Top 10 PHP errors from 1,000+ projects (and how to avoid them) - Published: 2018-07-30 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/top-10-php-errors-from-1000-projects-and-how-to-avoid-them/ - Categories: topics - Tags: Top Errors To give back to our community of developers, we looked at our database of thousands of projects and found the top 10 errors in PHP apps. We’re going to show you what causes them and how to prevent them. Avoiding these "gotchas" will make you a better developer. Because data is king, we collected, analyzed, and ranked the top 10 PHP errors. Rollbar collects all the errors for each project and summarizes how many times each one occurred. We do this by grouping errors according to their fingerprints. We group two errors if the second one is just a repeat of the first. This gives users an excellent overview instead of an overwhelming big dump like you’d see in a log file. We focused on the number of projects experiencing an error because we wanted to see the errors that affect the most developers in different companies. If we looked only at the number of times each error occurred, high-volume customers could overwhelm the data set with errors that are not relevant to most readers. The errors below are the ones most likely to affect you and your company. We'll describe each error in more detail starting with the most common. At the end, we'll share best practices to avoid shipping them to production. 1. PHP Parse error: syntax error, unexpected end of file A parse error occurs when code that contains a syntax error is executed. Syntax errors needn’t be large, not complicated, as the following example demonstrates. $test=... --- - [Jon de Andrés Frías](https://rollbar.com/?employee=jon-de-andres-frias): ### Angular vs. React: Which is Better, and When? > Angular is a full-featured framework, while React is a library focused on UI components with the freedom to choose the rest of your tech stack freely. - Published: 2024-02-15 - Modified: 2024-02-22 - URL: https://rollbar.com/blog/angular-vs-react/ - Categories: topics - Tags: angular, react In a nutshell, here's the biggest difference between Angular and React: With Angular, you get a standardized approach to everything. It’s a structured environment that gives you clear direction and all the resources you need within arm's reach, minimizing venturing outside for additional tools or materials. React, on the other hand, resembles a playground where you're handed the basic building blocks and left to your own devices. It champions a more laissez-faire approach, focusing solely on the UI and entrusting you to select your own adventure with the rest of your stack. Choosing one over the other can significantly affect both your coding experience and project success. Let's dive into the specifics so you can make an informed choice. The basics: Angular is a framework, React is a library Angular is a full-fledged MVC (Model-View-Controller) framework for building web apps with out-of-the-box features like form handling, routing, and state management. Angular uses TypeScript, a superset of JavaScript, offering static typing and classical object-oriented programming features. React is fundamentally a library focused on building user interfaces. React apps are typically built using additional libraries for routing, state management, and more, giving you the flexibility to choose your tools. React uses JSX, a syntax extension that allows HTML to be written within JavaScript. Angular provides two-way data binding, React follows a one-way data flow Angular implements two-way data binding, meaning changes in the UI are automatically reflected in the app state, and changes in the app state are immediately reflected in the... --- - [Dan St. Clair](https://rollbar.com/?employee=dan-st-clair): ### Error monitoring in Golang - Published: 2018-07-03 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/error-monitoring-in-golang/ - Categories: Code Tutorials - Tags: golang Rollbar is proud to announce its error monitoring SDK for the Go language (aka Golang). It’s an open source programming language originally created by Google and is growing in popularity. It’s a low-level language like C, but also offers garbage collection, an easy-to-use package system, and other features. If you’re used to languages like Java or Javascript, then Go’s way of handling errors will be new to you. We will give a brief introduction on how error handling works in Go, then cover how you can monitor errors in production apps. Using the error type Go uses an error type to indicate an abnormal state. For example, the os. Open function returns an error value when it fails to open a file. Many people think this is more clear than throwing an error or returning a nil value. The error type is an interface that you can implement to create your own errors. The error interface requires an Error method which returns a string. This allows you to print errors out in the console or in a log message. Specific error implementations might have additional methods. type error interface { Error string } Go also allows you to implement functions with multiple return values. This is commonly used to provide one value upon success, and a second value upon an error. Let’s dive into an example showing how we can handle multiple return values. Below, the calculateSqrt function will return an error when you pass a negative number. That’s because... --- ### New Source Map Error Workflow - Published: 2024-01-29 - Modified: 2024-01-29 - URL: https://rollbar.com/blog/new-source-map-error-workflow/ - Categories: product We're excited to unveil the latest enhancements to Rollbar’s Source Map handling. This new feature, directly influenced by user feedback, simplifies your debugging experience, making Source Mapping more intuitive and user-friendly. Source Map issues are a frequent concern, ranking among the top five monthly support requests. We recognize the challenges you face when dealing with errors that don't make sense due to Source Mapping configuration issues. So, we identified key areas where users struggled with Source Maps, such as understanding automated downloads, lack of feedback on processing failures, and the overwhelming noise on the Sourcemap screen. Our development efforts were tailored to address these specific concerns. First, we want to make error messages more actionable, so we moved the errors to a sidebar associated with your item. By clicking the new “source map error” button, We will provide a detailed error message and documentation allowing source maps to download automatically without issue going forward. You can manually upload the missing source map to deobfuscate the stack frame the next time an occurrence occurs (note this will create a new item). If your error handler contains multiple source maps, you must manually upload each source map to deobfuscate all stack frames for future occurrences. Additionally, we have broken down our documentation and directly linked it to specific issues and error messages, ensuring that you spend less time searching for solutions and more time resolving them. As always, your input is invaluable in shaping our platform. We encourage you to explore these... --- - [Adil Aijaz, Co-Founder & CEO of Split](https://rollbar.com/?employee=adil-aijaz-co-founder-ceo-of-split): - [Taron Foxworth](https://rollbar.com/?employee=taron-foxworth): ### Auto-suggest item owner based on Git Blame data - Published: 2024-01-29 - Modified: 2024-03-12 - URL: https://rollbar.com/blog/auto-suggest-item-owner-based-on-git-blame-data/ - Categories: product Overview For projects integrated with GitHub, Rollbar now has the ability to show the user identified by Git Blame in the Assign Owner field. This can help identify the last user to have dealt with the code in question so they can be assigned as the initial owner in Rollbar. Benefits of assigning items to owners Assigning items to specific owners helps teams to manage the list of Rollbar items by making it clear who has ownership for each issue, meaning items are more likely to be investigated and resolved. Displaying the available Git Blame data helps to more easily identify the user who may have last been involved in working in the code, which is usually a good starting point to begin investigating. Suggested owner data When opening the Owner field on the item list or item detail page, if an associated Rollbar user for the Git Blame owner can be identified then they will be suggested as the potential owner for the item. The owner identified by git-blame is the same user shown inline in the stack trace. Once an owner has been assigned, the auto-suggestion for the item owner will no longer be displayed. Enabling owner auto-suggestion Pre-requisites The auto-suggest feature is only available for Advanced and Enterprise customers. At a project level, if the project has GitHub integration configured, there is a toggle to enable the auto-suggest feature. In order to be displayed in the suggested owner field, the GitHub user identified by Git Blame must... --- ### Errors on the world’s top 100 websites and how to avoid them - Published: 2018-06-13 - Modified: 2023-04-27 - URL: https://rollbar.com/blog/errors-on-the-worlds-top-100-websites-and-how-to-avoid-them/ - Categories: topics - Tags: Top Errors When you think of the top 100 sites in the world, you think of high-traffic domains and pages coded to perfection. In fact, even the most popular sites in the world have errors hidden behind the scenes that are still visible in your browser’s developer tools. These can affect your experience as a user directly, create inaccurate tracking data and security vulnerabilities, and even lose the company revenue. We found that most of the top 100 sites had several errors which could be easily monitored and prevented by their IT team. If errors happen on these popular sites, it can happen on your company’s website too. We’ll show you the most common errors and how to avoid them. {: . imgcaption} Overview of Errors found on the Top 100 Alexa Sites How We Found The Errors We used Alexa's ranking to identify the top 100 websites based on number of visitors. We visited each of these websites using the popular Google Chrome browser and disabled all extensions to capture the most native experience. We then recorded which errors displayed in the developer tools console. You can see these errors yourself by opening your browser’s developer tools feature. In Chrome it’s in the menu under More tools -> Developer tools. Here is what it looks like at Huffington Post: {: . imgcaption} Chrome Developer Tools showing a list of HuffingtonPost errors That’s a mess to read! We’ll make it easier to understand by grouping these errors into common themes. Then, we’ll... --- - [István Erdő](https://rollbar.com/?employee=istvan-erdo): - [Michal Zalecki](https://rollbar.com/?employee=michal-zalecki): ### How to Fix “Function Object is Not Subscriptable” in Python > Simply put, you're trying to treat a function like it's a list, but you can't do that because they are different things. Try this other way to get what you want. - Published: 2024-01-24 - Modified: 2024-01-24 - URL: https://rollbar.com/blog/how-to-fix-function-object-is-not-subscriptable-python/ - Categories: Code Tutorials, Python - Tags: Python “Subscriptable” is just a fancy way of saying "something you can use square brackets on to get parts from it. ” For example, my_list and my_dict accesses the element at 0 and key, respectively. In Python you can only use square brackets to access elements of a list, array, or dictionary. If you try to do the same thing with a function, you get the “function object is not subscriptable” error. Simply put, you're trying to treat a function like it's a list, but you can't do that because they are different things. “Function Object is Not Subscriptable” Example Functions are objects. When you define a function, you create an object. For example: def my_function: return You mistakenly treat a function like it's subscriptable when you use square brackets on it. first_element = my_function Traceback (most recent call last): File "example. py", line X, in result = my_function TypeError: 'function' object is not subscriptable That raises the error because you’re trying to access the first element of a function, which isn’t possible. How to Fix “Function Object is Not Subscriptable” Continuing with the example above, if you want to return the first element in the function’s return value, you would need to call my_function first and then access the first element of its return value, like this: first_element = my_function 1 See the difference? When you try my_function, you’re using square brackets on the function itself, which doesn't make sense because a function isn't a list or array; it doesn't... --- - [Mehak Garg](https://rollbar.com/?employee=mehak-garg): ### Data, Privacy, and Compliance - How We Prepared for GDPR - Published: 2018-05-21 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/data-privacy-and-compliance-how-we-prepared-for-gdpr/ - Categories: product - Tags: security Over the past couple of months it has been very difficult not to overhear conversations about GDPR and its implications on how we build and maintain software. Some were particularly memorable. "No, I can't fire you right now, not when we're a month away from GDPR! " - Random person overheard yelling on the phone in San Francisco At Rollbar, we've been working hard to be ready. This is a story about how we prepared for GDPR. What is GDPR? GDPR{:target="_blank"} is a new, EU-wide regulation that replaces the 1995 EU Data Protection directive. It strengthens the privacy and control EU residents have over their personal data, and is broad in reach because any organizations that process data on EU residents must be compliant, even if they aren't based in the EU. Failure to comply may result in severe penalties of up to 4% of an offending organization's global revenue. GDPR challenges To us, GDPR changes everything. We've gone from a world where data is always an asset, to one where data is both an asset and a liability. This fundamentally changes how we think about collecting, keeping, and deleting data, and where the value for our customers is in each of those things. We were faced with a few challenges in this project, including: Hard deadlines We practice agile software development. What that means to us is while we have a rough idea of when we'd like to release a feature, the exact release date depends on the progress... --- - [Helaine de Tomasi](https://rollbar.com/?employee=helaine-de-tomasi): ### Making Project, Item and Occurrence IDs accessible within Service Links - Published: 2024-01-23 - Modified: 2024-01-23 - URL: https://rollbar.com/blog/making-project-item-and-occurrence-ids-accessible-within-service-links/ - Categories: Uncategorized - Tags: Service Tags Create detailed workflows and integrations with third-party systems using IDs Overview In the latest release of Rollbar, we have updated our Service Links to include the project, item and occurrence IDs related to the item and occurrence being viewed. Rollbar Service Links allow users to launch specific actions using the data available within the current occurrence at the click of a button. For example - you could launch a Datadog query with a specific search value from the item and narrow down the time period based on the occurrence. In order to expand the usefulness and flexibility of Service Links, we have added the ability to access the Project ID, Item ID, Item Counter and Occurrence ID within each Service Link. When combined with the public Rollbar APIs, these fields allow the creation of sophisticated, detailed workflows that can be launched at the click of a button. Available fields The following fields are now available to add to Service Links: _{{item. counterid}} - the item counter / number (as seen at the top of the item page and in the item url) {{item. id}} - the item ID - as fed into the _Get an item (by ID) and Update an Item_ API calls _{{item. occurrenceid}} - the occurrence ID of the specific occurrence being viewed _{{item. projectid}} - the project ID for the item in question Usage Examples These fields can be included in the endpoint url defined in the Service Link, which when launched can then be used... --- ### Monitoring Errors in Android Apps - Published: 2018-05-09 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/monitoring-errors-in-android-apps/ - Categories: Code Tutorials, Java - Tags: java When developing mobile apps it’s important to monitor errors so that you can understand your user’s experience. You need deeper insight than just a crash report because errors could cause a degraded user experience or a drop in key behavioral metrics. Your team needs to know quickly when there are production problems either with the app itself or with your backend services so you can fix the issue before more customers are impacted. Rollbar’s Android SDK lets you track and analyze errors that happen in your Android native applications, and even trace problems to backend services and third party APIs. It provides you with a live error feed from your application, including complete stack traces and contextual data to debug errors quickly. We also track the environment the error is coming from (prod or staging), the server that generated the error, and even the user’s session data. You can then quickly assign ownership of errors to your team and track when they are fixed. Learn more about Rollbar’s product features for Android. Below, you can see that we've created an example app that triggers an exception when the user clicks on a button. The error message is tracked in Rollbar, including a stack trace where you can see the line of code that caused the error. Rollbar captures errors that occur anywhere in the app. You can follow along with our example using the source code on GitHub. Adding Rollbar in your code Visit https://rollbar. com and sign up for... --- ### Usage Visualizations > We are excited to unveil the latest enhancement to Rollbar's platform - the integration of graphical visualizations in the usage page. Building on our new usage page, this feature brings a dynamic and intuitive way to monitor and manage your occurrences. - Published: 2024-01-23 - Modified: 2024-01-23 - URL: https://rollbar.com/blog/usage-visualizations/ - Categories: product - Tags: Usage Notifications Introducing Rollbar’s Usage Visualizations New Account and Project Graphs We are excited to unveil the latest enhancement to Rollbar's platform - the integration of graphical visualizations in the usage page. Building on our new usage page, this feature brings a dynamic and intuitive way to monitor and manage your occurrences. Visualizing Your Occurrences and Budgets In response to your feedback, we've made some enhancements to the usage page. First, we’ve updated the default view to a daily perspective, allowing for a more granular understanding of occurrences. Alongside this, we’ve introduced a new graphical visualization of your occurrences. Users can now see a clear, color-coded graph showing their account's occurrences against a suggested budget for each time frame. Integrating daily insights and budget visualization offers a more transparent, practical view of your usage and where your application might have used more occurrences than expected. Project-Level Insights The projects tab now shows usage share per project for up to five projects, which users can select from their account. This flexibility allows for a tailored comparison of how different projects consume occurrences throughout the contract period. Whether you’re monitoring the top five projects by usage or a custom selection, this feature provides a straightforward way to compare and understand project-level data. If you need a deep dive into individual projects, clicking on a project title in the projects tab now brings up a slide-over with a new addition: a detailed graph showing the project's usage over the selected time frame. This graph supplements... --- - [Lotanna Nwose](https://rollbar.com/?employee=lotanna-nwose): ### Top 10 errors from 1000+ Ruby on Rails projects (and how to avoid them) - Published: 2018-04-18 - Modified: 2022-11-08 - URL: https://rollbar.com/blog/top-10-errors-from-1000-ruby-on-rails-projects-and-how-to-avoid-them/ - Categories: topics - Tags: Top Errors To give back to our community of developers, we looked at our database of thousands of projects and found the top 10 errors in Ruby on Rails projects. We’re going to show you what causes them and how to prevent them from happening. If you avoid these "gotchas," it'll make you a better developer. Because data is king, we collected, analyzed, and ranked the top 10 Ruby errors from Ruby on Rails applications. Rollbar collects all the errors for each project and summarizes how many times each one occurred. We do this by grouping errors according to fingerprinting. Basically, we group two errors if the second one is just a repeat of the first. This gives users a nice overview instead of an overwhelmingly big dump like you’d see in a log file. We focused on the errors most likely to affect you and your users. To do this, we ranked errors by the number of projects experiencing them across different companies. We intentionally looked at the number of projects so that high-volume customers wouldn't overwhelm the data set with errors that are not relevant to most readers. Here are the top 10 Rails errors: You’ve probably noticed some familiar faces in there already. Let’s dig in and take a look at the errors in a bit more detail to see what might cause them in your production application. We'll provide example solutions based on Rails 5, but if you’re still using Rails 4 they should point you in the... --- - [Michael Davis](https://rollbar.com/?employee=michael-davis): ### How to Fix IndexError: List Index Out of Range in Python > The IndexError in Python occurs when an item from a list is attempted to be accessed that is outside the index range of the list. - Published: 2024-01-18 - Modified: 2025-03-17 - URL: https://rollbar.com/blog/python-indexerror/ - Categories: Code Tutorials, Python - Tags: Python The IndexError: list index out of range error occurs in Python when an item from a list is attempted to be accessed that is outside the index range of the list. The range of a list in Python is , where n is the number of elements in the list. Python IndexError Example Here’s an example of a Python IndexError: list index out of range thrown when trying to access an out of range list item: test_list = print(test_list) In the above example, since the list test_list contains 4 elements, its last index is 3. Trying to access an element an index 4 throws an IndexError: list index out of range: Traceback (most recent call last): File "test. py", line 2, in print(test_list) IndexError: list index out of range How to Fix IndexError in Python The Python IndexError: list index out of range can be fixed by making sure any elements accessed in a list are within the index range of the list. This can be done by using the range function along with the len function. The range function returns a sequence of numbers starting from 0 ending at the integer passed as a parameter. The len function returns the length of the parameter passed. Using these two methods together allows for safe iteration over the list up to its final element, thus ensuring that you stay within the valid index range and preventing the IndexError. Here's how to use this approach to fix the error in the earlier... --- ### 5 Surprising and Sneaky Ways Errors Impact Your Business - Published: 2018-04-16 - Modified: 2022-12-07 - URL: https://rollbar.com/blog/5-surprising-and-sneaky-ways-errors-impact-your-business/ - Categories: topics - Tags: error-monitoring Every app is imperfect and generates errors, but do you know how errors affect your users and business? When you look at logs for a large application, you might see thousands of errors per day and not know where to start. Even worse are errors that are not tracked by your application. They could be buttons that stop working, input that isn’t saved, or any number of other issues. Without proper error tracking, you are flying blind to these user experience problems. Unfortunately, developers who are deep in the code are not expected to understand how these errors impact users, and ultimately, their company’s finances. Even if they know of an error that should be fixed, it can be difficult to articulate why they should be fixed instead of developing a new feature. Here are five ways developers can advocate to management about the importance of fixing errors. User Experience Customers don't report the vast majority of errors they encounter in your product or website. That means you could miss a large percentage of problems if you aren’t tracking and addressing them proactively. If a customer experiences a critical error during a trial period or onboarding you might lose that customer before they even get started. Established customers may be more understanding, but repeated errors over time can lead to death from a thousand cuts. Knowing who was affected by a problem and proactively reaching out can turn a frustrated user into a devoted one. Shortcut co-founder and CTO Andrew... --- ### JavaScript RangeError: Maximum Call Stack Size Exceeded > JavaScript RangeError: Maximum Call Stack Exceeded is thrown when there are too many function calls, or if a function is missing a base case. - Published: 2024-01-18 - Modified: 2024-01-18 - URL: https://rollbar.com/blog/javascript-rangeerror-maximum-call-stack-size-exceeded/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript The JavaScript RangeError: Maximum call stack size exceeded happens when a function keeps calling itself without any condition to stop, and eventually, the program runs out of space to keep track of these repeated calls. It's a sign that your program needs a way to stop the function from calling itself endlessly. This error typically occurs due to: Too many function calls. Issues in handling recursion, e. g. missing base case in a recursive function to stop calling itself infinitely. Out of range operations. RangeError: Maximum Call Stack Size Exceeded Example Here’s an example of a JavaScript RangeError: Maximum call stack size exceeded thrown when using a recursive function that does not have a base case: function myFunc { myFunc; } myFunc; Since the recursive function myFunc does not have a terminating condition (base case), calling it creates an infinite loop as the function keeps calling itself over and over again until the RangeError: Maximum call stack size exceeded error occurs: Uncaught RangeError: Maximum call stack size exceeded at myFunc (test. js:2:2) at myFunc (test. js:2:2) at myFunc (test. js:2:2) at myFunc (test. js:2:2) at myFunc (test. js:2:2) at myFunc (test. js:2:2) at myFunc (test. js:2:2) at myFunc (test. js:2:2) at myFunc (test. js:2:2) at myFunc (test. js:2:2) How to Avoid RangeError: Maximum Call Stack Size Exceeded If this error is encountered when calling recursive functions, make sure that the function has a defined base case to terminate the recursive calls. In case this error occurs due to an excessive... --- ### Adam's story with Rollbar > Rollbar has been great at letting our development team quickly identify issues, communicate them, and monitor their resolution. The very readable tracebacks and in-scope variable values across various environments are extremely useful across our team to solve issues quickly and transparently. - Published: 2024-01-17 - Modified: 2024-04-15 - URL: https://rollbar.com/blog/adams-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Adam Saunders Co-Founder at PiinPoint Adam has now been using Rollbar for 100 months! 1. My Role PiinPoint is a Location Intelligence platform for businesses that manage portfolios of real estate locations. Among other industries, we help retailers find the top opportunities to expand their network of locations, as well as help them plan market reconfiguration strategies to optimize for network performance. This is conducted through a SaaS platform and custom Service offerings that get rolled into the platform. 2. My Passion in the Role I'm passionate about providing useful spatial visualization tools and valuable analysis results to our customers. This often requires involvement between Data Science, and the Development team across Platform, DevOps, and Database skillsets to bring new results to the customer. In this process, Rollbar is extremely useful throughout initial integration, QA activities, and monitoring after go-live to make sure the customer experience of the solution is top-tier. 3. The Rollbar Experience Rollbar has been great at letting our development team quickly identify issues, communicate them, and monitor their resolution. The very readable tracebacks and in-scope variable values across various environments are extremely useful across our team to solve issues quickly and transparently. The integration with Slack is very useful in keeping the visibility of errors high and actionable to the appropriate teams. --- ### New Relic vs Scout: Which APM is right for you? - Published: 2018-04-05 - Modified: 2022-11-30 - URL: https://rollbar.com/blog/new-relic-vs-scout/ - Categories: product - Tags: APM This is a guest post by Derek Haynes from Scout, an APM that integrates with Rollbar. When New Relic launched ten years ago, web applications had a tendency to fail hard and in more obvious ways: Today, it's easier to build resilient apps, but they fail in more complex, unique, and subtle ways. These issues are time-consuming to track down. While several niche New Relic alternatives have appeared, they've focused on a lighter feature set versus solving these increasingly hard performance problems. What is new relic used for? New Relic is a Software as a Service offering that focuses on performance and availability monitoring. It uses a standardized Apdex (application performance index) score to set and rate application performance across the environment in a unified manner. What does new relic do? New Relic is observability software that teams use it to monitor the performance of their applications and infrastructure. New relic tracing New Relic APM provides trace visualizations designed to help you quickly understand why a specific request is slow, where an error originated, and where you can optimize your code to improve the experience for your customers. Unlike existing "New Relic Lite" alternatives, Scout approaches performance monitoring much like Rollbar's best-of-breed error monitoring. Scout is designed to drastically reducing the investigation time for these complex performance issues. Let's investigate a modern-day performance issue with Scout and compare the experience to New Relic. A sudden increase in response time You hop into Scout and see this chart: There's a clear... --- - [Ivan Gomez](https://rollbar.com/?employee=ivan-gomez): - [Julie Jones](https://rollbar.com/?employee=julie-jones): ### How to Fix “Client network socket disconnected…” in Node.js > Learn 6 things you can do to get the connection working. As a last resort, you can also set rejectUnauthorized to false, which ignores SSL validation errors. - Published: 2024-01-15 - Modified: 2024-01-15 - URL: https://rollbar.com/blog/how-to-fix-client-network-socket-disconnected-nodejs/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript, Node.js The error “Client network socket disconnected before secure TLS connection was established” indicates something went wrong when setting up a secure connection with the server you’re communicating with. This can happen because of an unstable internet connection, wrong security settings on the server, or things like firewalls getting in the way. Diagram of what happens to cause 'Client network socket disconnected... ' Although this blog post will use Node. js in examples to discuss this error, the underlying cause is related to the network layer rather than a language-specific issue. You can get this error in any programming language that supports network operations and TLS (Transport Layer Security) for secure connections. What causes “Client network socket disconnected... ”? Here are some of the typical causes: Timeout Issues: The client took too long to establish a connection with the server. This could be due to network latency, server overload, or other network-related issues. Proxy or VPN Interference: If the client is behind a proxy or using a VPN, these can sometimes interfere with or disrupt the TLS handshake process. Firewall or Security Software: Firewalls or security software on the client or server side may block the connection or interrupt the TLS handshake. SSL Certificate Problems: Issues with the server's SSL certificate, such as it being expired, self-signed, or not properly configured, can prevent a successful TLS connection. Incompatible TLS Versions: If the Node. js client and the server are using incompatible TLS versions or cipher suites, the handshake will fail. Server... --- ### Error monitoring in ASP.NET MVC - Published: 2018-03-07 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/error-monitoring-in-asp-net-mvc/ - Categories: .NET, Code Tutorials - Tags: dotnet ASP. NET MVC is a modern web development framework that combines the features of MVC (Model-View-Controller) architecture for better separation of concerns and the best parts of the ASP. NET platform. We’ll show you an example of how to catch errors and exceptions in ASP. NET MVC using a global action filter. We’ll also show you how to track them in Rollbar’s error monitoring service. This will give you real time visibility into your errors in production. It also captures person data and other context from your app so you can solve errors faster. Above, you can see that we've created an example app that triggers an an exception when the user clicks on a button. The error message is tracked in Rollbar, including a stack trace where you can see the line of code that caused the error. Create a global action filter To track all of our exceptions, we have multiple approaches in . NET. Using a global action filter is the easiest way to catch all the exceptions. It receives uncaught exceptions for your whole application, not just an individual controller. We’ll show you how to override it to create your own global action filter with exception tracking. Here are some simple steps to create global action filter in your application. Open up your own ASP. NET MVC project or use our open source example on GitHub at Rollbar-Dotnet-Example. You can use this filter to add any error monitoring solution, but we will show an example of... --- - [Derick Chung](https://rollbar.com/?employee=derick-chung): ### How to Fix "Could not find or load main class" in Java > The Java “Could not find or load main class” error is thrown when the JVM fails to find or load the main class while executing a program. - Published: 2024-01-13 - Modified: 2025-03-17 - URL: https://rollbar.com/blog/java-could-not-find-or-load-main-class/ - Categories: Code Tutorials, Java - Tags: java The Java error “Could not find or load main class” is thrown when the JVM fails to find or load the main class while executing a program. This is often due to simple mistakes like typing the wrong class name or having the class file in the wrong place. It usually occurs when executing a Java program from the command line. Install the Rollbar Java SDK to identify and fix these errors What Causes "Error: Could not find or load main class" It typically arises from issues like an incorrect class name, a mismatch in the directory and package structure, or a misconfigured classpath. Here's a full list of things to check: The class being declared in the incorrect package. The file path of the class not matching the fully qualified name. Incorrectly specified classpath of the application. Missing dependencies from the classpath. Incorrect directory path on the classpath. A typo in the class name. "Error: Could not find or load main class" Example Here’s an example of the Java "Could not find or load main class" error thrown when an incorrect class name is specified during execution: Say you have an example Java class MyClass. java: public class MyClass { public static void main(String args) { System. out. println("Hello World"); } } You then compile the above class using the command line: $ javac MyClass. java The compiler generates an executable . class file for MyClass: $ ls MyClass. class MyClass. java Now if the java command is used... --- ### Send Rollbar Error Alerts to Cisco Spark - Published: 2018-03-01 - Modified: 2025-04-22 - URL: https://rollbar.com/blog/send-rollbar-error-alerts-to-cisco-spark/ - Categories: product - Tags: integrations Cisco Spark is a enterprise collaboration platform from Cisco that includes messaging, video conferencing, desk phones, and digital whiteboards to mention a few. If your organization uses Cisco Spark, using Rollbar with it has just got easier. Depending on your setup, you can now receive Rollbar alerts not just in your messaging apps but also on that giant screen in the meeting room. As a Cisco Spark customer you've invested a lot in enabling enterprise collaboration. With this new Rollbar integration, you can further extend the value of the platform for your engineering teams. You can now get notified directly in Cisco Spark when certain situations occur, such as when a new error is detected by Rollbar, or when an error occurs at a very high volume within a specified time period. If you've enabled deploy tracking in Rollbar, you can also notify Cisco Spark of deploys. Rollbar alerts in Cisco Spark: As always, you can customize what alert notifications Rollbar should send. You can also configure which space in Cisco Spark the alerts should go to. Cisco Spark integration settings in Rollbar: For more instructions on how to enable this integration for your account, check out our Docs page{:target="_blank"}. Please feel free to reach out if you have any questions! If you haven’t already, sign up for a 14-day free trial of Rollbar and reduce production issue resolution times. --- - [Alex Moraca](https://rollbar.com/?employee=alex-moraca): ### Saiqul's story with Rollbar > Since the early days of Hungry Hub, when we had just dozens of active monthly users, Rollbar has been a crucial tool in our development arsenal. As our user base expanded to over a million, Rollbar's real-time error tracking and comprehensive insights have been instrumental in ensuring the stability and reliability of our applications. - Published: 2024-01-09 - Modified: 2024-04-15 - URL: https://rollbar.com/blog/saiquls-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Saiqul Haq CTO (Chief Technology Officer) Saiqul has now been using Rollbar for 100 months! 1. My Role I am the CTO of Hungry Hub, Thailand's No. 1 dining app for special occasions. Our platform elevates the dining experience by connecting culinary enthusiasts with a curated selection of restaurants for those special moments. At Hungry Hub, we are dedicated to continuous innovation and improvement of our app, ensuring it remains the top choice for anyone looking to make their dining occasions extraordinary in Thailand. Our current projects revolve around enhancing user experience, incorporating advanced features for restaurant partners, and expanding our reach to encompass a more comprehensive array of unique dining experiences. . 2. My Passion in the Role My passion lies in building and leading a team of talented software developers, creating an environment where innovation thrives. I am deeply invested in developing systems that meet and exceed user expectations, ensuring high performance and reliability. The process of transforming complex technical challenges into seamless solutions energizes me. Moreover, I find it immensely rewarding to guide my team toward achieving their career goals while fostering a collaborative and efficient work culture. 3. The Rollbar Experience Since the early days of Hungry Hub, when we had just dozens of active monthly users, Rollbar has been a crucial tool in our development arsenal. As our user base expanded to over a million, Rollbar's real-time error tracking and comprehensive insights have been instrumental in ensuring the stability and reliability of our applications. Its... --- - [Jesse Gibbs](https://rollbar.com/?employee=jesse-gibbs): ### Announcing Our New .NET Error Monitoring SDK - Published: 2018-02-12 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/announcing-our-new-net-error-monitoring-sdk/ - Categories: product - Tags: dotnet Rollbar is happy to announce our official . NET error monitoring SDK. This new . NET SDK is more rreliable, supports all of the popular . NET platforms (NET Standard, . NET Framework, . NET Core, ASP. NET MVC, UWP, Mono, Xamarin), easy to configure, multithreading friendly, and more. Rollbar helps you monitor errors in production applications. It provides you with a live error feed from your applications, including complete stack traces and contextual data to debug errors quickly. It also lets you easily understand your user experience by tracking who is affected by each error. Check out our features page to learn more about how it can help you. {: . imgcaption} . NET error monitoring, as seen in Rollbar Improvements Multi-target support including . NET Standard 2. 0 and up, . NET Framework (or Full Framework) 4. 5 and up, and . NET Core 2. 0 and up. It also supports UWP, Mono, and Xamarin. Native asynchronous (“fire-and-forget”) implementation. Due to its async nature the SDK has very little impact on its host at runtime. A blocking (synchronous) implementation of the same methods is also available. Rate limiting and buffering of all messages. Automatic retries in case of network failure. Person information is now a part of a notifier configuration object, including field scrubbing for privacy. Improved interface by separately defining ILogger and IRollbar. ILogger also now supports chaining calls. Multiple instances of the notifier can be separately and differently configured, including different access tokens. Easier configuration including... --- - [Brian Rue](https://rollbar.com/?employee=brian-rue): ### Kalle's story with Rollbar > My loyalty to Rollbar is rooted in its exceptional capabilities in real-time error monitoring and debugging, which are vital for our operations at Oneflow. Its ability to provide instant notifications, detailed error reports, and track bugs across our various projects is crucial for maintaining our high service quality. Rollbar fits perfectly with our aim to offer reliable and efficient service. Its user-friendly interface and comprehensive tracking capabilities make it an indispensable tool in our development arsenal. - Published: 2024-01-04 - Modified: 2024-04-15 - URL: https://rollbar.com/blog/kalles-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Kalle Moodh CTO (Chief Technology Officer) Kalle has now been using Rollbar for 100 months! 1. My Role I am the CTO and Co-Founder at Oneflow, a digital contract management platform that automates the entire contract process from start to finish. Our platform is designed to transform clunky, static contracts into dynamic, truly digital contracts, making processes faster and decisions smarter, leading to quicker deals. My current focus involves integrating external systems to automate customer workflows, enhancing our system's infrastructure for greater reliability and scalability, and maintaining top-tier security and stability. We strive to overcome the friction and complexity in traditional contract processes, ensuring a smooth, secure, and delightful experience for our users. 2. My Passion in the Role My passion in this role at Oneflow comes from the significant impact we have on simplifying our users' work lives. Our digital contract management system not only eliminates hours of manual, tedious tasks but also brings a level of ease and efficiency that was previously unattainable with paper-based methods. The trust our users place in us by entrusting their sensitive data is something I value deeply. It's incredibly fulfilling to offer a secure, reliable solution that not only saves time and money but also enhances creative freedom and overall satisfaction in the workplace. At Oneflow, we're not just about handling contracts; we're about enhancing life and work quality. 3. The Rollbar Experience My loyalty to Rollbar is rooted in it's exceptional capabilities in real-time error monitoring and debugging, which are vital... --- ### Rollbar Alternatives: Compare Before You Commit > Thinking of rolling past Rollbar? Dive into our comparison of 6 error monitoring tools and see why so many developers choose Rollbar. - Published: 2023-12-17 - Modified: 2024-01-23 - URL: https://rollbar.com/blog/rollbar-alternatives/ - Categories: topics Rollbar is acclaimed as the top error monitoring tool - with 4. 5 out of 5 stars on both Capterra and G2 - amongst a competitive field. That said, we recognize there are alternatives some people consider when also looking at us. Here is our perspective on what these other tools are for, and when to choose Rollbar instead. Rollbar (hey, that's us) Rollbar stands out in the error monitoring tool scene for a few key reasons. First off, it's super quick to know when something goes wrong in your app. You get instant alerts about errors so you can jump right on fixing them. This means less downtime and a better experience for your users. Rollbar also gives you detailed info about each error, like where exactly in your code it happened and what the data looked like at that moment. This makes it way easier to figure out what went wrong. And when it comes to sorting out the mess of errors you might get in a big app, Rollbar's got your back. It groups similar errors together, so you can see what needs your attention most. This feature is a lifesaver when you're dealing with lots of bugs at once. Plus, it works with lots of different programming languages and hooks up smoothly with other tools you might be using, like Slack, Jira, or GitHub. The reports and analytics Rollbar provides are super helpful for understanding what's going on over time. Another big plus for Rollbar is... --- ### Team Assignment > We’re excited to announce a new feature for Advanced and Enterprise customers - the ability to set a team as the owner of an item. - Published: 2023-12-11 - Modified: 2023-12-11 - URL: https://rollbar.com/blog/team-assignment/ - Categories: product - Tags: team Team Assignment Assign items to teams as well as individual owners! We’re excited to announce a new feature for Advanced and Enterprise customers - the ability to set a team as the owner of an item. Previously, Rollbar has only allowed users to assign a specific team member as the owner of an item. However, recognizing the need for flexibility in ownership, especially in collaborative environments, we now allow a team to be set as the owner of an item. This update is particularly beneficial when a team collectively oversees an item, but the exact team member responsible for handling the error has yet to be determined. Assigning the item to a team allows for a shared sense of responsibility and clarifies who's in charge, making the management of items more straightforward. This feature is accessible to any team granted access to a project, as outlined in the Project Settings / Members screen. How to use Team Assignment Teams can be assigned as an item owner on the current item assignment dropdown. The relevant teams are displayed on the second tab. If you need to filter your items by teams on the item list page, the Owners filter also includes the ability to filter by specific teams: Unlock the power of team collaboration now! Our new team assignment feature is available for Advanced and Enterprise users. Don’t miss out on this game-changing feature. Upgrade from Free and Essentials today to elevate and streamline your team’s workflow! --- - [Cory Virok](https://rollbar.com/?employee=cory-virok): ### New Integration - Auto-create Shortcut stories with error data from Rollbar - Published: 2018-02-09 - Modified: 2022-12-07 - URL: https://rollbar.com/blog/new-integration-auto-create-shortcut-stories-with-error-data-from-rollbar/ - Categories: product - Tags: triage At Rollbar, we use Shortcut to manage our software projects. One of the many ways we use it is for tracking issues in product releases. We'd have an epic in Shortcut for each release, and create stories for bugs associated with the release that we need to fix. This is especially useful when we're working on service packs. If you're not familiar, Shortcut is a project and product management software designed for agile software teams. With this integration, you can now automatically: Create a story in Shortcut for a Rollbar error, based on rules you set Include in the story the stack trace and a link to the error details data in Rollbar Mark the story resolved in Shortcut when it's resolved in Rollbar Change the status of a Shortcut story when an error is re-activated Shortcut integration settings in Rollbar: Shortcut story from a Rollbar error: To get started, check out this integration guide from Shortcut. Let us know if you have any questions, or tell us what you think! If you haven’t already, sign up for a 14-day free trial of Rollbar and stop flying blind in production. --- - [Jason Skowronski](https://rollbar.com/?employee=jason-skowronski): ### Marc's story with Rollbar > What has kept us with Rollbar is that it’s always there when we really need it, and stays out of the way quietly ticking along when we don’t. It’s not needy, or trying to increase ‘engagement’ in any way, we can just jump in, do what we need to do as quickly as we can, and then we’re out and get back to business as usual. - Published: 2023-12-08 - Modified: 2024-04-15 - URL: https://rollbar.com/blog/marcs-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Marc Roberts CTO (Chief Technology Officer) Mark has now been using Rollbar for 101 months! 1. My Role I work at Hiyacar. We provide car sharing technology for peer to peer car sharing and for businesses to efficiently manage their pool cars. Our biggest project at the moment is to build out our recently launched pool car offering to support more businesses use cases. 2. My Passion in the Role I’m most passionate about ensuring our platform remains scalable, not just from a technology point of view but also ensuring the team growth and processes maintain an environment where we can build quickly and produce easily maintainable code with the least tech debt. 3. The Rollbar Experience What has kept us with Rollbar is that it’s always there when we really need it, and stays out of the way quietly ticking along when we don’t. It’s not needy, or trying to increase ‘engagement’ in any way, we can just jump in, do what we need to do as quickly as we can, and then we’re out and get back to business as usual. --- ### Introducing the Account Dashboard - Published: 2018-02-07 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/introducing-the-account-dashboard/ - Categories: product - Tags: monitor {: . highlightbox} Update: As of Aug 1st, 2018 we've made Account Dashboard available to all users, including those on Essentials plans. The Account Dashboard for users in Advanced plans also includes information on deploys and when they took place. As part of this general release, we've removed the Labs label from the Account Dashboard feature. We are excited to release our new Account Dashboard! The Account Dashboard gives your engineering team insight into errors across multiple Rollbar projects. This insight provides an overview of how each application and service is performing, so you can quickly identify and drill down into problem areas and error trends. Your browser does not support the video tag. In today’s microservices world, applications consist of multiple services that interact together to deliver the full user experience. There is the client side of the application that the user typically sees, which may be a webpage or mobile app. Behind that, there may be an application server and multiple API services, often owned by separate development teams. This makes the job of monitoring more complex because you need to monitor all the services at once. Errors or a loss of availability in any one service can result in cascading failures to downstream services, and ultimately the user. Check out what Jason Kozemczak, Tech Lead at Instacart had to say about the Account Dashboard. The Account Dashboard makes it even easier than before to understand the overall health of the Instacart product as well as individual teams/systems... --- - [Craig Guillot](https://rollbar.com/?employee=craig-guillot): ### New Integration: Bird Eats Bug > We are introducing a new Snooze option for items. When Snoozing an item, the user will define how long an item will stop sending notifications for - once that time period expires then the item will return to normal and begin sending notifications again. - Published: 2023-11-28 - Modified: 2023-11-28 - URL: https://rollbar.com/blog/bird-eats-bug-integration/ - Categories: product New Integration: Bird Eats Bug We're excited to announce a new integration with screen capture tool Bird Eats Bug! What does the Bird and Rollbar integration do? Bird Eats Bug is a screen capture tool for Product Managers, QA Testers, and end users to easily report bugs as they see them. Integration with Bird Eats Bug connects errors in Rollbar to a Bird Eats Bug recording, allowing a much easier way to understand the user's experience when reviewing error data in Rollbar. There's a clear correlation between error data in Rollbar and issues reported from internal and external users with Bird Eats Bug. Prerequisites For the integration to work, you need to use both Rollbar and either Bird Eats Bug SDK or the browser extension. Rollbar configuration The data that Rollbar needs is known by the Bird SDK on the same page. We can make Rollbar aware of it using just a few lines of extra code in your rollbar. js configuration, as shown in the JavaScript code example below. This can be done in any SDK that Bird Eats Bug and Rollbar support. var const rollbarConfig = { // ... otherConfig transform: function (payload) { // Add the Bird Eats Bug session link to the payload, if it exists. const sessionLink = window. birdeatsbug? . session? . link || window. birdeatsbugExtension? . session? . link if (sessionLink) { payload. birdeatsbugSessionURL = sessionLink; } return payload; } }; Now you can view the Bird Eats Bug URL in Rollbar: The... --- - [Tyler Cascade](https://rollbar.com/?employee=tyler-cascade): ### Debugging JavaScript with Source Maps > Minified JavaScript code generates source maps that can help trace and debug problems back to the exact line of source code. - Published: 2018-02-06 - Modified: 2022-06-17 - URL: https://rollbar.com/blog/debugging-javascript-with-source-maps/ - Categories: product - Tags: JavaScript One of the frustrating situations I often encounter when debugging JavaScript, is tracking down JavaScript errors to line 23 col 63475. I felt as though I was right on the edge of seeing the offending code and being able to fix it. And then, reality came crashing down. I realized that I’ve managed to debug myself right into the middle of a minified JavaScript file . There is a better way - Source Maps. JavaScript source maps are the key to taking what you’ve narrowed down in the minified code, and then being able to map them back to the source code so that you can view and resolve the problem without having to figure it out in the minified code. Source maps are generated when JavaScript code is minified. By using the source map in production, you can trace your problems back to the exact line of source code. It also allows you to use your browser's developer console to step through the source code when debugging problems. We’ll look at how to generate a source map, and then we’ll look at how they work, and how we can use them to make our lives easier. You can download or clone the source for the following demo from https://github. com/echovue/javascript-calculator. The source includes the original JavaScript file, the minified JavaScript file, and the source map. If you already know how to generate a source map or just want to use the generated file, you can skip down to How... --- - [Michael Auderer](https://rollbar.com/?employee=michael-auderer): ### Next.js or Vite.js: Which Framework is Better, and When? > Next.js excels in server-side rendering for SEO and fast load times, while Vite.js offers rapid development and reduced server load. - Published: 2023-11-13 - Modified: 2023-11-13 - URL: https://rollbar.com/blog/nextjs-vs-vitejs/ - Categories: topics - Tags: JavaScript, next Two names that have been making waves with their distinct approaches to building web apps are Next. js and Vite. js. Next. js is a React framework specialized in server-side rendering (SSR), static site generation (SSG), and hybrid applications. It provides features like file-based routing, image optimization, and is particularly suited for projects where SEO and fast initial load times are priorities. Vite. js, in contrast, is a build tool that supports various frameworks including React, Vue, and Svelte. It focuses on client-side rendering, offering fast development setup and hot module replacement. Vite. js is ideal for projects where rapid development and reduced server load are key considerations. As we dissect these frameworks, we’ll compare their strengths, weaknesses, and the unique flavor they bring to web development - and how choosing between them can profoundly influence the outcome of your project. What makes Next. js remarkable? Next. js offers many features that enhance the development experience and the performance of web apps, such as: File-system-based Routing: Next. js automatically creates routes based on the files in the pages directory. Image Optimization: Next. js provides an image component that automatically optimizes images for faster loading. It supports features like lazy loading, resizing, cropping, and quality adjustment. Internationalization: Next. js supports built-in internationalization and localization features that allow you to create multilingual web apps with ease. API Routes and Endpoints: Next. js allows you to create API endpoints in the pages/api directory. These endpoints can be used to handle requests from your... --- ### Top 10 JavaScript errors from 1000+ projects (and how to avoid them) - Published: 2018-01-24 - Modified: 2022-06-20 - URL: https://rollbar.com/blog/top-10-javascript-errors-from-1000-projects-and-how-to-avoid-them/ - Categories: topics - Tags: JavaScript To give back to our community of developers, we looked at our database of thousands of projects and found the top 10 errors in JavaScript. We’re going to show you what causes them and how to prevent them from happening. If you avoid these "gotchas," it'll make you a better developer. Because data is king, we collected, analyzed, and ranked the top 10 JavaScript errors. Rollbar collects all the errors for each project and summarizes how many times each one occurred. We do this by grouping errors according to their fingerprints. Basically, we group two errors if the second one is just a repeat of the first. This gives users a nice overview instead of an overwhelming big dump like you’d see in a log file. We focused on the errors most likely to affect you and your users. To do this, we ranked errors by the number of projects experiencing them across different companies. If we looked only at the total number of times each error occurred, then high-volume customers could overwhelm the data set with errors that are not relevant to most readers. Here are the top 10 JavaScript errors: Each error has been shortened for easier readability. Let’s dive deeper into each one to determine what can cause it and how you can avoid creating it. 1. Uncaught TypeError: Cannot read property If you’re a JavaScript developer, you’ve probably seen this error more than you care to admit. This one occurs in Chrome when you read a... --- ### What are Sealed Classes in Java? > A sealed class is a class that explicitly specifies which other classes are allowed to extend it. Learn more about them here. - Published: 2023-11-10 - Modified: 2023-11-10 - URL: https://rollbar.com/blog/what-are-sealed-classes-in-java/ - Categories: Code Tutorials, Java - Tags: java Sealed classes are a feature introduced in Java 15 which bring a new level of control and predictability to class hierarchies. A sealed class is a class that explicitly specifies which other classes are allowed to extend it. This offers a way to restrict class hierarchies, making them more predictable and less prone to unintended extensions. Why Sealed Classes? In Java, class hierarchies can become complex, with numerous subclasses extending a common superclass. This can make it challenging to maintain and control the hierarchy. Unintentional extensions and modifications of classes can lead to unexpected issues and bugs in the codebase. Sealed classes were introduced to address this challenge. They provide a mechanism for specifying which classes can extend a particular class, which helps prevent unauthorized extensions. How to Use Sealed Classes The sealed modifier is used to declare a class as sealed. Additionally, the classes that are permitted to be its direct subclasses are specified using the permits keyword. Here’s an example: public sealed class Animal permits Dog, Cat, Bird { //Class implementation } In this example, the Animal class is declared as sealed and permits three subclasses: Dog, Cat and Bird. Any attempt to create a new subclass of Animal outside of this list will result in a compilation error. Preventing Errors with Sealed Classes Sealed classes offer several benefits in preventing errors and ensuring code correctness: Controlled Extensibility: By explicitly specifying which classes can extend a sealed class, fine-grained control is achieved over the class hierarchy. This ensures... --- - [Sadequl Hussain](https://rollbar.com/?employee=sadequl-hussain): ### Monitoring tools for serverless environments and AWS Lambda - Published: 2018-01-08 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/monitoring-tools-for-serverless-environments-and-aws-lambda/ - Categories: Code Tutorials - Tags: AWS-lambda Serverless computing platforms like AWS Lambda represent a new computing paradigm. Over the past decade, we’ve been trying to abstract the application layer from the infrastructure layer. VMs started this by virtualizing hardware servers, and Docker containers extended this by packaging just the application code separate from the host system. The next step in this process is to completely remove the host from the equation, and simply focus on the application code—which is what serverless computing is all about. But as with most things new, serverless forces you to change how you used to do things, including the way you monitor functions. Below, I explain how monitoring changes in a serverless environment. I focus on Lambda in particular, although most of these observations apply to any type of modern serverless platform. How monitoring is different with serverless In traditional client-server apps, you typically monitor the performance of your servers, network latency, and more. However, with serverless platforms like Lambda, these metrics are irrelevant. This is because the vendor manages the underlying servers and plumbing, leaving you to focus exclusively on your application code. This means you don’t need to worry about how much compute power your servers have available to execute your code. Lambda automatically scales the available compute capacity to ensure your code is executed (there’s a caveat, but more on that later). You don’t have to worry about load balancing across multiple servers, or optimizing network latency. AWS takes care of this, too. Serverless metrics to monitor Yet... --- - [Jaee Apte](https://rollbar.com/?employee=jaee-apte): ### Inga's story with Rollbar > Rollbar is extremely easy to integrate, but the real power is in the extended functionality. Rollbar telemetry can be a real time-saver, giving the context to user actions that preceded the actual issue. And for the actual deep-dive in errors, RQL (the query language) is invaluable. I'm also a big fan of the Slack notifications and the flexibility they offer. - Published: 2023-11-09 - Modified: 2024-04-15 - URL: https://rollbar.com/blog/ingas-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Inga Brūnava Lead FE Engineer Inga has now been using Rollbar for 100 months! 1. My Role I'm a Principal Software Engineer at Databox. Databox is a business analytics platform that allows users to connect all of their data in one place, visualize performance trends, monitor progress toward their goals, make more informed decisions, collaborate, and report. All data in one place, on any device. I'm mostly involved in the user-facing part of Databox Analytics app. 2. My Passion in the Role The ultimate goal for any app is to have a user experience without hiccups like bugs, sluggishness and unexpected behavior. That, combined with the personal challenges like "can I make this work", is why I enjoy doing what I do. 3. The Rollbar Experience It's extremely easy to integrate, but the real power is in the extended functionality. Rollbar telemetry can be a real time-saver, giving the context to user actions that preceded the actual issue. And for the actual deep-dive in errors, RQL (the query language) is invaluable. I'm also a big fan of the Slack notifications and the flexibility they offer. --- ### What We Shipped in 2017 - Published: 2017-12-28 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/what-we-shipped-in-2017/ - Categories: product - Tags: monitor At Rollbar, 2017 has been a year of exciting growth and development for the product and the team. We've grown the total number of users to over 100,000, processing billions of events per week, and the team has more than doubled in size. I know it's cliche, but, it genuinely does feel like we're just getting started. ;-) Before we put this year behind us and speed into 2018, I thought we'd look back, and share some of the highlights of what we shipped in 2017. Error Notifier SDKs PHP SDK 1. 0+ JavaScript SDK 2. 0+ Lambda support for Python and Node Laravel SDK Java and Android SDK 1. 0+ React Native SDK (Alpha) iOS SDK 1. 0+ Product Features JavaScript Telemetry JavaScript Source Maps Major JavaScript source map updates Un-minify JavaScript method names Automatic JavaScript source map processing Error Merging and Grouping Error merging and unmerging Edit and merge multiple errors at once Export RQL results as CSV View errors in each deploy Security and Compliance Compliance Compliant SaaS (HIPAA and ISO 27001) Security Encryption at rest Integrations GitLab source control and issues GitHub Marketplace Love and use Rollbar? We value your feedback. What do you think of our new features and improvements in 2017? What sort of things would you like to see shipped in 2018? Please leave a comment below this post or connect with us at hi@rollbar. com. If you haven’t already, signup for a 14-day free trial of Rollbar and let us help you... --- - [Megan Anderson](https://rollbar.com/?employee=megan-anderson): ### Mobile iOS Error Simulator > Ready to explore Rollbar without the coding hassle? The Rollbar Error Simulator iOS app is the ultimate solution for carefree error testing, designed for users without coding experience. - Published: 2023-11-07 - Modified: 2023-11-13 - URL: https://rollbar.com/blog/mobile-error-simulator/ - Categories: product Meet Rollbar’s Mobile Error Simulator Ready to explore Rollbar without the coding hassle? The Rollbar Error Simulator iOS app is the ultimate solution for carefree error testing, designed for users without coding experience. Seamlessly connecting to your Rollbar account, this user-friendly app lets you simulate errors effortlessly with just a single tap on a button. No technical expertise is needed! Just create a new account, opt for the Error Simulator experience, and you'll be guided. Detailed instructions can be found in our documentation. As always, please feel free to provide feedback via customer support or product@rollbar. com to discuss any ideas, suggestions, or problems when using Rollbar. --- - [Twain Taylor](https://rollbar.com/?employee=twain-taylor): ### Spring MVC Exception Handling and Monitoring - Published: 2017-11-27 - Modified: 2023-01-19 - URL: https://rollbar.com/blog/spring-mvc-exception-handling-and-monitoring/ - Categories: Code Tutorials, Java - Tags: java The Spring Famework is the most popular framework for Java according to hotframeworks. com. It provides a model view controller (MVC) architecture and readily available components to develop flexible and loosely coupled web applications. If you are new to Rollbar, it helps you monitor errors in real-world applications. It provides you with a live error feed from the application, including complete stack traces and request data from the browser to debug errors quickly. It lets you easily understand user experience by tracking who is affected by each error. Learn more about our Java error monitoring product features. While Rollbar’s notifier works with any Java application, we’re going to show you how to set it up with Spring and how to try it out yourself with a working example app. Create a global exception handler To track all of our exceptions in Spring, we’ll be making use of a global exception handler. This receives uncaught exceptions for your whole application, not just an individual controller. Spring offers two main approaches: 1. ControllerAdvice When you create a class annotated with @ControllerAdvice{:target="_blank"}, it will handle exceptions created by all your controllers. Each controller advice defines a method with a @ExceptionHandler annotation which becomes the default handler. You can insert your custom code to print or track errors there. ControllerAdvice is only available in Spring 3. 2 and above. We won’t be covering this approach in detail but you can see our working example on GitHub{:target="_blank"}. You will need to uncomment the annotation at... --- - [Rivkah Standig](https://rollbar.com/?employee=rivkah-standig): ### How to Fix text.ParseException in Java > The ParseException is a checked exception in Java that signals an unexpected error while parsing an input. Learn how to fix it. - Published: 2023-11-06 - Modified: 2023-12-12 - URL: https://rollbar.com/blog/how-to-fix-java-text-parseexception/ - Categories: Code Tutorials, Java - Tags: java The java. text. ParseException is a checked exception in Java that signals an unexpected error while parsing an input. This typically happens when the input does not match the expected format. Since ParseException is a checked exception, it must be explicitly handled in methods that can throw this exception - either by using a try-catch block or by throwing it using the throws clause. What Causes ParseException Here are some common scenarios where a ParseException may occur when trying to parse an input: An input string doesn't match the format expected by the parsing method. Unexpected characters or symbols in the input string can throw this exception. Parsing can be sensitive to locale settings. If the input string format doesn't match the locale settings, it may cause a ParseException. Attempting to parse null or empty strings can also cause this exception. ParseException Example Here's an example of a ParseException thrown when trying to parse an input string that doesn’t match the expected format: import java. text. ParseException; import java. text. SimpleDateFormat; import java. util. Date; public class ParseExceptionExample { public static void main(String args) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); String dateString = "2023/01/01"; try { Date date = dateFormat. parse(dateString); } catch (ParseException pe) { pe. printStackTrace; } } } In this example, the input string "2023/01/01" is attempted to be parsed to a date in the "yyyy-MM-dd" format. Since the string does not match the expected format, a ParseException is thrown: java. text. ParseException: Unparseable date: "2023/01/01" at... --- ### Announcing Our New Java Error Monitoring SDK - Published: 2017-11-17 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/announcing-our-new-java-error-monitoring-sdk/ - Categories: product - Tags: java Rollbar is proud to announce the first official 1. 0 release of our Java notifier SDK for error monitoring. Java continues to be one of the world’s most popular programming languages. It’s the most sought-after language for employers and has the second most pushes on GitHub according to Stackify’s 2017 rankings{:target="_blank"}. Rollbar helps you monitor errors in real-world applications. It provides you with a live error feed, along with stack traces and contextual data to debug errors quickly. It's important to select an error monitoring solution that supports all the languages your company uses for a clear picture across your whole stack from the front end to the back end. Some competing solutions just don't give you that full visibility. Learn more about our product features for Java. This new version of our Java notifier SDK supports many frameworks including web apps, Android, Scala, Kotlin, Spring MVC, and more. In web applications, it captures data about the request including the user's IP address and browser so you can narrow the problem down. It helps you identify root cause quickly, by giving you contextual data on what changed and when from your source control and deployment systems. You can also react proactively by seeing which users were affected and prioritize fixes. {: . imgcaption} Grouped Java exceptions, as seen in Rollbar Additional improvements in our 1. 0 release include: Support for both Gradle and Maven build systems. Synchronous and asynchronous senders, so that your application does not block sending events to... --- - [Mike Smith](https://rollbar.com/?employee=mike-smith): - [Phil Nash](https://rollbar.com/?employee=phil-nash): ### Query Smarter, Not Harder - Published: 2023-10-17 - Modified: 2023-10-17 - URL: https://rollbar.com/blog/query-smarter-not-harder/ - Categories: product Meet Rollbar’s New AI Assistant for RQL We're excited to share an update to our Analyze package—introducing the RQL AI Assistant, a natural language AI assistant to help you write your RQL queries. If you've ever been frustrated by the complexity of Rollbar Query Language (RQL) or the time it takes to get your data, this feature is the solution you've been waiting for. We understand working with the RQL has been a steep learning curve for many. That's why we took your feedback seriously and developed a feature that allows you to use natural language for your queries. Imagine getting the needed data by simply typing your question as if asking another engineer. No more wrestling with complex syntax or table schemas; just type and go. The natural language interface allows query input in plain English, eliminating the intimidating barrier of learning a new query language. Our AI Assistant offers real-time intelligent query and table schema suggestions, making query construction seamless and straightforward. Once you double-check, you can submit and see your results. No more looking through documentation or being frustrated with understanding the query structure. We hope this increases your workflow and speeds up fetching the data you need. Efficiency is at the forefront of this new feature, as it helps you focus on what truly matters—analyzing data to make informed decisions to resolve your errors faster. This is an experimental feature, so we will limit the queries to 50 a month for the account. But we are... --- ### Laravel error reporting now available - Published: 2017-10-30 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/laravel-error-reporting-now-available/ - Categories: product - Tags: PHP We're happy to introduce our latest error reporting SDK, for Laravel, which tracks and reports errors that happen in your Laravel applications. Laravel is a popular and powerful MVC framework for PHP, designed for developers who need a simple and elegant toolkit to create full-featured PHP web applications. In real-world production applications, it’s important to monitor errors so you understand your user’s experience and can fix issues before more are impacted. Rollbar helps by providing you with a live error feed from your application, including complete stack traces for instant visibility. To give you more context to debug problems, we also track the environment the error is coming from (prod or staging), the server that generated the error, and even the user’s session. Learn more about Rollbar’s product features. Below, we'll show you how to add Rollbar error reporting to your Laravel apps and even give you a code example that you can try yourself. Laravel error reporting with Rollbar Here are some simple steps describing how to integrate Laravel SDK in your code. You can find more details in the Laravel Documentation. Sign up for a Rollbar account if you haven’t done so yet. Create your project and select Other from the list of notifiers. Copy the server side access token that is generated for you. You’ll need this to configure Rollbar in the steps below. Open command prompt in your project directory and type following command to install the Laravel notifier SDK. composer require rollbar/rollbar-laravel Add the project... --- - [Derek Haynes](https://rollbar.com/?employee=derek-haynes): - [Jennifer Marsh](https://rollbar.com/?employee=jennifer-marsh): ### How to Fix java.io.IOException > The IOException happens while performing read, write or search operations in files or directories. Handle it using try-catch or by using the throws clause. - Published: 2023-10-16 - Modified: 2023-10-16 - URL: https://rollbar.com/blog/how-to-fix-java-ioexception/ - Categories: Code Tutorials, Java - Tags: java The java. io. IOException is a checked exception in Java that indicates a problem while performing Input/Output (I/O) operations. This usually happens when a failure occurs while performing read, write or search operations in files or directories. Since IOException is a checked exception, it must be explicitly handled in methods that can throw this exception - either by using a try-catch block or by throwing it using the throws clause. What Causes IOException A java. io. IOException occurs when an input or output operation fails or gets interrupted. This can happen for various reasons such as: File not found Permission issues Unexpected disruptions during file handling IOException Example Here's an example of a IOException thrown when trying to read from a file that does not exist: import java. io. BufferedReader; import java. io. FileReader; import java. io. IOException; public class IOExceptionExample { public static void main(String args) { String filePath = "file. txt"; try { BufferedReader reader = new BufferedReader(new FileReader(filePath)); String line; while ((line = reader. readLine) ! = null) { System. out. println(line); } reader. close; } catch (IOException e) { System. err. println("An IOException occurred: " + e. getMessage); e. printStackTrace; } } } In the above example, a file named "file. txt" is attempted to be read. Since this file does not exist, running the above code throws an IOException. The code catches the exception and prints an error message along with the stack trace: An IOException occurred: file. txt (No such file or directory) java.... --- ### Custom error handling for Angular - Published: 2017-10-24 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/custom-error-handling-for-angular/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript Angular 2+ and AngularJS (version 1) are popular open-source JavaScript MVC frameworks that let you build highly structured, testable and maintainable front-end applications. Angular is most commonly used on single-page applications. Stable and reliable single-page applications depend on solid client-side error monitoring tools and techniques. But getting the right exception data and context isn’t always easy. We’re going to dive into how to capture, handle and debug Angular errors. Error handling in vanilla JavaScript consists of using try, catch and finally statements. You can also use these statements in Angular modules. However, Angular has a special logic to handle uncaught exceptions. We’ll show you how to create custom error handlers for Angular that you can override to add your own functionality. Error logging in Angular The ErrorHandler class in Angular 2+ provides a hook for centralized exception handling. The default implementation of ErrorHandler prints error messages to the console. This service is very simple by design. To intercept the error handling we need to write a custom handler. On the other hand, uncaught exceptions in AngularJS are all funneled through the $exceptionHandler service. When unmodified, $exceptionHandler sends all uncaught exceptions to the $log. error service. The $log. error service passes the error through to the client’s console. Here’s how you can create your own error handler: Angular 2+ AngularJS 1. X class ErrorHandler { constructor {} handleError(error: any): void; } $exceptionHandler(exception, ); In Angular 2+ the handleError(error: any): void method allows you to implement your own code to do something... --- ### Error Boundaries in React 16 - Published: 2017-10-11 - Modified: 2023-01-19 - URL: https://rollbar.com/blog/error-boundaries-in-react-16/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript React recently announced the release of version 16 with long standing feature requests including error boundaries, fragments, improved server-side rendering and more. Error boundaries are especially useful so that an error in one small part of the UI doesn’t break your entire application. Instead, it’s better to contain those errors to the affected components and recover gracefully. JavaScript error logging. When you open this page, you can activate an error boundary by clicking at least five times on the counter. You will then see the error message “Something went wrong. ” Let's dive deeper into this example to learn how error boundaries work. What are error boundaries? Error boundaries are React components that catch JavaScript errors anywhere in their child component tree. They can log errors and display a fallback UI to replace the component tree that has crashed. They are similar to try-catch statements in your code, but surround page elements instead. An error boundary is a React component with a componentDidCatch(err, info) method. Any errors occurring in a component tree get reported up to the nearest error boundary’s componentDidCatch function. Note that error boundaries only catch errors in the components below them in the tree. For simple apps, you can declare an error boundary component once and use it for your whole application. For more complex applications with multiple components, you can have independent error boundaries to gracefully recover each part. You can also report these errors to an error monitoring service like Rollbar. This will give you... --- - [Ken Sheppardson](https://rollbar.com/?employee=ken-sheppardson): ### Introducing Item Snooze > We are introducing a new Snooze option for items. When Snoozing an item, the user will define how long an item will stop sending notifications for - once that time period expires then the item will return to normal and begin sending notifications again. - Published: 2023-10-12 - Modified: 2023-10-12 - URL: https://rollbar.com/blog/item-snooze/ - Categories: product Introducing Item Snooze Introduction We are introducing a new Snooze option for items. When Snoozing an item, the user will define how long an item will stop sending notifications for - once that time period expires then the item will return to normal and begin sending notifications again. Currently, setting an Item to have a status of Muted prevents notifications from being sent until somebody changes the status back to Active. The new Snooze option will perform a similar function, but there will be an end date defined after which notifications will be sent again for an item, and the status of the item will not change. When Snoozed, all occurrences will still be processed and will count towards your occurrence budget, only notifications will be stopped. Why are we making this change? We are introducing the new Snooze option as a response to feedback users are not using Mute status due to concerns about the danger a muted item could still be an active issue, generating a lot of occurrences, but no notifications would be received. This could mean that users are not aware of the existence or scale of an issue in their system, as well as inadvertently using up the account’s occurrence allowance. Adding an end date will help mitigate this risk while allowing users to stop notifications being sent while a known issue is being investigated. Rollout process The Snooze option will be made available on the item list and item detail screens for paid tiers... --- - [Cuttlesoft](https://rollbar.com/?employee=cuttlesoft): ### Quickly edit and merge many error items at once - Published: 2017-09-20 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/quickly-edit-and-merge-many-error-items-at-once/ - Categories: product - Tags: monitor Rollbar just added a new feature that allows you to quickly edit and merge hundreds or thousands of items at once. In the past, you could only edit or merge items on a single page, which is limited to 30 items at a time. We added a new link that allows you to apply the change to all items in your view or matching a search. This feature provides a similar user experience to how Gmail lets you select all conversions, and then update or delete them. This is useful to perform bulk updates, such as assigning many items from a single component to a developer to fix. You might want to merge multiple errors that are similar but come from different parts of your application. You could also resolve all your errors before doing a deployment so that you have a fresh view with the new version. Thanks to our intelligent fingerprinting rules you only need to merge items once. New occurrences will remain in the merged item. This makes it much easier to manage the items in your account by keeping your view clutter free, and giving you accurate metrics on how often errors occur. As a result, you can focus your attention on new and high-impact errors. If you haven’t already, signup for a 14-day free trial of Rollbar and let us help you take control of impactful production errors. :-) --- - [Elliott Spira](https://rollbar.com/?employee=elliott-spira): ## Job Titles ### Introducing AWS Lambda Support for Node.js and Python - Published: 2017-09-07 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/introducing-aws-lambda-support-for-node-js-and-python/ - Categories: product - Tags: SDK We’ve just updated our Rollbar. js and Python libraries, making it easy for you to monitor errors on AWS Lambda. If you’ve been considering building apps with serverless architectures on Lambda, we’ve got the exception tracking covered so you can rest easy. Serverless architectures Serverless architectures have taken resource abstraction to the next level. We've now gone from having servers hosted and managed in the cloud, to having servers that require zero touch and are ephemeral in nature - they're spun up automatically only when certain events are triggered. They also scale out automatically with usage, and whereas before you paid for compute resources you allocated, now you only pay the resources your app actually uses. AWS Lambda In AWS Lambda, currently the most popular service for building serverless apps, how much you use is based on how many times you trigger functions and how long it takes for those functions to execute. Lambda functions come with limits, such as the concurrency execution limits. This is set at account-level and when you hit those limits, throttling kicks in. As a result, your functions don’t get executed and you get errors. This is just one of many things to consider and monitor when architecting your app to run on Lambda. Monitoring errors in Lambda Lambda uses Cloudwatch for monitoring and logging, providing metrics such as number of invocations, execution duration times, throttles, logs, and number of errors from failed invocations. For richer and more granular information on errors that helps you... --- ### Introducing JavaScript Telemetry - Published: 2017-08-16 - Modified: 2022-01-27 - URL: https://rollbar.com/blog/introducing-javascript-telemetry/ - Categories: product - Tags: debug We're excited to introduce JavaScript telemetry, which provides a timeline of events in the browser leading up to when an error occurred. This helps you find the root cause of JavaScript errors faster by providing critical information on user behavior, network activity, and more. You might also think of this timeline of events as a trail of breadcrumbs or a black box recorder which tells you what happened just before a crash or error. In the screenshot below, we see a timeline showing a complete story of how the user encountered an error. First they loaded the page, typed their email address into the sign up form, validated the email, navigated to an onboarding page, and then the error occurred. This gives clear context on what caused the error and which component needs to be fixed. {: . imgcaption} JavaScript telemetry data, as seen in Rollbar Troubleshooting can be difficult and time-consuming If you’re a web developer, you know it can be difficult to reproduce unusual errors and problems reported by users. There are many variables including inconsistent browser environments, unexpected user behaviors, network calls, state changes in the application, and more. Reproducing problems costs your team time in development, QA and support. Unfortunately, if your team cannot reproduce the problem it’s often put on the back burner which can leave users hanging with no resolution. Having enough contextual information can save you time because you can quickly see the cause of the problem without having to manually test different... --- - [Chief Product Officer](https://rollbar.com/?job_title=chief-product-officer): - [Talent & Operations](https://rollbar.com/?job_title=talent-operations): ### Purpose-Built Error Monitoring Alternative to New Relic - Published: 2017-08-08 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/purpose-built-error-monitoring-alternative-to-new-relic/ - Categories: topics - Tags: APM One of the more frequently asked questions we hear is: "Doesn't my existing Application Performance Management (APM) solution, such as New Relic, monitor and track errors in our application? " The short answer is - it’s not enough. They are very complementary and most Rollbar users use both (we do) for various debugging scenarios. APM tools are great at telling you what's slow, when and where exceptions occur. Rollbar provides a lot more contextual information to help you determine what's broken, why they occur, who is affected, and how to fix them. It saves you a substantial amount of time dealing with errors and leaves more time for resolving issues and improving your product experiences. (/why-rollbar/" alt=""> Let’s see how New Relic and Rollbar compare when it comes to monitoring and managing application errors. Features Rollbar New Relic Error tracking ✓ ✓ Error analytics ✓ ✓ Stack traces ✓ ✓ Error frequency heatmap ✕ ✓ Infrastructure monitoring ✕ ✓ Transaction tracing ✕ ✓ Notifications and alerting ✓ ✓ Issue tracker integration ✓ ✓ Filter by host ✓ ✓ Data retention > 8 days ✓ (180 days) ✕ Custom rate limits ✓ ✕ (100 events per minute) Live error view ✓ ✕ Git repo integration ✓ ✕ Map errors to deployments ✓ ✕ Raw payload per error ✓ ✕ Replay requests ✓ ✕ People affected ✓ ✕ Telemetry ✓ ✕ Local variable values ✓ ✕ Custom error grouping rules ✓ ✕ Overview of New Relic's Error Analytics The New Relic APM... --- - [Co-founder and CTO](https://rollbar.com/?job_title=co-founder-and-cto): - [CRO](https://rollbar.com/?job_title=cro): ### Security matters: Rollbar now offers advanced encryption at rest - Published: 2017-07-19 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/security-matters-rollbar-now-offers-advanced-encryption-at-rest/ - Categories: product - Tags: security Are your services secure? In today’s world, you can hardly go a week without reading in the news about security breaches, malware, and more. We’ve already had headline news this year for Wanna Cry{:target="_blank"}, and now there are dozens of copycat malware programs taking advantage of out-of-date systems. Think of all the services that your company uses from error monitoring to logging and APM. Some of them may be delivered by vendors and others set up by internal teams. Did your IT team evaluate these services to determine how secure they are? If not, you might want to reconsider the services you use or who can best deliver them. Unfortunately, many companies only do the bare minimum due to time constraints, limited budget, lack of expertise, etc. Real security is hard because threats are constantly evolving, and they target the weakest link across all layers of your organization. Companies make good targets because they concentrate data from potentially billions of customers in one place. Their infrastructure can have millions of lines of code that no one person fully understands. They often rely on a complex and poorly monitored network of third-party service providers, offshore contractors, platforms, modules, etc. These all present opportunities to attack. Sophisticated companies evaluate the security of their service providers when making a purchase, and they hold internal services to the same standards. They typically have a checklist of security requirements covering certifications, security audits, data management processes, etc. Companies in the EU or US-regulated industries like... --- - [Sales](https://rollbar.com/?job_title=sales): ### Merging versus Custom Fingerprinting - Published: 2017-06-23 - Modified: 2021-07-19 - URL: https://rollbar.com/blog/merging-versus-custom-fingerprinting/ - Categories: product - Tags: monitor With the recent announcement of support for manual merging, there are now multiple ways to combine occurrences of errors into a single item. Before merging was an option, if the default fingerprinting algorithm didn’t combine occurrences the way you wanted, then you needed to define custom fingerprinting rules. Custom fingerprinting rules require you to learn our JSON-based rule syntax, and that could be a deterrent against setting them up. Now that you can easily merge errors via the UI, is there still value in setting up custom fingerprinting rules? Absolutely, and this blog post will explain why! Rollbar’s Default Fingerprinting Algorithm To understand merging vs. custom fingerprinting rules, it helps to first look at how Rollbar combines occurrences of errors. Minus a few tweaks we’ve made over the years to optimize results, our default algorithm works as follows: Combine the filenames and method names from all of the stack frames Append the exception class name Take the SHA1 hash of the result The resulting SHA1 hash is what we call the ‘fingerprint’ of the error. All occurrences that have the same fingerprint will be combined into a single item. The default behavior can be changed to include the exception message, or any other occurrence data, when calculating the fingerprint too. This will result in more unique errors in your Rollbar projects, so use it carefully. Custom Fingerprinting Rules The default fingerprinting algorithm is a good start and may be sufficient for many projects, but often you’ll want to tweak the... --- - [Engineering](https://rollbar.com/?job_title=engineering): - [Operations](https://rollbar.com/?job_title=operations): - [Product Design](https://rollbar.com/?job_title=product-design): - [Finance](https://rollbar.com/?job_title=finance): - [Talent](https://rollbar.com/?job_title=talent): - [Country Manager, Hungary](https://rollbar.com/?job_title=country-manager-hungary): - [Marketing](https://rollbar.com/?job_title=marketing): ### Technical details and challenges of building Error Merging - Published: 2017-06-19 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/technical-details-and-challenges-of-building-error-merging/ - Categories: product - Tags: behind-the-scenes Hopefully you've had the chance to try out our latest feature, error merging. We've heard a lot of positive feedback from our users. They're especially excited to be able to easily merge and un-merge related errors. We thought it would be useful to share how the Rollbar team made this happen from a technical standpoint. If you're interested in the nitty-gritty of how we implemented error merging, read on. I interviewed an engineer here at Rollbar who was instrumental in making error merging possible, about what was involved in engineering this feature. First, let's start with why we created error merging in the first place. Our users were asking for the ability to merge (and unmerge) their errors via our UI, as opposed to having to create custom fingerprinting rules. Prior to creating error merging, if you wanted to merge two items together, you created a custom fingerprinting rule, which doesn't apply retroactively. You also could never unmerge items that had been merged together. As the engineer explains it, "custom fingerprinting is extremely static and only applies when the rule is in existence. You can look at an occurrence of an item and extract the fingerprint, and it is always associated with the item. Item merging is very dynamic. You never change the fingerprint of a given occurrence, and that fingerprint could even come from custom fingerprinting. You can change your mind over and over. Merging is a tool for managing complexity. You can take your dashboard from a zillion... --- - [Product](https://rollbar.com/?job_title=product): - [Co-founder and CEO](https://rollbar.com/?job_title=co-founder-and-ceo): - [Customer Success](https://rollbar.com/?job_title=customer-success): ### How Shortcut uses Rollbar to monitor JavaScript errors - Published: 2017-06-14 - Modified: 2022-12-07 - URL: https://rollbar.com/blog/how-shortcut-uses-rollbar-to-monitor-javascript-errors/ - Categories: company - Tags: customer-stories I'm eager to share an insightful interview our friends at Changelog recently did with Andrew Childs, CTO at Shortcut and Rollbar power-user. We're big supporters of the Changelog podcast and we asked them, to help us produce a handful of interviews with our customers. It's a fun project that lets us pull back the curtain and learn more about our customers processes for handling errors and deploying code. Read. Listen. Enjoy! Featured in this interview: Adam Stacoviak, Founder & Chief Editor at Changelog, a podcast on software development and open source. Andrew Childs, CTO of Shortcut, an easy-to-use project management tool for software teams. Adam: Andrew, let's start off with you telling me a bit about Shortcut. Andrew: Shortcut is a software company based in New York, building project management software, specifically for software teams that are looking for something simple and flexible but gives them a little bit more visibility into what the whole team is doing and where the team is going at a high level. Adam: How important is error tracking to Shortcut? Andrew: It's really important, because our software isn't perfect. You could see if you looked at our Rollbar, we have a constant stream of errors coming in that need to be fixed. People are leaving these windows open for weeks and they've got all these third-party extensions loaded, and those extensions are doing things to the page, rewriting things and rewriting stuff on DOM and it's like you're in a very hostile environment and... --- - [Revenue Operations](https://rollbar.com/?job_title=revenue-operations): - [Developer Advocate](https://rollbar.com/?job_title=developer-advocate): ## Customers ### Turning Errors Into Action: How and Why Resolving Errors Matters - Published: 2017-05-30 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/turning-errors-into-action-how-and-why-resolving-errors-matters/ - Categories: product - Tags: triage Why resolving errors matters? After fixing a bug, who is responsible for making sure if it really resolves the customer's problem? A lot of companies take a fire-and-forget mentality where the developer makes a code change, and they never think of the problem again until someone complains. Developers often assume that the fix will be deployed with the next release, that the fix will behave the same in production as it does in their development environment, and that it resolves every case uniformly. Only for the most urgent problems will they wait for the fix to hit production and then verify the improvement on the customer's side. Let's face it, verifying the resolution of issues in production is a chore and takes away from developer productivity. Often, the developer has already moved on to other problems by the time fixes are deployed. In many companies that don't have continuous deployment, developers have little control over when releases get shipped. If you're using an issue tracking system, the developer's job usually ends when the code is written and merged. Even if developers wanted to go back and verify the fix works, they may not have the proper tracking tools to do so. Who is accountable for ensuring that bugs are fixed on the customer side? The support or product management teams will complain if it doesn't work as expected, but why should they be responsible? They have better things to do than follow up on dozens of bugs that are filed... --- ### Introducing Error Merging ⎌ - Published: 2017-05-22 - Modified: 2025-04-22 - URL: https://rollbar.com/blog/introducing-error-merging-%e2%8e%8c/ - Categories: product - Tags: monitor We're excited to introduce merging (and un-merging) of errors! Merging errors lets you combine multiple errors into one 'group' for easier management and more accurate metrics. All past and future occurrences of any merged errors will automatically be combined and grouped. Today's merged errors are tomorrow's error groupings. :-) Merge errors When you encounter a duplicated error, you'll want to create a new 'group'. Select one or more errors from the same environment in the error Items feed. Slide the toggle in the box above to 'Merge', set appropriate Level, Status, Owner, and Source values, enter a name for the new item, and click 'Merge'. Done, error merge success! Un-merge errors Merged the wrong error by mistake? No problem! You can easily un-merge errors in Rollbar. Search for merged errors By default, errors which have been merged into a group will no longer appear. To view these errors, you can search for is:member. To only show grouped errors, you can search for is:group. We hope that you and your team will save more time in your day-to-day debugging efforts with Error Merging. Check out the error merging documentation for more details. We appreciate your feedback. Email support@rollbar. com and let us know your thoughts. If you haven’t already, signup for a 14-day free trial of Rollbar and let us help you defeat annoying errors in your applications. :-) --- ### New and improved JavaScript notifier SDK - rollbar.js 2.0 - Published: 2017-05-20 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/new-and-improved-javascript-notifier-sdk-rollbar-js-2-0/ - Categories: product - Tags: JavaScript We are excited to announce a major update to our JavaScript notifier SDK in version 2. 0. This new version adds support for isomorphic or universal applications, which can run on both the client and the server. It standardizes the configuration and logging across environments, and makes it consistent with notifiers for other languages. Here are the big changes: Single library for both client and server side The JavaScript ecosystem has evolved a tremendous amount over the past several years. During that time, server side JavaScript usage has grown to the point where it is quite common to be using JavaScript throughout an application's stack. Applications now are often designed to run both in the client browser and on the server side using Node. These are commonly referred to as "isomorphic" or "universal" applications. The benefits of isomorphic applications include faster loading times, better support for legacy or mobile browsers, and easier search engine indexing. With the line between client and server blurring, it is desirable to have a unified view of exceptions across both environments. To make this possible, we unified the separate notifier libraries so that exceptions are logged uniformly. One require to rule them all. Consistent interface for configuration and logging across multiple environments We now offer a consistent interface for configuration and logging for both client and server side. Furthermore, it is consistent with our notifier libraries for other languages. This will make it much easier for developers since they only need to use one pattern.... --- ### Instacart, leader in grocery delivery, relies on Rollbar for production error monitoring - Published: 2017-05-15 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/instacart-leader-in-grocery-delivery-relies-on-rollbar-for-production-error-monitoring/ - Categories: company - Tags: continuous-delivery   Instacart, a leader in the on-demand marketplace, provides one-hour grocery delivery to users of their app and employs thousands of shoppers across the US to support order fulfillment. Of the one trillion dollar grocery industry, only 1% of market share currently comes from online grocery sales. As Instacart increasingly captures more of this market, they turn to Rollbar for continuous monitoring of their service’s health. With a promise of one-hour delivery, and a shopper workforce relying on their apps, Instacart’s services must be up at all times. Rollbar’s proactive alerting and granular error forensics facilitates the continuous integration and deployment pipeline at the heart of Instacart’s service. Rollbar allows us to go from alerting to impact analysis and resolution in a matter of minutes. It's fully ingrained into our development cycle and monitoring. Without it we would be flying blind. Arnaud Ferreri, Engineering Lead for the Consumer Team at Instacart. The Challenge While many industries have worked out how to participate in the on-demand marketplace, the one trillion dollar grocery industry is one of the last holdouts. Tight margins may be making some investors skittish. Retraining customer perception about grocery quality and freshness with app-ordered deliveries might be at play. Building and scaling the technology layer that acts as the on-demand engine has been a daunting challenge. It’s this last barrier to entry that Instacart has already dismantled. Since its inception in 2012, Instacart has been wooing grocery shoppers away from retail spaces and onto smartphones, to place grocery... --- - [eCommerce](https://rollbar.com/customers/ecommerce/): - [Plexus](https://rollbar.com/customers/plexus/): ### Improved PHP error reporting with our latest rollbar-php 1.0 updates - Published: 2017-05-04 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/improved-php-error-reporting-with-our-latest-rollbar-php-1-0-updates/ - Categories: product - Tags: PHP We are excited to announce a significant upgrade to our PHP notifier SDK. This new version will make it much easier for customers to integrate their PHP apps with Rollbar. It uses the latest standards like Composer, proper namespaces, and is more reliable. Here are some of the highlights: Our first major 1. 0 release This major release of our PHP SDK represents a significant update in architecture, style, and quality for our PHP notifier. In addition, many outstanding issues were fixed so 1. 0 is more reliable and better tested than our prior versions. Our prior version, 0. 18. 2, was written in an old style of PHP with most of the code living in a single file. This was due to our desire to support the oldest version of PHP possible. Due to the changing landscape over the past couple years, it became reasonable to drop support for PHP 5. 2 and this opened the door for many language features which benefit both our code and yours. While the interface has undergone a redesign, it is still backward compatible with 0. 18. 2 via convenience functions. Support for Composer Our SDK is now properly supportive of composer which has become the de facto dependency management tool in PHP. Just add the following configuration to your composer. json file: { "require": { "rollbar/rollbar": "~1. 0" } } Standardized namespace We are now using PHP namespaces, a feature introduced in 5. 3. At the top of your file, you can... --- - [Shortcut](https://rollbar.com/customers/shortcut/): - [Everplans](https://rollbar.com/customers/everplans/): ### Introducing hassle-free, compliant SaaS error monitoring - Published: 2017-04-26 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/introducing-hassle-free-compliant-saas-error-monitoring/ - Categories: product - Tags: security I'm very excited to announce that today, Rollbar is launching the first and only compliant SaaS error monitoring solution on the market. Our compliant solution meets the standards of HIPAA and ISO 27001, thanks to our team's hard work over the past 6+ months on our infrastructure, application, and policies. From the early days of Rollbar, I've been motivated to help developers build better software, faster, because I believe that empowering software developers is one of the most impactful (if not always visible) ways to improve all of our lives. We've seen customers use Rollbar to build and maintain just about everything you can imagine, from consumer apps to enterprise, healthcare, government, scientific research, and beyond. As we've found our way into applications that power more and more critical functions of modern society (like healthcare and finance), we realized that we would need to be able to meet those organizations' security and compliance requirements--somehow. Our first iteration was Rollbar On-Premises (which we do still offer)--passing the compliance burden off to customers--and a handful of eager customers signed on. Over time, however, we learned that not only is it difficult for us to maintain and support a self-hosted product, it's a huge pain for customers, too. Forgive me for quoting a competitor who seems to be learning the same thing: We went back to the drawing board to ask: why do customers need to self-host? And we realized that in almost all cases, they didn't. What compliance-conscious customers need is compliance,... --- - [FinTech](https://rollbar.com/customers/fintech/): ### Major JavaScript source map updates - Published: 2017-04-20 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/major-javascript-source-map-updates/ - Categories: product - Tags: JavaScript We’re excited to introduce a major update to JavaScript source map support in Rollbar! This update introduces several features unique to Rollbar (source map search, source map failure logs, inline warnings in stack traces) that are critical to anyone using client-side JavaScript in a large-scale, continuous deployment environment. Why Use Source Maps? If your application uses client-side javascript, then you’re probably minifying your code to reduce file sizes and improve page load times. The benefits of minified Javascript are clear, but minification also introduces the need for source maps in order to debug errors that were detected in minified code. Without a source map, it's nearly impossible to determine where an error occurred in your Javascript code. Due to the need for source maps, debugging minified code will always be inherently problematic, but we’ve just introduced several improvements to Rollbar’s source map handling that will make troubleshooting much, much easier. Something didn’t work right... When a Rollbar stack trace includes a minified file that doesn’t have a matching source map, you’ll now see an information message that links you to your project’s source map screen where you can further troubleshoot why the source map wasn’t available. View failed source map uploads and downloads More often than not, you look at your source maps because something didn’t work as expected. You can now see when Rollbar fails to access a source map, including detailed information about what happened. Filter and search your source maps On large projects with frequent deployments, you... --- - [Greenhouse](https://rollbar.com/customers/greenhouse/): - [CircleCI](https://rollbar.com/customers/circleci/): ### Error alert notifications + how to use them for better monitoring - Published: 2017-04-04 - Modified: 2025-04-22 - URL: https://rollbar.com/blog/error-alert-notifications-how-to-use-them-for-better-monitoring/ - Categories: product - Tags: monitor Rollbar offers an impressive array of error alerting and notification options for you to choose from, which is awesome! But sometimes we hear from our users that they aren't quite sure how to leverage their notifications to get the best results. What do notifications here at Rollbar do? How do they work? How should you interpret them? And perhaps most importantly, what are the best practices? Let's explore the answers to all these questions today. Rollbar supports many different messaging and incident management tools, so you and your team can get notified about errors and important events. These notifications can be anything from a message in a Slack channel to an alert in PagerDuty. There are some common notification types that we offer, no matter what tool you're using to be notified. Notification Type Triggered when... New Item An error/ message is seen for the first time. Every Occurrence Every time an error/ message occurs (use wisely). 10^th Occurrence 10th, 100th, 1,000th, 10,000th, ... occurrence High Occurrence Rate {x} occurrences seen in {y} minutes (configurable). Item Resolved An error/message is marked Resolved. Item Reopened An error/message is marked Active by a user. Item Reactivated An error/message occurs again after being marked Resolved. Deploy A new deploy is reported. Daily Summary (Available in email only) Summary of daily error/message activity in a project So now that you know what types of notifications you can get, how about customizing them? You can filter your notifications to adjust the circumstances under which you... --- - [CVENT](https://rollbar.com/customers/cvent/): - [Twilio](https://rollbar.com/customers/twilio/): ## Changelogs ### Onboarding remote employees, on the other side of the world - Published: 2017-03-28 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/onboarding-remote-employees-on-the-other-side-of-the-world/ - Categories: product - Tags: team When I first started full-time here at Rollbar, I was living in Malaysia for the month, starting a year-long journey around the world that I'm currently still on. While it was certainly fun and exciting to explore Kuala Lumpur, it was a bit more difficult to onboard in a new job when I was 15 hours ahead of the rest of the team. Luckily, everyone here at Rollbar is incredibly flexible and helpful, and we were able to get creative about the onboarding process. If you're considering onboarding a remote employee in a different time zone as the rest of your team, read on for some tips and tricks that should help speed up the process. This is my third job in tech, and my second as a remote employee, so while I can't say I've seen it all in terms of onboarding, I have seen a few different methods. The most obvious (and easiest) method is to have your new team member come in to the office bright-eyed and bushy-tailed and have all the members of the team available to help make their onboarding a success. Unfortunately, if the team member you're onboarding doesn't live in the same area, that isn't really possible. What to do? Some companies get around this by requiring all remote employees come onsite for their onboarding. If you're an all-remote company, like the second place I worked, you've probably got the kinks figured out in terms of onboarding your new employees. In many ways... --- ### Building the IoT Rollbar error alarm - Published: 2017-03-11 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/building-the-iot-rollbar-error-alarm/ - Categories: Code Tutorials - Tags: monitor Our friends at Losant wanted to share how they built an actual 'error-alarm' using the Rollbar and Losant API's. Enjoy! When I envision a tech company's smart office, I see tons of dashboards and indicator lights that monitor everything. Efficient monitoring is a critical piece of today's technology stack, and there are always ways to improve. Rollbar already does an impeccable job at alerting you when errors are thrown in your application. But, to increase awareness, accountability, and awesomeness in the office, we can connect Rollbar to our smart office. In this tutorial, we are going to build an office error alarm powered by Rollbar and Losant. Building the Alarm Intel Edison - This is a small compute module that we will use to control the devices in our office. WeMo Insight Switch - This is a Wifi enabled, smart plug that we can control remotely. **Rotating Police Party Light - This is a regular party light. Setting up the Light Connect the WeMo Insight Switch to your office network using the WeMo app and plug in the light. You should be able to control the light with the WeMo app. Setting up Intel Edison The WeMo switch exposes a local API. There is a Node. js module that wraps the API so we can control the WeMo switch. Since the API is local, the Intel Edison must be on the same network as the WeMo switch to connect to the device. Intel has a configuration tool we need to... --- ### Up your incident management alerts game with Rollbar and VictorOps - Published: 2017-03-02 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/up-your-incident-management-alerts-game-with-rollbar-and-victorops/ - Categories: product - Tags: integrations Resolving on-call errors can be faster and easier than ever before when you integrate VictorOps and Rollbar. VictorOps is a fantastic on-call management tool that provides incident notifications to engineers to help teams resolve incidents faster and minimize downtime. We're excited to announce that you can now automatically send your Rollbar items to VictorOps, and get alerted to new errors quickly - before your users notice. Linking Rollbar and VictorOps To automatically turn your Rollbar items into Alerts in VictorOps, read on. Configuration is per-project in Rollbar. Head to the Notification settings page for a project: Dashboard -> Settings -> Notifications -> VictorOps. In VictorOps, go to Settings (or Complete Setup) -> Alert Behavior -> Integrations, and choose Rollbar. Click "Enable Integration" if it's not already enabled. Copy the API key from VictorOps. In Rollbar, enter the API and routing keys, and click "Enable VictorOps Integration. " Congrats! You have now integrated Rollbar with your VictorOps account. Now, when a new error or higher occurs in Rollbar, it will create an Alert in VictorOps, which will be automatically resolved when it is resolved in Rollbar. If you want, you can customize the default rules by editing, adding, or deleting them. By bringing your Rollbar data into VictorOps, you can streamline your monitoring, minimize downtime, and resolve incidents faster. For more information, check out our integration docs for VictorOps. We also have an integration with another incident management alerts provider, PagerDuty; check out the docs here. To see if Rollbar integrates... --- - [Rollbar is removing old grouping versions to improve fingerprinting in July](https://rollbar.com/development-updates/rollbar-is-removing-old-grouping-versions-to-improve-fingerprinting-in-july/): Seamless grouping is the concept of making sure that when we roll out new grouping versions, already grouped items won’t... - [Rollbar is removing old grouping versions to improve fingerprinting in April](https://rollbar.com/development-updates/rollbar-is-removing-old-grouping-versions-to-improve-fingerprinting/): Seamless grouping ensures that when we roll out new grouping versions, items that are already grouped won’t change. When we... - [New, updated Software Development Kits are available](https://rollbar.com/development-updates/new-updated-software-development-kits-are-available/): We are pleased to announce new and updated software development kits (SDKs) and capabilities. These SDKs keep Rollbar current on... - [April 2022 Grouping Update](https://rollbar.com/development-updates/april-2022-grouping-update/): We are pleased to announce our new Grouping Update which introduces patterns for Elixir and Scala. Both recently supported SDKs... - [Slack Oauth 2.0 system is available for your Rollbar projects](https://rollbar.com/development-updates/slack-oauth-2-0-system-is-available-for-your-rollbar-projects/): Rollbar is adopting the updated Oauth 2. 0 flow created by Slack. Slack has revised their access tokens and now... - [January 2022 Grouping Update](https://rollbar.com/development-updates/january-2022-grouping-update/): This month we are excited to roll out a new January Grouping Update which significantly improves Grouping quality for some... - [Update regarding Log4j Java vulnerabilities](https://rollbar.com/development-updates/update-regarding-log4j-java-vulnerabilities/): Rollbar is aware of the Log4j Java vulnerabilities (CVE-2021-44228 and CVE-2021-45046) and we have updated all the potentially impacted infrastructure... - [December 2021 Grouping Update](https://rollbar.com/development-updates/december-2021-grouping-update/): We are pleased to announce our December 2021 Grouping Update that significantly improves grouping coverage and quality for some of... ## Events - [We’ve partnered with the team over at Vue School to bring you Vue.js Forge Episode 4 for FREE!](https://rollbar.com/event/big-news-weve-partnered-with-the-team-over-at-vue-school-to-bring-you-vue-js-forge-episode-4-for-free/): - [Webinar: Technical Intro to Improve: Release](https://rollbar.com/event/webinar-technical-intro-to-improverelease/): - [Webinar: Introduction to Improve:Release](https://rollbar.com/event/webinar-introduction-to-improverelease/): - [Webinar: Accelerating Code Quality with the DORA Metrics](https://rollbar.com/event/next-event/): - [Webinar: 99% DevOps Presents | The Anatomy of Observability](https://rollbar.com/event/title-lorem-ipsum-dolor-sit-amet-consectetur-adipi-scing-elit-sed-do-eiusmod-tempor-incididunt-ut-labore-et-dolore-magna-aliqua-3/): - [Conference: Developer Week Management 2021](https://rollbar.com/event/title-lorem-ipsum-dolor-sit-amet-consectetur-adipi-scing-elit-sed-do-eiusmod-tempor-incididunt-ut-labore-et-dolore-magna-aliqua-2/): ## News - [Rollbar to improve code with new AI-assisted workflows and automation-grade grouping](https://rollbar.com/news/rollbar-to-improve-code-with-new-ai-assisted-workflows-and-automation-grade-grouping/): Rollbar wants to shift developers’ focus to continuously improving code, instead of having to continuously fix it. - [Rollbar powers AI-assisted workflows with new grouping engine](https://rollbar.com/news/rollbar-powers-ai-assisted-workflows-with-new-grouping-engine/): Rollbar, providers of the Continuous Code Improvement Platform, is introducing AI-assisted workflows powered by its new automation-grade grouping engine, enabling... - [Rollbar Lets Developers Focus on Continuously Improving Code with AI-Assisted Workflows and Automation-Grade Grouping](https://rollbar.com/news/rollbar-lets-developers-focus-on-continuously-improving-code-with-ai-assisted-workflows-and-automation-grade-grouping/): Rollbar, providers of the Continuous Code Improvement Platform, today announced AI-assisted workflows powered by its new automation-grade grouping engine. - [Rollbar Announced AI-Assisted Workflows](https://rollbar.com/news/rollbar-announced-ai-assisted-workflows/): Rollbar announced AI-assisted workflows powered by its new automation-grade grouping engine. - [Rollbar rolls out service to improve error detection for developers](https://rollbar.com/news/rollbar-rolls-out-service-to-improve-error-detection-for-developers/): Rollbar Inc. today updated its Continuous Code Improvement Platform with a new “automation-grade grouping engine”... - [Rollbar Acquires Hungary-Based Samebug](https://rollbar.com/news/rollbar-acquires-hungary-based-samebug/): Rollbar announced it has acquired Hungary-based Samebug - [Lolapps engineers launch Rollbar](https://rollbar.com/news/lolapps-engineers-launch-rollbar/): Brian Rue and Cory Virok launch an error tracking platform for developers. ## Tradeshows ## Webinars - [Speeding Up Software Delivery: You're Only As Good As Your Weakest Link](https://rollbar.com/webinar/speeding-up-software-delivery-youre-only-as-good-as-your-weakest-link/): Learn about the trends in DevOps and modern application architectures, and the common challenges enterprises face as they try to... - [CircleCI and Rollbar on enabling Continuous Delivery](https://rollbar.com/webinar/circleci-and-rollbar-on-enabling-continuous-delivery/): Join CircleCI CTO Rob Zuber and Rollbar Co-founder and CTO Cory Virok as they discuss 9 questions about continuous delivery. - [Debugging Apex Applications with Error Monitoring](https://rollbar.com/webinar/debugging-apex-applications-with-error-monitoring/): Rollbar is the first company bringing the value of modern Error Monitoring and Debugging to the Apex ecosystem and to... - [Maximize Your Workflow Through the Clubhouse API](https://rollbar.com/webinar/maximize-your-workflow-through-the-clubhouse-api/): Learn how the Clubhouse API can give you a greater amount of control over your data and help automate your... - [Advanced Error Monitoring & Debugging With Rollbar](https://rollbar.com/webinar/advanced-error-monitoring-debugging-with-rollbar/): Rollbar helps developers deploy better software, faster, with solutions that identify, prioritize and resolve coding errors. Join Rollbar's product experts... - [Smart Error Monitoring for Spring Developers](https://rollbar.com/webinar/smart-error-monitoring-for-spring-developers/): Nobody likes to find out about errors from the customers themselves. The ripple effect of churn from a single user... - [Best Practices for Moving from a Monolith to Microservices](https://rollbar.com/webinar/best-practices-for-moving-from-a-monolith-to-microservices/): Transitioning from a Monolith to a Microservices architecture can take years to complete. Companies are under more pressure than ever... --- # # Detailed Content ## Pages ### How to Handle “IndexError: index out of range in self” in PyTorch > Incorporate index validation, masking strategies, and stringent data validation in your PyTorch code to prevent or avoid this error altogether. - Published: 2023-10-05 - Modified: 2023-10-13 - URL: https://rollbar.com/blog/how-to-handle-index-out-of-range-in-self-pytorch/ - Categories: Code Tutorials, Python - Tags: Python The popular deep learning and natural language processing framework PyTorch is renowned for being user-friendly and adaptable, so what’s the deal with the IndexError: index out of range in self error? This happens when a PyTorch embedding tensor attempts to access an index that is out of bounds. A lookup table that converts integers into vectors of real numbers is known as an embedding tensor. The valid indices for this tensor, which has a predetermined vocabulary size, run from 0 to vocabulary_size - 1. What causes the "IndexError: index out of range in self" error? This error is one of the most frequent in PyTorch and it mainly happens for two reasons. 1. Attempting to access out-of-range indices The most frequent cause of this error is attempting to access an index that is larger than the embedding layer's permitted vocabulary size. For instance: import torch # Create an embedding layer with a vocabulary size of 10 and an embedding dimension of 5. embedding = torch. nn. Embedding(10, 5) # Create an input tensor with an index that is out of bounds. input_tensor = torch. tensor # Try to access the embedding tensor using the out-of-bounds index. output_tensor = embedding(input_tensor) Output: When the above code is run, you get the following error (the code was run in Google Colab): —----------------------------------------------------------------------- IndexError Traceback (most recent call last) in 9 10 # Try to access the embedding tensor using the out-of-bounds index. —-->11 output_tensor = embedding(input_tensor) _________________________________________ 2 frames_____________________________________________________________________ /usr/local/lib/python3. 10/dist-packages/torch/nn/functional. py in... --- ### How to Handle the "localStorage is not defined" Error in JavaScript > From unsupported browsers to server-side JavaScript environments, understand the root causes and learn three ways to handle this error effectively. - Published: 2023-10-05 - Modified: 2023-11-13 - URL: https://rollbar.com/blog/how-to-handle-localstorage-is-not-defined-error-javascript/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript The localStorage is not defined error generally occurs when you try to access the localStorage object in JavaScript, but the browser environment where your code is running does not support it. Using the localStorage web storage API, web applications can store key-value pairs locally in a web browser, allowing you to persistently retain data on the client-side even if the user shuts their browser or navigates away from the website. What causes the “localStorage is not defined” to occur The localStorage is not defined error can occur for several reasons, such as: Unsupported Browsers: Some older browser configurations might not support localStorage. So it’s a good option to either check the compatibility before using the browser or move to the latest version of the browser. Using ‘localStorage’ in Node. js: Since Node. js is a server-side JavaScript environment, it doesn’t have access to the browser's localStorage API. Therefore, using localStorage in Node. js might throw an error. For example: try { localStorage. setItem('key', 'value'); } catch (error) { console. error(error. message); //raises the error } Output: PS D: \BackEnd> node index. js localStorage is not defined Using ‘localStorage’ in React. js: Native apps do not have access to the browser's localStorage API, so you will get an error. Using ‘localStorage’ in Next. js: When using Next. js during server-side rendering, you do not have access to localStorage. When using a pre-built library or framework: If a library or framework that uses localStorage is executed in an environment where it is... --- ### How to Resolve “ReferenceError: Buffer is not defined” in Node.js > Check you're running the script with Node, not in the browser, and that you've mentioned the Buffer object before use. Also use the latest Node version. - Published: 2023-10-05 - Modified: 2023-10-05 - URL: https://rollbar.com/blog/how-to-resolve-referenceerror-buffer-is-not-defined/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript, Node.js Let me guess. You’re managing I/O activities and encountered this error? What happened is either: You’re using the Buffer class in a browser environment. Only Node. js, a server-side JavaScript runtime environment, offers the Buffer class. This error will appear if you attempt to use the Buffer class in a browser. The Buffer class is not supported by the version of Node. js you are running. The later versions of Node. js (4. x) included the Buffer class. The ReferenceError: Buffer is not defined error could appear if you are using an older version of Node. js. In Node. js, a buffer containing unprocessed binary data is represented by a global object called Buffer. For operations like reading from or writing to files, managing network packets, and encoding and decoding data, the ability to store and interact with binary data is quite useful. Therefore, when you attempt to use the Buffer class in Node. js but it is not available, ReferenceError: Buffer is not defined occurs. Example of “ReferenceError: Buffer is not defined” Buffer in Browser Now, the ReferenceError: Buffer is not defined error will be logged to the browser's developer console when you access this HTML file in a web browser. This is due to the fact that the Buffer class is exclusive to Node. js and is not accessible in a typical browser setting. Output: ReferenceError: Buffer is not defined at example. html:11:32 (anonymous) @example. html:16 How to resolve the “ReferenceError: Buffer is not defined” error You can... --- ### Your Tokens, Your Control - Published: 2023-10-03 - Modified: 2023-10-05 - URL: https://rollbar.com/blog/your-tokens-your-control/ - Categories: product A New UI That Works as Fast as You Do In today’s fast-paced development environment, managing your project access tokens efficiently is more crucial than ever. That’s why we're excited to unveil a series of upgrades to Rollbar’s Project Access Token user interface to streamline your workflow and enhance your project’s security. Intuitive Status Indicators for Better Token Management One of the key updates we're introducing is the addition of token states, specifically 'Expired' and 'Expiring Soon' states. These states are designed to offer a quick and intuitive understanding of your tokens’ status. No more scouring through your list of tokens trying to figure out which ones need attention; now, a glance is all it takes. Bulk Editing: Efficiency, Supercharged Managing multiple tokens can be tedious, especially when each requires individual attention. That's why we’ve added the bulk editing feature. With just a few clicks, you can select multiple tokens and perform actions like 'Disable,' ‘Expire,’’ 'Regenerate,' or 'Delete. ' Whether you need to make large-scale changes or quickly adapt to new requirements, this feature is designed to make your life easier. Securing Your Tokens Post-Security Incident Our commitment to your project's security is unwavering, even more so in light of the recent data breach. The enhanced UI and new token states are our immediate response to help you manage your tokens securely and efficiently. While we're doubling down on our security measures to prevent such incidents in the future, we also want to equip you with the tools to... --- ### Brian's story with Rollbar > Rollbar enabled our small team to support a large number of client applications in production. Their monitoring software works initially with almost no configuration and also allows for detailed customization for our clients at scale. We have stuck with rollbar on other stacks beyond Rails including iOS and Android as have a great, easy to use interface that always has the information devs needs to debug production issues. - Published: 2023-10-03 - Modified: 2024-04-15 - URL: https://rollbar.com/blog/brians-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Brian Samson Technologist, Entrepreneur, and CTO Brian has now been using Rollbar for 100 months! 1. My Role Ten Forward signed up with Rollbar in 2016 and began using it on a single client project. By 2023 we had rollbar deployed across more than 21 client projects that we managed, and 6 additional clients had become large enough that they signed up for their own paid Rollbar accounts and granted us access. As early as 2020 we positioned Rollbar as a "must-have" vendor for our clients - the service was extremely valuable and the cost was low enough that our clients did not balk at signing up and entering a credit card. 2. My Passion in the Role Many of our clients are small, local businesses who are not "tech startups" but instead use technology, specifically software, to grow, support, and maintain their existing business. These companies often have small margins and no room for full time technical ops staff. Rollbar has allows us to provide critical services with very low downtime, which is extremely cost effective for this class of clients. 3. The Rollbar Experience Rollbar enabled our small team to support a large number of client applications in production. Their monitoring software works initially with almost no configuration and also allows for detailed customization for our clients at scale. We have stuck with rollbar on other stacks beyond Rails including iOS and Android as have a great, easy to use interface that always has the information devs needs... --- ### Sébastien's story with Rollbar > But what's kept me a loyal Rollbar user? It's the trustworthiness of the tool. In an age where alert fatigue is real, Rollbar's machine learning-driven grouping ensures we only get alerts that matter. The seamless integrations with other tools and the detailed, actionable alerts mean we can resolve issues faster, ensuring our users always get the best experience. - Published: 2023-10-03 - Modified: 2024-04-15 - URL: https://rollbar.com/blog/sebastiens-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Sébastien Scoumanne Co-Founder & CTO Sébastien has now been using Rollbar for 100 months! My Journey as CTO of Ring Twice and the Power of Rollbar In the ever-evolving world of technology, I've had the privilege of being at the helm of some truly transformative projects. Today, I'd like to share a bit about my professional journey, my passions, and a tool that has been instrumental in our operations: Rollbar. 1. My Role and Ring Twice I currently serve as the Chief Technology Officer (CTO) for Ring Twice. Originally known as ListMinut, Ring Twice is a pioneering platform in the collaborative economy space in Belgium. We connect individuals in need of assistance for everyday tasks with trustworthy neighbors ready to lend their expertise. Whether it's electrical work, gardening, personal assistance for the handicapped, or event photography, Ring Twice offers a diverse range of services. Our platform has seen significant growth over the years. We've expanded our service range, introduced new categories like "event" and "personal assistance," and made strategic decisions like removing the "others" category to ensure better accuracy and matchmaking between clients and service providers. 2. My Passion in the Role What truly excites me about my role at Ring Twice is the impact we create. We're not just a platform; we're a community. Every time a student offers tutoring services, a retiree shares their expertise in gardening, or a part-time employee assists with IT tasks, we're fostering connections and empowering individuals. The ability to leverage technology to create... --- ### Nacif's Story with Rollbar > Comprising a team of skilled software engineers, designers, and project managers, they have successfully developed multiple web applications for clients on all 6 continents. Leveraging technologies such as NodeJS, Ruby, Docker, and AWS, they emphasize rapid, high-quality, and efficient software development. The team believes in the combined strength of individual expertise and collaborative effort. They offer tailored solutions by understanding a client's business needs and are open to new collaborations. - Published: 2023-10-02 - Modified: 2024-01-31 - URL: https://rollbar.com/blog/nacif-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Nacif is a software consultancy specializing in building next-generation digital products with over 11 years of expertise. Comprising a team of skilled software engineers, designers, and project managers, they have successfully developed multiple web applications for clients on all 6 continents. Leveraging technologies such as NodeJS, Ruby, Docker, and AWS, they emphasize rapid, high-quality, and efficient software development. The team believes in the combined strength of individual expertise and collaborative effort. They offer tailored solutions by understanding a client's business needs and are open to new collaborations. 1. What company do you work for (describe their product/service) and what projects are you working on there? I work at Nacif which is a dev shop focused on developing web applications and mobile apps. Currently we are working on a project called Enzo Custom https://enzocustom. com/, which is a retailer on the Man fashion industry. 2. What are you most passionate about in your current and/or past roles? I love to be a part of the development of technology and the internet. As a kid, I've always wanted to be able to build software and complex applications, and I'm glad I'm able to do that now. I'm also passionate about the people I work with, I love to be able to help them grow and learn new things. 3. Is there anything in particular about Rollbar that has kept you a loyal user? Rollbar interface makes it very easy to spot the latest exceptions on the application, and when I need to... --- ### PLUM's Story with Rollbar > At PLUM, we focus on crafting custom software solutions tailored to specific needs. Our projects range from helping startups launch their initial products to assisting established enterprises in scaling and enhancing their software infrastructure. - Published: 2023-10-02 - Modified: 2024-01-31 - URL: https://rollbar.com/blog/plum-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories PLUM is a software company that specializes in creating tailored solutions We believe in teamwork, innovation, and delivering top-notch results. Our dedicated team is passionate about helping businesses grow with exceptional software. 1. What company do you work for (describe their product/service) and what projects are you working on there? At PLUM, we focus on crafting custom software solutions tailored to specific needs. Our projects range from helping startups launch their initial products to assisting established enterprises in scaling and enhancing their software infrastructure. 2. What are you most passionate about in your current and/or past roles? What I'm most passionate about in my role at PLUM is the opportunity to innovate and collaborate. Every project presents a unique challenge, and finding the best solution through teamwork and creativity is incredibly rewarding. I take pride in seeing our clients succeed and grow, knowing that our software played a part in that journey. 3. Is there anything in particular about Rollbar that has kept you a loyal user? Rollbar has been an invaluable tool for us. Its real-time error tracking and detailed insights allow us to catch and fix issues before they escalate. The ease of integration and the clarity it provides into our applications' health have made it an essential part of our development process. The proactive approach to error management that Rollbar offers ensures that we deliver the best quality software to our clients. Visit Plum's LinkedIn Page Visit WebSite --- ### Saved Views > We are introducing the ability to store a collection of applied filters as a named Saved View, so that users can quickly switch between different configured views of their items. - Published: 2023-09-27 - Modified: 2023-09-27 - URL: https://rollbar.com/blog/saved-views/ - Categories: product Saved Views On the new item list page, for Advanced and Enterprise customers we are introducing the ability to store a collection of applied filters as a named Saved View, so that users can quickly switch between different configured views of their items. For users with a large number of projects, switching between the different views of the data they are interested in can be a time-consuming manual process. To help resolve this, and to assist users in building up views of the data they are interested in, we have created the concept of a Saved View. When a combination of filters has been applied, a user can store that as a named Saved View. A particular view can be reapplied when a user wishes to see a specific view of the data again. Saved views are stored at the user level, so users can create and quickly switch between multiple views of the data that they find useful. Users can create, rename, update and delete Saved Views as required. --- ### How to Rotate Your Tokens > Before we dive into the specifics, let's understand what regenerating a token means. When you regenerate a token, you maintain the same scope(s), rate limits, and names. What changes is the access key and the created at date. We have added this to the name column so that you can quickly tell which access tokens are new. This will allow you to swiftly rotate tokens without going through the process of creating a new one. - Published: 2023-09-15 - Modified: 2025-04-22 - URL: https://rollbar.com/blog/rotate-tokens/ - Categories: product How to Rotate Your Tokens We take your data security seriously, and as some of you may be aware, we recently had a data breach affecting 'read' and 'write' scoped tokens. As a precaution, we've expired these tokens. Here's how you can regenerate them without breaking a sweat. What is Token Regeneration? Before we dive into the specifics, let's understand what regenerating a token means. When regenerating a token, you maintain the same scope(s), rate limits, and names. What changes are the access key and the created at date. We have added this to the name column so that you can quickly tell which access tokens are new. This will allow you to swiftly rotate tokens without going through the process of creating a new one. Regenerate Tokens on the Project Page Since we have expired all read and write tokens, we developed an easier way for you to regenerate your expired read and write tokens. When you navigate to your project's access token page, you'll find a banner informing you about the compromised tokens. Below the banner, you'll find two lists: one displaying your active tokens and another listing your expired tokens. To regenerate all expired tokens for that specific project, click "Regenerate All Tokens. " This action will not only regenerate all the expired tokens but also delete them. If you'd prefer to regenerate a specific expired token, just click on the "Regenerate Token" button next to it. Doing so will regenerate that token and remove it from... --- ### Next.js vs. React Performance > This performance comparison looks at rendering, static site generation, code splitting, and SEO. Make an informed choice for your frontend framework. - Published: 2023-09-12 - Modified: 2024-02-15 - URL: https://rollbar.com/blog/next-js-vs-react-performance/ - Categories: topics - Tags: next, react In the early days of the web, the idea of performance was relatively straightforward. Pages were static, and the most dynamic thing you might encounter was a blinking banner ad. But as the web evolved, so did our ambitions. Today it's not just about building web pages anymore; it's about crafting experiences. Load speed time and search engine optimization (SEO) matter just as much as the content on the page. Thus, the choice between React and Next. js is an important one, with real-world implications. Let's explore how the rendering techniques of these two frameworks impact performance, user experience, and SEO and crown a winner. Next. js vs. React Rendering Comparison When a user goes to your website, their browser has to wait for your server to send a bundle of code that their browser will then render. In a traditional React app, this process leans heavily on Client-Side Rendering. The server sends a minimal HTML structure with links to JavaScript files. The bulk of the rendering responsibility lies with the user’s browser, which fetches, interprets, and then displays the content. This can lead to a noticeable delay before the user sees the full, interactive page. Contrast this with Next. js, which emphasizes Server-Side Rendering. Here, the server does most of the heavy lifting. When a user requests a page, the content is “pre-rendered” on the server, resulting in a fully formed HTML page being sent to the browser. This means the user sees the content faster, although not yet... --- ### How to Fix “IndexError: List Assignment Index Out of Range” in Python > Think of it like trying to drop a letter into a non-existent mailbox. The index you are trying to use for assignment lies outside the valid index range of the list. - Published: 2023-09-06 - Modified: 2023-09-06 - URL: https://rollbar.com/blog/how-to-fix-indexerror-list-assignment-index-out-of-range-python/ - Categories: Code Tutorials, Python - Tags: Python The IndexError: List Assignment Index Out of Range error occurs when you assign a value to an index that is beyond the valid range of indices in the list. As Python uses zero-based indexing, when you try to access an element at an index less than 0 or greater than or equal to the list’s length, you trigger this error. It’s not as complicated as it sounds. Think of it this way: you have a row of ten mailboxes, numbered from 0 to 9. These mailboxes represent the list in Python. Now, if you try to put a letter into mailbox number 10, which doesn't exist, you'll face a problem. Similarly, if you try to put a letter into any negative number mailbox, you'll face the same issue because those mailboxes don't exist either. The IndexError: List Assignment Index Out of Range error in Python is like trying to put a letter into a mailbox that doesn't exist in our row of mailboxes. Just as you can't access a non-existent mailbox, you can't assign a value to an index in a list that doesn't exist. Let’s take a look at example code that raises this error and some strategies to prevent it from occurring in the first place. Example of “IndexError: List Assignment Index Out of Range” Remember, assigning a value at an index that is negative or out of bounds of the valid range of indices of the list raises the error. Example: my_list = my_list = 6 #... --- ### How to Fix the “Variable Might Not Have Been Initialized“ Error in Java > This error occurs when a variable in Java is used without assigning a value to it. Learn how to resolve it. - Published: 2023-09-06 - Modified: 2023-09-06 - URL: https://rollbar.com/blog/how-to-fix-variable-might-not-have-been-initialized-error-java/ - Categories: Code Tutorials, Java - Tags: java Variables in Java should always be initialized and assigned a value before use, otherwise you’ll get the Variable Might Not Have Been Initialized error. Imagine walking into a coffee shop and ordering your favorite latte. The barista nods, grabs a cup, and then just stares at it. Confused, you ask, "What's the matter? " The barista replies, "Well, you didn't tell me how much sugar you want! " That's Java's quirky way of saying, "Hey, you forgot to initialize this variable! " Just like our barista refuses to make a drink without knowing the sugar content, Java refuses to run code when a variable hasn't been given a value. It's Java's way of avoiding any bitter (or overly sweet) surprises in your code. Let’s take a look at some common scenarios that raise this error and strategies for handling it. What causes the “Variable Might Not Have Been Initialized” error Using Uninitialized Variables: Accessing or using a variable before assigning a value to it raises this error. Example: public class Example { public static void main(String args) { int x; int ans = x + 10; //using an uninitialized variable System. out. println(ans); } } Output: java: variable x might not have been initialized Conditional Initialization: If a variable is only conditionally initialized within certain code paths, accessing it without ensuring its initialization can lead to an error. Example: public class Example { public static void main(String args) { int x; int val = 2; if(val%2! =0) { x =... --- ### Item Detail Page Updates > We’ve been listening to all the great feedback we’ve received on the new item detail page, and we’re pushing changes to help make investigating and understanding Rollbar items easier, quicker, and more efficient.The most visible change is that the context graphs have been moved to a single full-width view on the desktop so that you can immediately see the patterns of when occurrences happened, helping to spot patterns in behavior that can give insights into causes. - Published: 2023-09-01 - Modified: 2023-09-01 - URL: https://rollbar.com/blog/item-detail-updates/ - Categories: product Making the Item Detail page quicker and easier to use Layout changes We’ve been listening to all the great feedback we’ve received on the new item detail page, and we’re pushing changes to help make investigating and understanding Rollbar items easier, quicker, and more efficient. The most visible change is that the context graphs have been moved to a single full-width view on the desktop so that you can immediately see the patterns of when occurrences happened, helping to spot patterns in behavior that can give insights into causes. This also means that the full-width stack trace is displayed directly beneath this in the Detail tab; we have also optimized the page load to make this appear quicker. After the Detail tab, the Summary tab displays summarized information from across the occurrences that make up an item to help investigate patterns within the occurrence data. Following the Summary tab, we will have the new Occurrences tab, which has moved away from being displayed in a slide over so that the individual occurrences can be investigated in detail if needed. We have aimed to reduce the vertical height of the page so that the graphs and stack trace are more visible - we have achieved this by moving the Service Links button to the top action bar and moving the context statistics to be displayed horizontally beneath the main header. We hope these changes make it easier for you to use the item detail page and resolve items more quickly. As... --- ### New Item List > We are proud to announce that we are starting to roll out access to the new version of the item list page. The new page has been redesigned, refreshed and rebuilt from scratch; the fresh new look and feel is mobile friendly and also brings a number of immediate new benefits compared to the legacy page. - Published: 2023-08-22 - Modified: 2023-08-23 - URL: https://rollbar.com/blog/new-item-list/ - Categories: product Introducing the new item list page for all Rollbar users We are proud to announce that we are starting to roll out access to the new version of the item list page. The new page has been redesigned, refreshed and rebuilt from scratch; the fresh new look and feel is mobile friendly and also brings a number of immediate new benefits compared to the legacy page. Access will be available through a header to allow users to switch to the new page, with the ability to switch back to the legacy page if needed. New page designs Desktop The desktop view has been redesigned to have a cleaner, fresher feel with updated filters and more prominent time selector. Mobile The new item list page has been designed with mobile in mind, allowing users to view and manage items from any device. Benefits of the new item list page compared to legacy page The following features have been developed alongside the new page, which are not available on the legacy page Redesigned filters The filters have been reviewed and made clearer: When the filter sidebar is closed to allow more space to view items and their details, the applied filters can be viewed and removed from the applied filter list: Select multiple owners A new feature on the page is the ability to select multiple owners - on the legacy page it was only possible to select a single owner, now multiple individual owners can be selected in the filters, as... --- ### Alfredo's story with Rollbar > One primary reason we utilize Rollbar is its ability to provide real-time feedback as soon as we deploy code to production. Aligned with the DevOps culture, we encourage our teams to deploy frequently, experiment, and embrace risks. Rollbar has proven invaluable in swiftly tracking errors in our production environment. Its feature allowing us to attach user identifiers empowers us to proactively reach out to affected customers once we've addressed bugs. Furthermore, Rollbar's ease of integration is unmatched, making it a seamless fit across all Audiense projects. - Published: 2023-08-17 - Modified: 2024-04-16 - URL: https://rollbar.com/blog/alfredos-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Alfredo Artiles Larralde Audiense Co-founder and CTO Alfredo has now been using Rollbar for 100 months! 1. What company do you work for (describe the product/service) and what projects are you working on there? I am the co-founder and CTO of Audiense, recognized as a leader in Audience Intelligence. Our software is enabling thousands of marketers and consumer researchers to be innovative and develop more relevant audience-centric strategies through proprietary social consumer segmentation, by providing insights on who consumers are and how to engage with them in the most meaningful way. Audiense unifies rich and varied social data to provide a better understanding of the unique cultures and changing social behaviors of consumer segments. Audiense makes it easier to rapidly understand and describe the real affinities and segments needed to define and deliver content and marketing to optimize engagement, campaign performance, and return on investment. 2. What are you most passionate about in your current and/or past roles? I've always been driven by the challenges and rewards that come with architecting scalable and resilient systems. Our distributed architecture, which manages high-volume transactions, is a testament to this. We've incorporated a robust stack that includes Scala, Spark, Node. js, Kafka, Clickhouse, Redis, MongoDB, RabbitMQ, Solr, and MySQL. Each technology was chosen meticulously to cater to specific demands, and seeing them work in harmony to handle real-time updates from over 2000 million social profiles is incredibly fulfilling. Moreover, we've embarked on refining our software development process, aligning with best practices such as... --- ### Item Summarization > Our new item summarization feature introduces a more profound complexity accessible through two areas - the new summary tab and the typicality value found within the details tab. The summary data provides an overview of the data found within each parameter value, while the typicality value indicates how typical an individual occurrence’s parameter is within all the occurrences in the item. While these elements hold the potential for greater insight, the sheer volume of occurrences and the varying nature of parameters can create a maze of information. This may lead to missed patterns, incorrect interpretations, or extended investigation time. - Published: 2023-08-14 - Modified: 2023-08-14 - URL: https://rollbar.com/blog/item-summarization/ - Categories: product - Tags: Summarization Introducing Item Summarization We are happy to announce the release of item summarization - a powerful tool to help users understand and utilize the data contained within the occurrences that make up an item. Organizations and engineers often deal with many occurrences within an Item when investigating underlying causes. With such vast amounts of data, spotting patterns and insights can be incredibly challenging and time-consuming. Even with a comprehensive occurrences table, the specific details and typicality of individual occurrences can be difficult to interpret, leading to delays and potential confusion and delays in the investigation process. Our new item summarization feature introduces a more profound understanding of the complexity within the occurrence data, accessible through two areas - the new summary tab and the typicality value found within the details tab. The summary data provides an overview of the data found within each parameter value, while the typicality value indicates how typical an individual occurrence’s parameter is within all the occurrences in the item. While these elements hold the potential for greater insight, the sheer volume of occurrences and the varying nature of parameters can create a maze of information. This may lead to missed patterns, incorrect interpretations, or extended investigation time. Item summarization offers an elegant solution to make use of this maze of data. In the new summary tab, users can see the top 3 values within each summarized key:value pair and the proportion of occurrences with each particular value. By assisting in ruling in or out the... --- ### React.js vs. Next.js: Which Framework is Better, and When? > In the ever-evolving world of web development, staying stagnant isn’t an option. Learn the pros and cons of these two giants of front-end frameworks. - Published: 2023-08-14 - Modified: 2024-02-15 - URL: https://rollbar.com/blog/react-js-vs-next-js/ - Categories: topics - Tags: JavaScript, next, react When React arrived on the scene in 2013, it quickly became the darling of developers by making everything about UI delightful and component-y. Yet as millions embraced React, they also demanded more than just delightful UI. Developers craved snappier performance and better search engine optimization (SEO). That's when Next. js waltzed in, whispered "server-side rendering," and changed the game. Next. js builds on React's legacy and takes it to new horizons. But what does this evolution mean for the everyday developer? How does one navigate the nuances between React and Next. js? And perhaps most importantly, when should you choose one over the other? These are not mere academic questions, but ones that have tangible implications for website performance, user experience, search engine rankings, and overall project success. In this article, we'll unpack the journey from React to Next. js, delve into the unique strengths each brings to the table, and provide insights to guide your next project decision. What is React? React is an open-source, front-end JavaScript library that was originally created at Facebook to address challenges that they had in building and maintaining complex user interfaces. Since open-sourcing it, React has grown immensely popular in the developer community thanks to its effective management of state and the creation of reusable UI components. React's virtual DOM speeds up rendering by updating only the user interface elements that have changed, making interactions faster and more fluid. Example: How to Create a Simple Counter App in React Create a React app... --- ### How to Integrate ChatGPT with React > Unlock the potential of AI in your React apps. From signing up to the OpenAI API to writing React code, our step-by-step tutorial has got you covered. - Published: 2023-08-14 - Modified: 2023-09-22 - URL: https://rollbar.com/blog/how-to-integrate-chatgpt-with-react/ - Categories: Code Tutorials, JavaScript - Tags: OpenAI, react If you're not thinking about integrating AI into your apps, you're missing out. In this tutorial, we will walk you through how to set up a React app that harnesses the vast knowledge of ChatGPT via the OpenAI API, allowing you to take your UI components to a whole new level. Step 1: Sign up for the OpenAI API To use the ChatGPT language model in a React app, first go to https://beta. openai. com/signup/ and sign up to get an API key that you will use to authenticate your requests. Sign up for the OpenAI API Step 2: Setup the development environment Create an empty folder, for instance ‘chat-gpt-app’, and open it in an IDE like VSCode. Now open the terminal in VSCode and type the below command to create a Vite app with a React template. npm create vite@latest app -- --template react The below folder structure will be created: Setup the ChatGPT development environment Now enter the following command in the VSCode console to access the app folder: cd app Run the npm install. npm install To build your chat interface, you'll also need to install the chatscope UI kit. npm install@chatscope/chat-ui-kit-react Step 3: Write React code to connect to the OpenAI API Now enter the following code into the App. jsx file located within the src folder: import { useState, useEffect } from 'react'; import '. /App. css'; import '@chatscope/chat-ui-kit-styles/dist/default/styles. min. css'; import { MainContainer, ChatContainer, MessageList, Message, MessageInput, TypingIndicator, } from '@chatscope/chat-ui-kit-react'; const API_KEY ="YOUR_API_KEY_HERE"... --- ### Diego's story with Rollbar > Having readily available, almost plug-and-play libraries to add Rollbar in our apps, and being rock solid for all these years it's what seals the deal for me. Also, the ability to easily connect Rollbar to our monitoring system and alerting is one of the most helpful things that it provides for us. - Published: 2023-08-09 - Modified: 2024-04-16 - URL: https://rollbar.com/blog/diegos-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Diego Fernández Engineering Manager Diego has now been using Rollbar for 100 months! 1. What company do you work for (describe the product/service) and what projects are you working on there? I work for BeBanjo, now part of MEDIAGENIX (https://www. mediagenix. tv/bebanjo/). We build products to help manage editorial and availability information for video-on-demand content. We offer our products as a service (SaaS) just like Rollbar, but we do plenty of integrations with our customer's systems or 3rd party services. I work as an Engineer Manager in the team in charge of such integrations, the Projects Team. 2. What are you most passionate about in your current and/or past roles? I'm in a manager position now, so my main focus is to help the development team perform in the best way possible. To do so it's imperative to provide guidance on how people can grow professionally, so I really like to mentor and foster a culture where people can feel that they are becoming better at their job while maintaining a healthy relationship with it. 3. Is there anything in particular about Rollbar that has kept you a loyal user all this time? Having readily available, almost plug-and-play libraries to add Rollbar in our apps, and being rock solid for all these years it's what seals the deal for me. Also, the ability to easily connect Rollbar to our monitoring system and alerting is one of the most helpful things that it provides for us. --- ### Using JavaScript source maps to debug errors - Published: 2017-02-13 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/using-javascript-source-maps-to-debug-errors/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript Some of the most common questions we get here at Rollbar deal with source maps: What are source maps and what do they do? How can you enable source mapping? Why aren't your source maps working properly? Let's explore Javascript source maps together, starting with the basics. {: . highlightbox} Existing Rollbar users, go to our JavaScript source maps documentation to get started. As web developers, we have two major goals. First, we want a highly performant website. Second, we want that website to be easy to debug and maintain. Unfortunately, these goals are often at odds with one other. If we minimize our JavaScript, we can achieve some of these goals. Minimizing JavaScript reduces the download size, and the smaller the payload for our website users, the better. If we combine our JavaScript files, we can also reduce the number of http requests. For a highly performant website, we want to reduce the number of requests the browser has to make in order to fully load, render, and process the page. Furthermore, with transpilers, we can start using new JavaScript features before they are implemented by the browsers. Unfortunately, minimizing JavaScript also comes with some downsides: it's hard to debug, and we lose original filenames, line numbers, and column numbers. Luckily, source maps solve this problem. A source map is a file that provides a mapping from the minified line and column numbers back to the original file, line, and column. Source maps use Base64 VLQ encoding to reduce... --- ### How GorillaStack used Rollbar to level up logging with the Serverless framework - Published: 2017-02-07 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/how-gorillastack-used-rollbar-to-level-up-logging-with-the-serverless-framework/ - Categories: product - Tags: integrations Our friends at GorillaStack wanted to share how they set up Rollbar with the Serverless framework, and made a handy tool so you can do the same. Here at GorillaStack, we are big lovers of the Serverless framework. By default, the Serverless framework uses CloudWatch logs to store any system log messages and output from your lambda code. Pretty quickly, we found ourselves needing to escalate log messages such that we could be notified of application errors and act on them more proactively. Enter Rollbar. I have been using their service on many side projects since discovering their free tier some years ago. We also robbed them of almost all their swag at the last re:Invent conference. Rollbar is a great system to use for escalating errors and messages from your applications. Best of all, there are options for adding it as a transport for popular logging solutions. As users of the node module 'winston', we found a transport available for Rollbar. Unfortunately, it wasn’t quite up to date, and didn’t format certain argument orders correctly, so we forked it ourselves. :) https://github. com/GorillaStack/winston-rollbar Using this integration with your application logging library, messages of all levels will still be logged to CloudWatch logs, but those at or above a configured log level will be escalated to Rollbar, which will then notify you of application errors as they occur. As we usually do, we decided to publish an open source example to demonstrate our approach. To get started, the only thing... --- ### Connect Rollbar to your source code and issues in GitLab - Published: 2017-01-31 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/connect-rollbar-to-your-source-code-and-issues-in-gitlab/ - Categories: product - Tags: integrations Good news for GitLab users! You can now deep link error stack traces in Rollbar directly to the code in your GitLab repos. Rollbar now supports GitLab's native issue tracking features, allowing you to seemlessly debug and manage new issues as they happen in your existing workflow. We’ve rolled out support for source control for both GitLab. com and self-hosted. Issue tracking only supports GitLab. com, self-hosted support is coming soon. Linking source code in GitLab to Rollbar stack traces (/docs/gitlab/" alt=""> Whenever Rollbar detects errors in your application, you receive a detailed stack trace. By connecting your GitLab repos, you can also click through from the stack trace in Rollbar directly to the underlying code that broke in GitLab. It's like having x-ray vision for your application errors. Turn errors in Rollbar into trackable issues in GitLab (/docs/gitlab/" alt=""> (/docs/gitlab/" alt=""> (/docs/gitlab/" alt=""> Rollbar now supports GitLab issue tracker. It's a fairly straightforward integration: When viewing an error in Rollbar, simply click the "Create GitLab Issue" button to send the error details to GitLab. You can also link an error in Rollbar to an existing GitLab Issue, by copying and pasting the URL for the GitLab Issue you would like to link. When you connect Rollbar and GitLab together, your debugging and error monitoring will become much more efficient. For more information, visit our GitLab documentation or press release for details. Level up your issue and error tracking workflow when you connect Rollbar to GitLab. GitLab users, signup and... --- ### Sam's story with Rollbar > I've used Rollbar in all my apps for 10+ years. What is great about Rollbar is that it works just as well for a relatively simple web app like Addressable as it does for complex, enterprise web apps like ReadyTech. - Published: 2023-08-09 - Modified: 2024-04-16 - URL: https://rollbar.com/blog/sam-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Sam Giffney Chief Information Officer Sam has now been using Rollbar for 100 months! 1. What company do you work for (describe the product/service) and what projects are you working on there? I'm the CIO at ReadyTech www. readytech. com. au. ReadyTech make mission critical SaaS for people-centric businesses in vertical markets such as education, employment, and local government. I'm leading our cloud, information security and platform engineering teams. We're currently working on how we can leverage the latest in large language model technologies to provide copilot functionality for case managers in our return-to-work product. This is exciting as we believe we can add massive efficiencies that improve outcomes for many jobseekers. 2. What are you most passionate about in your current and/or past roles? At ReadyTech, we have many teams building many complex systems and are constantly growing. I enjoy the challenge of scaling a high performing technology organisation. I have always loved building software. My current role in leadership doesn't allow for much time on the tools but I do have some side projects which keep me hands on after hours. One is www. addressable. dev, which provides a simple RESTful API for address autocompletions in Australasia. 3. Is there anything in particular about Rollbar that has kept you a loyal user all this time? I've used Rollbar in all my apps for 10+ years. What is great about Rollbar is that it works just as well for a relatively simple web app like Addressable as it does... --- ### Rollbar integration for the Ionic framework - Published: 2017-01-06 - Modified: 2025-02-19 - URL: https://rollbar.com/blog/rollbar-integration-for-the-ionic-framework/ - Categories: Code Tutorials - Tags: SDK Our friends at Cuttlesoft wanted to share how they use Rollbar to detect errors in Ionic built applications. Enjoy! At Cuttlesoft, we use Rollbar's excellent full-stack error monitoring service for pinpointing and fixing tricky bugs. Our team loves Rollbar for its integrations with other popular services (we get our error notifications via Slack so we’re constantly in the know). For building hybrid mobile and progressive web apps, we generally rely on Ionic. Ionic is an open-source framework for hybrid mobile app development maintained by Drifty. Built with AngularJS and Cordova, Ionic is a popular tool for mobile developers everywhere. To combine these two, we've developed a method for integrating Rollbar error tracking with the Ionic stack. We find it so useful that our co-founder and CTO Emily Morehouse wrote a tutorial for using our method of integration so that you too can harness the bug-squashing power of Rollbar + Ionic. Using just a few tools, we'll show you how to make Rollbar work in perfect sync with Ionic. Since Ionic is a hybrid framework, there are a few different services where Rollbar needs to be plugged in: Native iOS Native Android JavaScript To do this, we'll use a few different plugins that help monitor each OS and stack layer. We'll use Emily Morehouse's fork of the Cordova Rollbar plugin to catch native errors, and the ng-rollbar AngularJS plugin to catch our Ionic application errors. Now, let's dive in. The first (and easiest) plugin to set up is the Cordova plugin,... --- ### How to Fix the “List Index Out of Range” Error in Python Split() > When accessing an index that does not exist within the valid range of entries in a list in Python, the "List Index Out of Range" exception is raised. - Published: 2023-08-04 - Modified: 2023-08-17 - URL: https://rollbar.com/blog/how-to-fix-list-index-out-of-range-in-python/ - Categories: Code Tutorials, Python - Tags: Python One of the most common operations in Python is splitting strings into lists based on a specified delimiter. However, when using split, you may encounter the error List Index Out of Range . This guide will unpack what this error means, why it occurs, and some common strategies to prevent it. What Causes the “List Index Out of Range” Error 1. Incorrect Index Usage This happens when using a negative index that exceeds the range of valid negative indices or trying to access an index greater than or equal to the length of the list of substrings. Example code: Incorrect Index Usage # Incorrect index usage causing the error sample_string = "apple,banana,mango" delimiter = ',' # Splitting the string into a list of substrings fruits = sample_string. split(delimiter) # Accessing an index greater than or equal to the length of the list print(fruits) In the above example, the sample_string is split using the delimiter , . As a result, the split method returns a 3-element list . Now, when accessing an element at index 5 in the list of fruits, it results in the List Index Out of Range error because index 5 exceeds the valid range of indices and causes the IndexError to be raised. Output: Traceback (most recent call last): File"C:\Users\name\AppData\Local\Programs\Python\Python311\check. py", line11, in print (fruits IndexError: list index out of range 2. Invalid or Missing Delimiter Using an invalid delimiter for the split operation leads to an incomplete or incorrect split, and if the delimiter doesn't exist,... --- ### Better workflows for managing errors - Published: 2016-12-21 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/better-workflows-for-managing-errors/ - Categories: product - Tags: triage Happy Holidays Rollbar users! We're gifting you a handful of updates to a key feature in Rollbar, the Live Error Feed. We recently rolled out some improved fucntionality to the Live Error Feed, most notably the ability to quickly view and assign ownership of errors with your team. Instantly know who's working on what and ensure that urgent production issues don't get overlooked. Here's an overview of how these updates will help you and your team members better manage errors in Rollbar: Assign individual errors directly within the feed Multi-select and assign errors Filter to view all assigned or unassigned errors Filter by owner Quickly Resolve and Mute errors Easily change severity of errors Improved look and feel By streamlining the live error feed, we hope that you and your team will save more time in your day-to-day debugging efforts. We appreciate your feedback. Email support@rollbar. com and let us know if there's anything you think we could do better. If you haven’t already, signup for a 14-day free trial of Rollbar and let us help you defeat annoying errors in your applications. :-) --- ### Nicholas's story with Rollbar > Rollbar continues to be an invaluable tool in my day to day work at AppFolio. I have specifically enjoyed their responsiveness when I have encountered issues with the product. Recently, I was most impressed with Rollar's UI redesign as it showed a dedication to providing the best possible user experience. I often tell the story of when Rollbar first released the new UI that I encountered a bug and reported it on a Sunday to then have that bug fixed and in production the very next day! - Published: 2023-08-02 - Modified: 2024-04-16 - URL: https://rollbar.com/blog/nicholas-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Nicholas L. Staff Software Engineer Nicholas has now been using Rollbar for 100 months! 1. What company do you work for (describe the product/service) and what projects are you working on there? I currently work for AppFolio and I work specifically on the payment processing platform. 2. What are you most passionate about in your current and/or past roles? Working in payment processing is a uniquely challenging space in software development; It requires a level of attention to detail that is often far higher than most other spaces due to the precision required. This is the type of environment I thrive in as I am passionate about creating a consistent and dependable experience to the customer by developing a highly available, robust, and fault tolerant system. Using Rollbar, my team and I have been able to efficiently address issues in a timely manner as it is one of few irreplaceable tools we use to diagnose problems in real time. 3. Is there anything in particular about Rollbar that has kept you a loyal user all this time? Rollbar continues to be an invaluable tool in my day to day work at AppFolio. I have specifically enjoyed their responsiveness when I have encountered issues with the product. Recently, I was most impressed with Rollar's UI redesign as it showed a dedication to providing the best possible user experience. I often tell the story of when Rollbar first released the new UI that I encountered a bug and reported it on a... --- ### Ruby Exception Handling - Primer for Dealing with Errors in Ruby - Published: 2016-12-19 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/ruby-exception-handling-primer-for-dealing-with-errors-in-ruby/ - Categories: Code Tutorials, Ruby - Tags: ruby Ruby is a popular open source programming language that is highly flexible, and used for everything from basic "hello world" apps to sophisticated, dynamic programs. Whether you've been programming in Ruby for years or you're a complete beginner, tracking down errors in your Ruby app is simple and easy. Let's go through some basic Ruby error handling, and discover how easy it can be to integrate Rollbar into your Ruby app to automatically log and report your exceptions. Raise and Rescue Exceptions Ruby's default exception handling is to terminate the program in the event of an exception. That's not really useful when you're trying to build a complex web application for multiple users. Luckily there's a way around this - declaring exception handlers. Exception handlers are blocks of code that are called if an exception occurs in the execution of another block of code in your program. For the most basic Ruby exception handling, you need to know how to Raise and Rescue an exception. When you Raise an exception, you stop the normal flow of the program, and execute the code that deals with handling an error. This code can either deal with the error in some way, or terminate the program. If you provide a Rescue clause in your error handler, you can choose how to deal with the exception; without it, the program will simply terminate. Ruby Exception Hierarchy Ruby has a predefined Exception class, with quite a few subclasses that can be used for basic error... --- ### André story with Rollbar > Most of our applications use Ruby. Adding Rollbar to an application and seeing errors on the UI or sending notifications to our Slack channels is plug-and-play. It just works. - Published: 2023-08-02 - Modified: 2024-04-16 - URL: https://rollbar.com/blog/andre-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories André Luis Leal Cardoso Junior Principal Software Engineer André has now been using Rollbar for 100 months! 1. What company do you work for (describe the product/service) and what projects are you working on there? I work at RD Station, one of the largest SaaS companies in Latin America. I spend most of the time working on RD Station Marketing. Which is a marketing automation tool. Our customers can manage Email Marketing campaigns, landing pages, analytics, leads, etc. We handle tons of processes and data from our customers. 2. What are you most passionate about in your current and/or past roles? I'm crazy about software health and architecture. How can we build something that will need to keep evolving fast, have new features, and will be available for a long time, while still being uncomplicated for new software engineers. 3. Is there anything in particular about Rollbar that has kept you a loyal user all this time? We started using Rollbar for its simplicity and price back when we used to host our services on Heroku. Most of our applications use Ruby. Adding Rollbar to an application and seeing errors on the UI or sending notifications to our Slack channels is plug-and-play. It just works. Over time we also had to learn some valuable lessons. For example, grouping and managing the volume of errors is a must. An application that throws thousands of exceptions without care may be a maintenance hell and hold a lot of technical debts. The service... --- ### Nick's story with Rollbar > I am able to quickly and easily see what is going wrong with the platform and trace the errors across multiple environments when needed. A quick glance at the dashboard or items list can tell me if a deploy went smoothly, if the system is having some broader issues, or if users may be experiencing a degraded experience. - Published: 2023-08-02 - Modified: 2024-04-16 - URL: https://rollbar.com/blog/nicks-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Nick Mathis Lead Software Architect Nick has now been using Rollbar for 100 months! 1. What company do you work for (describe the product/service) and what projects are you working on there? I've worked with a few companies and projects that have used Rollbar. The largest and longest project was a fintech product focused on modernizing check writing. That was a Ruby on Rails project with a 10+ year history. Currently I'm working for a local startup that is focused on a B2B application for an internal process. We're also using Rollbar and it's been helpful, even pre-launch, to see what errors are happening in remote environments. 2. What are you most passionate about in your current and/or past roles? I love making software, or helping others make software that solves users needs and is a joy to use. Not all software is solving exciting problems, but even the most mundane task should leave users with a sense of "this worked, I had no hurdles, and everything was easy", even if the task is inherently boring or not exciting. Seeing users as people. and not just a feature consumer, helps tremendously. 3. Is there anything in particular about Rollbar that has kept you a loyal user all this time? I am able to quickly and easily see what is going wrong with the platform and trace the errors across multiple environments when needed. A quick glance at the dashboard or items list can tell me if a deploy went smoothly,... --- ### Join Rollbar at AWS re:Invent - Published: 2016-11-21 - Modified: 2025-02-19 - URL: https://rollbar.com/blog/join-rollbar-at-aws-reinvent/ - Categories: company - Tags: Events Join us this year at Amazon Web Services annual conference, re:Invent! Rollbar will be participating along side of Atlassian and other Atlassian ecosystem partners like StatusPage, Splunk, Puppet, Xmatters and Workato. We will all be in the Atlassian booth demonstrating how our solutions work better together. Come by and check it out - booth 2446. Come join us at the event and see how integrating Rollbar’s error monitoring with Atlassian’s products provides teams with: Instant error grouping and aggregation: Errors are grouped by root cause and linked to your source code within Bitbucket. Real-time notifications: Intelligent alerting rules configured for JIRA. Easy workflow and prioritization: Discover the most impactful errors with data and create issues in JIRA instantly with rich data, contextual details and error analytics. Faster time to resolution: Debug, deploy fixes and track regressions much faster when your error data moves through JIRA and Bitbucket automatically. We'd love to chat with you in person at AWS re:Invent. Make plans to stop by booth 2446 and say hi. We look forward to meeting you. --- ### David's story with Rollbar > I've used Rollbar for over 5 years now, across different roles and when I switched positions, it was one of the first tools I set up. It's enabled us to move quickly, secure in the knowledge that if any errors occur we will be the second to know.We're big fans of the slack integration -- and our incident response team leverages that heavily. - Published: 2023-08-01 - Modified: 2024-04-16 - URL: https://rollbar.com/blog/davids-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories David Bell Senior Software Engineer David has now been using Rollbar for 100 months! 1. What company do you work for (describe the product/service) and what projects are you working on there? I'm a senior software developer who currently works for Bold Collective, who provide digital ad services. The main project I'm working on is our ad server, which serves millions of ad impressions and clicks a month. We also perform real time fraud detection and provide analytics on our traffic. 2. What are you most passionate about in your current and/or past roles? I'm most passionate about problem solving and, in my current role, ensuring that our traffic is flowing through correctly and quickly. 3. Is there anything in particular about Rollbar that has kept you a loyal user all this time? Rollbar is incredibly helpful in minimizing downtime, resolving errors, monitoring warnings and preventing disruption to our traffic flow, which is ultimately the most important thing for Bold. I've used Rollbar for over 5 years now, across different roles and when I switched positions, it was one of the first tools I set up. It's enabled us to move quickly, secure in the knowledge that if any errors occur we will be the second to know. We're big fans of the slack integration -- and our incident response team leverages that heavily. The different message levels are an incredibly useful tool, enabling us to zoom in on behaviour when necessary. --- ### Deep link stack traces to Bitbucket and track Pipeline deploys - Published: 2016-11-14 - Modified: 2025-04-22 - URL: https://rollbar.com/blog/deep-link-stack-traces-to-bitbucket-and-track-pipeline-deploys/ - Categories: product - Tags: integrations Good news for Bitbucket users! You can now deep link error stack traces in Rollbar directly to the code in your Bitbucket repos. Rollbar also now integrates with Bitbucket Pipelines. Deep links to your source code in Bitbucket Configure Pipelines to notify Rollbar of new deploys Once Pipelines is configured, every deploy of your app will automatically be tracked in Rollbar. Making it easier to identify which code changes led to critical production issues. Rollbar integrates with the following Bitbucket features, Bitbucket Issue Tracker, and now Bitbucket repos and Bitbucket Pipelines. Don't forget Rollbar also integrates with other Atlassian products, like JIRA, HipChat and of course Bitbucket. Dealing with errors can be time consuming and often an interruption in your everyday development workflow. It's important that we continue to work to improve this process and that we extend the capabilities and insights of your current toolset and workflows. We hope that you enjoy the new integration options! Supercharge your issue and error tracking workflow when you connect Rollbar to Bitbucket. Sign up for a 14-day free trial of Rollbar and let us help you take control of your annoying production errors. --- ### Sebastian's story with Rollbar > Over the years, Rollbar has been a progressive partner, constantly evolving and improving with new features and better UX. I love the way we're able to integrate Rollbar as part of our engineering processes and with our other tools, to streamline our operations. - Published: 2023-08-01 - Modified: 2024-04-16 - URL: https://rollbar.com/blog/sebastians-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Sebastian Wallin CTO and co-founder of Castle Sebastian has now been using Rollbar for 100 months! 1. What company do you work for (describe the product/service) and what projects are you working on there? I'm the CTO and co-founder of Castle (castle. io). I oversee our technical platform and work closely to our customers to make sure we develop our product in the right direction 2. What are you most passionate about in your current and/or past roles? I'm passionate about using technology and software to solve important problems and change the ways we work for the better. 3. Is there anything in particular about Rollbar that has kept you a loyal user all this time? Over the years, Rollbar has been a progressive partner, constantly evolving and improving with new features and better UX. I love the way we're able to integrate Rollbar as part of our engineering processes and with our other tools, to streamline our operations. --- ### Correlate errors to feature rollout tests with Rollbar and Split - Published: 2016-11-03 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/correlate-errors-to-feature-rollout-tests-with-rollbar-and-split/ - Categories: product - Tags: integrations Our friends at Split wanted to let you know that you can now integrate Rollbar with Split. And take control of your error handling and feature rollouts - together. Enjoy! :-) Rollbar is an excellent error monitoring service that works across all of the languages Split supports. It’s great at telling you what’s going wrong and where, but doesn’t necessarily have all the details on why. That’s where Split comes in, with our new Rollbar integration. We built Split to help teams take control of their deployments by slowly delivering features to targeted groups of users. In this way you can limit the scope of trouble when things do go wrong, killing the feature until it’s fixed, then slowly rolling it out again. Our new integration brings rollout metadata from features in Split into the Rollbar interface, so teams can quickly correlate errors against the latest deployments. When it looks like a recently-released feature was responsible for the degradation of service, Rollbar users can click-through to Split to quickly take action, saving valuable time in the remediation process. Here's a a quick demo on how Rollbar and Split work together to make your controlled feature rollouts more productive. Like you, we care deeply about giving your end-users the best experience possible, and Split’s controlled rollouts paired with Rollbar’s robust error notification make delivering on that promise easy. Our Rollbar integration is free to customers of both services, and you can always try Split free for 30 days. To learn more,... --- ### When to Use Try-Except vs. Try-Catch > Python uses try-except, whereas languages like Java and C++ use try-catch. Here are the parallels and discrepancies you need to know to master both. - Published: 2023-07-31 - Modified: 2023-07-31 - URL: https://rollbar.com/blog/when-to-use-try-except-vs-try-catch/ - Categories: Code Tutorials, Java, Python - Tags: java, Python Are you confused when to use try-except versus try-catch? Both are popular mechanisms that gracefully handle unexpected situations. Both share a similar philosophy in syntax, where a block of code is 'tried,' and if an exception occurs, it's caught and handled in a designated way. There's one big difference between them though: try-except is for Python while try-catch is for Java. No matter what language you're more experienced in, here are the parallels and discrepancies you need to know to master both. How Are Try-Catch and Try-Except Blocks Similar? Both follow a similar syntactic pattern. You encase potentially error-prone code within a try block and then the catch and except blocks define actions to handle those errors. The syntax of the try-except block in Python is as follows: try: # some code here that might raise an exception except ExceptionType: # handle the exception here In Java, the syntax for the try-catch block is as follows: try { // some code here that might throw an exception } catch (ExceptionType e) { // handle the exception here } What Are the Differences Between Try-Catch and Try-Except? Besides the syntax difference in how you write each, there is also an additional else code block available in Python that is different. Python try: Code that might cause an exception. except: Code that handles the exception. else: Code that runs if the try block does not raise an exception. finally: Code that always runs, whether an exception occurred or not. Java try: Code... --- ### A better error monitoring workflow Rollbar + Atlassian - Published: 2016-10-12 - Modified: 2025-04-22 - URL: https://rollbar.com/blog/a-better-error-monitoring-workflow-rollbar-atlassian/ - Categories: product - Tags: integrations Dealing with errors can be time consuming and often an interruption in your everyday development workflow. It's important that we at Rollbar continue to work to improve this process and that we extend the capabilities and insights of your current toolset and workflows. Atlassian users can now rejoice! Debugging errors just got a whole lot easier and faster. With our latest improvements and integrations with Atlassian products you can now keep tabs on your application directly within the tools you're already using to build it. No more switching between multiple tools and services to debug and deploy code. Creating a seamless user experience and unified workflow around production errors. Integrating Rollbar’s error monitoring with Atlassian’s products provides teams with: Instant error grouping and aggregation: Errors are grouped by root cause and linked to your source code within Bitbucket. Real-time notifications: Intelligent alerting rules configured for HipChat and JIRA. Easy workflow and prioritization: Discover the most impactful errors with data and create issues in JIRA instantly with rich data, contextual details and error analytics. Faster time to resolution: Debug, deploy fixes and track regressions much faster when your error data moves through HipChat, JIRA and Bitbucket automatically. Take your production error monitoring to the next level and maintain your existing workflow. By integrating Rollbar with JIRA, HipChat and Bitbucket you can detect, diagnose and resolve errors in less than 2 minutes! By integrating Rollbar with JIRA, HipChat and Bitbucket you can Detect, diagnose and resolve errors in less than 2 minutes!... --- ### How to Resolve ChatGPT Rate Limit Errors > Bypass rate limit woes with our detailed guide. Discover how to monitor and manage your requests and troubleshoot issues without losing a beat in your tasks. - Published: 2023-07-31 - Modified: 2023-10-16 - URL: https://rollbar.com/blog/chatgpt-api-rate-limit-error/ - Categories: Code Tutorials, Java - Tags: java, OpenAI Ever get overwhelmed by a chatty best friend asking a lot of questions? That's what the ChatGPT API "Over the Rate Limit" error is like. It's telling you, "Woah, slow down! Let me take a sip of water before we continue. " In this guide, we will shed light on the rate limit and show you several ways to make your API requests more efficient to ensure you face as few interruptions as possible. What is the Rate Limit? ChatGPT’s API imposes a constraint on the number of times you can send requests or messages to the server within a given time period. This limitation is called the rate limit. There are actually two rate limits: RPM (requests per minute) TPM (tokens per minute) The below table showcases the default rate limits for ChatGPT’s API. Text & Embedding Chat Edit Image Audio Free trial users 3 RPM 150,000 TPM 3 RPM 40,000 TPM 3 RPM 150,000 TPM 5 images / min 3 RPM Pay-as-you-go users (first 48 hours) 60 RPM 250,000 TPM 60 RPM 60,000 TPM 20 RPM 150,000 TPM 50 images / min 50 RPM Pay-as-you-go users (after 48 hours) 3,500 RPM 350,000 TPM 3,500 RPM 90,000 TPM 20 RPM 150,000 TPM 50 images / min 50 RPM However, there is also an option to fill out the OpenAI API Rate Limit Increase Request form in order to increase your limit, in case you have higher rate limit requirements. What causes the “Over the Rate Limit” error? Simply put,... --- ### Rollbar add-on now available for JIRA - Published: 2016-10-10 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/rollbar-add-on-now-available-for-jira/ - Categories: product - Tags: integrations We’ve recently released a new JIRA Add-On to help extend your application error monitoring workflow. JIRA is one of the leading issue tracking solutions used by agile teams. Enabling them to plan, track, release and support building better software. Send rich error data to JIRA Connect Rollbar to JIRA and enhance issues with detailed error data like stack trace, error status, total occurrences, unique IPs affected, first seen date, last seen date and the date the error reoccurred and regressed. All conveniently displayed, linked and accessible within JIRA. Here are a few of the ways you can improve your monitoring workflow when you connect Rollbar with JIRA and install the new Rollbar for JIRA add-on: Link and display root cause exception data in issues. Set notification rules to automatically open new issues. Create and assign JIRA issues with a few clicks. Bidirectional syncing, update statuses in both Rollbar and JIRA. (/integrations/atlassian/" alt="jira-rollbar"> PRO TIP / REMINDER: Automatically (and manually) create JIRA issues from Rollbar errors when you configure JIRA as a Notification Channel in Rollbar. Supercharge your issue tracking when you use JIRA Notications + Rollbar for JIRA Add-On together. Check out our JIRA documentation for details. (/integrations/atlassian/" alt=""> To install the new Rollbar for JIRA add-on: In your JIRA account go to Admin > Add-ons Search for "Rollbar" Click "Install" on the Rollbar for JIRA add-on OR Go to our Atlassian Marketplace listing for JIRA Click 'Get it Now' We hope that by bringing Rollbar data into JIRA you... --- ### How to Use the ChatGPT API with Java > Today we're taking a deep dive into the fusion of two giants: the revolutionary ChatGPT and the long-standing warhorse of programming, Java. - Published: 2023-07-26 - Modified: 2023-08-18 - URL: https://rollbar.com/blog/how-to-use-chatgpt-api-with-java/ - Categories: Code Tutorials, Java - Tags: java, OpenAI Imagine harnessing the power of ChatGPT's human-like responses right from your Java code! It'd be like adding a supercharger to your already powerful engine. This step-by-step, hands-on guide (with full example code at the end) will show you exactly how to integrate, interact, and leverage this union so you can build smarter applications. Before you know it, you'll have Java and ChatGPT playing nice to deliver a user experience that's nothing short of mind-blowing. Step 1: Set up the development environment Install the Java Development Kit (JDK) if not already installed. Set up a Java project using your favorite IDE or command-line tools. Step 2: Sign up for the OpenAI API Go to https://beta. openai. com/signup/ and sign up to get an API key that you will use to authenticate your requests. Sign up for OpenAI API Step 3: Write Java code to connect to the OpenAI API Import necessary Java classes: Import the required classes for handling HTTP connections and I/O operations. Create a class named ChatGPTAPIExample: The main class where the integration code is written. Define the ChatGPT method: The method takes the user prompt as input and returns the response from ChatGPT. It sends the request to the ChatGPT API endpoint and then extracts the response. Define the necessary parameters: URL: The URL for the ChatGPT API endpoint. OpenAI API key: The OpenAI API key which is obtained in step 2. Model: The ChatGPT model that will be used. For example, gpt-3. 5-turbo . Create an HTTP... --- ### How CircleCI uses Rollbar to level up their continuous delivery - Published: 2016-09-22 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/how-circleci-uses-rollbar-to-level-up-their-continuous-delivery/ - Categories: company - Tags: customer-stories I'm excited to share a fun and insightful interview our friends at The Changelog recently did with Paul Biggar, Founder at CircleCI (and Rollbar super-user). We're big supporters and fans of The Changelog and we asked their host and master interviewer Adam, to help us produce a few short interviews with our customers. It's a fun project that lets us pull back the curtain and learn more about how our customers monitor their applications and processes for handling errors and deploying code. Enjoy! {: . highlightbox} Featured in this interview: Adam Stacoviak, Founder & Chief Editor at The Changelog, a podcast on software development and open source. Subscribe via iTunes or RSS. Paul Biggar, Founder of CircleCI, a leading continuous integration platform. Adam: Hey there. Adam here, editor-in-chief of Changelog. I'm here with Paul Biggar, founder of CircleCI (circleci. com) and we're gonna talk about how important Rollbar is to him and his team to help them deliver on their brand promise to ship better coder faster. Paul, tell me about CircleCI. What types of services do you provide? Paul: CircleCI is a continuous integration and continuous delivery platform. Our customers are the developers in an organization. Developers rely on us heavily as part of their deployment workflows. Adam: I guess deploying obviously is important. You've got the phrase 'ship it' for a reason, so it's a critical piece to an ops or developer organization to be able to ship code fast, ship code reliably. Paul: Right. The idea is... --- ### How to Use the ChatGPT API with Golang > This guide will take you step-by-step on how to bring together the text-generating wizardry of ChatGPT with the simplicity and efficiency of Golang. - Published: 2023-07-26 - Modified: 2023-08-18 - URL: https://rollbar.com/blog/how-to-use-chatgpt-api-with-golang/ - Categories: Code Tutorials, GoLang - Tags: golang, OpenAI ChatGPT is like that cool, incredibly talented artist every band wants to collaborate with. When you need something extra, something that will give your application a bit of zing, that's where ChatGPT comes in. It's got that rhythm that gets feet tapping. This guide will take you step-by-step on how to bring together the text-generating wizardry of ChatGPT with the simplicity and efficiency of Golang, opening up exciting new possibilities for crafting more intelligent applications. Before getting in the weeds with the steps though, here is the complete code block to call ChatGPT within Golang and get a response. package main import ( "encoding/json" "fmt" "log" "github. com/go-resty/resty/v2" ) const ( apiEndpoint = "https://api. openai. com/v1/chat/completions" ) func main { // Use your API KEY here apiKey := "YOUR API KEY HERE" client := resty. New response, err := client. R. SetAuthToken(apiKey). SetHeader("Content-Type", "application/json"). SetBody(mapinterface{}{ "model": "gpt-3. 5-turbo", "messages": interface{}{mapinterface{}{"role": "system", "content": "Hi can you tell me what is the factorial of 10? "}}, "max_tokens": 50, }). Post(apiEndpoint) if err ! = nil { log. Fatalf("Error while sending send the request: %v", err) } body := response. Body var data mapinterface{} err = json. Unmarshal(body, &data) if err ! = nil { fmt. Println("Error while decoding JSON response:", err) return } // Extract the content from the JSON response content := data. (interface{}). (mapinterface{}). (mapinterface{}). (string) fmt. Println(content) } Output: PS D: \chatgpt go> go run chatgpt. go Yes, the factorial of 10 is calculated as follows: 10! = 10... --- ### Improved ruby error reporting with our latest gem updates - Published: 2016-09-14 - Modified: 2023-01-19 - URL: https://rollbar.com/blog/improved-ruby-error-reporting-with-our-latest-gem-updates/ - Categories: product - Tags: ruby Recently, we released version 2. 13. 0 of the rollbar-gem. This update is full of new features and some minor bug fixes. The full release notes can be found here, Release 2. 13. 0. Here are a few of the highlights in this update: 1. Allow overriding configuration Many customers have asked to implement a way to override the default configuration for a specific block of code. Some of them use the same process to send reports to our API for different projects, some need to change the environment, and others want to use one async handler for a single block of code (or none at all). So, we've added a new method called Rollbar. with_config to do this. It receives a Hash object with the configuration overrides you want to use for the given block. The configuration options can be found at Configuration. The Hash passed to with_config should be formatted like {environment: 'specific-environment'}. For example: Rollbar. with_config(use_async: false) do begin # do work that may crash rescue => e Rollbar. error(e) end end This method looks similar to Rollbar. scoped, and Rollbar. with_config uses it internally. Now Rollbar. scoped can receive a second argument with the configuration overrides for the given block of code. So if you need to set a new payload scope and new config for a code block, you can write: scope = {context: 'foo'} new_config = {framework: 'Sinatra'} Rollbar. scoped(scope, new_config) do begin # do work that may crash rescue => e Rollbar. error(e)... --- ### Free Trial - Published: 2025-03-04 - Modified: 2025-03-05 - URL: https://rollbar.com/free-trial/sentry-survey/ --- ### Usage Notifications > We're thrilled to announce the launch of Rollbar's latest initiative to provide greater transparency and control over your occurrences. Our team has worked hard to address customers' feedback and concerns based on your occurrences and overages. We are excited to introduce a new level of observability to our platform. - Published: 2023-07-25 - Modified: 2023-07-26 - URL: https://rollbar.com/blog/account-usage-notifications/ - Categories: product - Tags: Usage Notifications Introducing Rollbar’s Usage Notifications Email and Slack Integration We are pleased to announce the latest upgrade to Rollbar’s usage visibility tools - a comprehensive notification system. Following our commitment to continuous improvement, this new feature will provide immediate alerts about usage milestones via email and Slack. The newly added 'Notifications' button can be found at the top right corner of the Rollbar usage page. It is the link to a slide-out panel with two distinct tabs, 'Email' and 'Slack. ' These sections enable account owners to customize and manage alerts, strengthening awareness and control over the usage status. Notably, notifications are triggered when usage hits critical milestones: 80%, 90%, 95%, and 100% of the account’s occurrence allotment. Users will find that the account owner's email is pre-set to receive notifications within the' Email' tab. However, the system is flexible to accommodate additional recipients. Up to ten more emails can be added simply by entering each address into the input field and selecting 'Add. ' Importantly, these additional emails are not required to be linked with other Rollbar account users. If the need arises to remove an email from the list, the process is straightforward: identify the email and click the adjacent red 'x' button. On the other hand, the 'Slack' tab caters to managing notifications sent via Slack. Before setting this up, ensuring that your Rollbar account is connected to your Slack workspace is crucial. After confirming that the Rollbar Slack bot is a member of the selected channel, you... --- ### 5 ways to reduce noise when logging your JavaScript exceptions - Published: 2016-08-16 - Modified: 2021-11-22 - URL: https://rollbar.com/blog/5-ways-to-reduce-noise-when-logging-your-javascript-exceptions/ - Categories: product - Tags: grouping Developing and maintaining user facing software is a challenge and a very distracting one at that. :-) Often times it can be difficult trying to stay focused on what matters most. It can be hard to tell what's really broken and why, with dozens of alerts notifying you every other minute. Volatile... The client-side being one of the most volatile of them all. When we attempt to capture errors in this environment we can very quickly get overwhelmed by lots and lots of noise. This noise is typically generated from many different places. Some examples would be old outdated browsers, browser extensions, third-party scripts, bots, spiders, etc. Rollbar's JavaScript error monitoring supports many different ways of reducing this noise so you can be more proactive in what and how you're collecting your JavaScript exceptions. 1. Ignore noisy errors on the client-side Rollbar. js supports the ability to ignore errors on the client-side. This option is really great because you have access to the entire payload and can filter by any value in it. By doing this the error will never be sent to the Rollbar API. This is supported via the checkIgnore configuration option. var _rollbarConfig = { ... checkIgnore: function(isUncaught, args, payload) { // Code here to determine whether or not to send the payload // to the Rollbar API } ... }; Let's break down the function value. First the parameters passed to the function. isUncaught: This is true if the error bubbled up to window. onerror or... --- ### Rollbar vs SmartBear Insight Hub | A Superior SmartBear Insight Hub Alternative for Error Monitoring - Published: 2025-01-14 - Modified: 2025-01-24 - URL: https://rollbar.com/vs/insight-hub/ --- ### Rollbar vs New Relic | A Superior New Relic Alternative for Error Tracking - Published: 2024-12-23 - Modified: 2024-12-23 - URL: https://rollbar.com/vs/newrelic/ --- ### SAML-based Single Sign-On (SSO) now available - Published: 2016-07-18 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/saml-based-single-sign-on-sso-now-available/ - Categories: product - Tags: security If your team uses Google Apps for Work or Okta, you can now access your Rollbar account using SAML-based single sign-on (SSO). SSO via Google Apps and Okta is available on all paid plans, and can be setup in minutes by an admin. Once SSO is enabled, users can access your Rollbar account with just a click from the Google App Drawer or Okta My Applications screen. Google App Drawer Okta My Applications If Google or Okta-based SSO is enabled on your account, then SSO options will show up on the login screen whenever you are prompted. Ready to set up SSO for your account? Check out our step-by-step documentation. --- ### Alison's story with Rollbar > Rollbar fulfills an important need for us with its grouping of items, so that we can track over long periods of time. This allows us to see trends, when issues started, how many of our customers are affected. We also find the integrations very helpful with slack messages of new items and ability to create jira issues with all the details from rollbar automatically included. - Published: 2023-07-24 - Modified: 2024-04-16 - URL: https://rollbar.com/blog/alisons-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Alison Gianotto Founder / Chief Mohawk Officer Alison has now been using Rollbar for 100 months! 1. What company do you work for (describe the product/service) and what projects are you working on there? I am the founder, lead developer and CEO of Grokability, Inc. We make the open source IT asset management software Snipe-IT (https://snipeitapp. com), and the email address validation system GoodForms (https://goodforms. com). Snipe-IT has been around for 10 years, and aims to provide a low-cost IT asset management platform that you don't have to be a rocket surgeon to use, but is flexible enough to customize to your own bespoke IT needs via our powerful REST API. You can download and run Snipe-IT yourself for free, or you can sign up for a hosted version where we take the hassle out of maintaining yet another server. GoodForms is an email address validation and certification platform that allows websites that contain email address forms ensure that the emails they collect are actually deliverable. With one line of javascript, you can be sure that the email addresses submitted are real, which prevents accidental typos (because who among us hasn't fat-fingered their own email before) and also protects your IP address reputation. 2. What are you most passionate about in your current and/or past roles? Open source is critical to Grokability, so I'm very passionate about open sourcing everything we can while building an ethical, compassionate company. I've been a contributor in open source for over 25 years and... --- ### Rollbar vs DataDog | A Superior DataDog Alternative for Error Tracking - Published: 2024-12-19 - Modified: 2024-12-23 - URL: https://rollbar.com/vs/datadog/ --- ### Two-Factor Authentication now available for all users - Published: 2016-06-23 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/two-factor-authentication-now-available-for-all-users/ - Categories: product - Tags: security We’re excited to introduce Two-Factor Authentication (2FA) in Rollbar as an optional extra layer of security on every user’s account. 2FA reduces your risk of having your account hacked through phishing, credential exploitation or other remote attacks. We highly recommend enabling Two-Factor Authentication for your entire team. It’s easy to setup (and free)! To enable 2FA, go to your user settings page and click Enable under Two-Factor Authentication. Then scan the QR code, and enter in your two-factor authentication verification token from an authentication app of your choice. One of the more popular authentication apps is Google Authenticator (available free for iOS and Android). Once you're all setup, you’ll be prompted for your token whenever you log in. 2FA is available for all users in all plans at no additional charge. To learn more about Two-Factor Authentication in Rollbar, check out our documentation. --- ### Low Risk Continuous Delivery Guide > Rollbar can help you discover and fix errors faster across your development pipeline by uncovering and resolving them in real-time, before users complain. - Published: 2024-12-19 - Modified: 2024-12-20 - URL: https://rollbar.com/low-risk-continuous-delivery-guide/ --- ### Cameron's story with Rollbar > Rollbar fulfills an important need for us with its grouping of items, so that we can track over long periods of time. This allows us to see trends, when issues started, how many of our customers are affected. We also find the integrations very helpful with slack messages of new items and ability to create jira issues with all the details from rollbar automatically included. - Published: 2023-07-21 - Modified: 2024-04-16 - URL: https://rollbar.com/blog/camerons-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Cameron Priem Chief Technology Office (CTO) Cameron has now been using Rollbar for 100 months! 1. What company do you work for (describe the product/service) and what projects are you working on there? I work for Pet Loyalty, we produce easy-to-use software that simplifies animal shelter operations. We are used by animal welfare organizations world wide to assist them in caring for animals at their shelter, fostering animals, adopting them out online and helping lost pet find their way back to their owner. We also include some people management tools such as volunteer management, donor management and foster parent coordination. One of our flagship products is ShelterBuddy that animal welfare organizations use as their management tool and we use ShelterBuddy with Rollbar. 2. What are you most passionate about in your current and/or past roles? We are all very passionate about animal welfare, and we are very proud to be working for a company that helps to make a difference in saving animals lives. Many of our team members have pets of their own, but we also foster animals while they need some time to find their "furever" home, volunteering at our own local shelters and assisting in rescuing wildlife animals in need. 3. Is there anything in particular about Rollbar that has kept you a loyal user all this time? Rollbar fulfills an important need for us with its grouping of items, so that we can track over long periods of time. This allows us to see trends, when... --- ### Rollbar vs Instabug | A Superior Instabug Alternative for Error Tracking - Published: 2024-12-04 - Modified: 2025-01-24 - URL: https://rollbar.com/vs/instabug/ --- ### Using Rollbar to unravel existing Laravel applications - Published: 2016-05-24 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/using-rollbar-to-unravel-existing-laravel-applications/ - Categories: Code Tutorials, PHP - Tags: laravel {: . highlightbox} Read our new blog Announcing Laravel error monitoring with Rollbar! About 6 months ago I inherited a project (let’s call it Project Mayhem) that was grossly neglected by the original developer. I won’t go into too many details, but let’s just say that I’ve seen spaghetti with more order than this codebase had. No unit tests, no documentation, illogical architecture, and an expecting client... I felt like I was literally living in one of those nightmares where I’m late for the final exam in a class I passed a decade ago. The icing on this terrible cake was that I also inherited the hosting and was graciously provided with absolutely no specs in order to replicate the previous production environment. I was flying blind, and if it weren’t for Rollbar's php error logging tools, this project would have crashed and burned long before I could make any meaningful changes to it. I was able to manage and prioritize exceptions as they happened, which gave me the information I needed to build out a proper hosting architecture and quickly fix existing issues in the codebase. Suffice it to say, I am a big fan of Rollbar. Luckily for me, Project Mayhem was built on Laravel, an increasingly popular PHP framework with an impressive array of third-party plugins; one of which just so happens to be made specifically for Rollbar. Getting Rollbar setup on Laravel was as simple as running just a few commands, but what if the project... --- ### Customers > Read what our customers have said about our tool and understand first-hand why a growing number of software teams are adopting Rollbar. - Published: 2024-11-18 - Modified: 2024-11-18 - URL: https://rollbar.com/customers/ --- ### Albert's story with Rollbar > The availability or Rollbar libraries with all of our apps and environments makes it easy to have efficient and accurate error reporting at all times. We couldn't be happier with the features Rollbar has implemented and continues to implement. - Published: 2023-07-21 - Modified: 2024-04-16 - URL: https://rollbar.com/blog/alberts-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Albert Leao Founder Albert has now been using Rollbar for 100 months! 1. What company do you work for (describe the product/service) and what projects are you working on there? My name is Albert Leao I'm the founder of homesync. com, a social media management company that primarily helps real estate agents market their business online. We integrate with various social media platforms and offer content publishing tools, analytics, and ad-management. 2. What are you most passionate about in your current and/or past roles? With the advent of A. I. , we've been focused on providing high quality content generation and more advanced scheduling options. These new tools allow our clients to easily have first-rate, original, and converting content generated that is scheduled at the click of a button. When it comes to social media marketing we work closely with real estate agents, so we feel their pain when it comes to trying to market online. It's a full-time job to just keep up with the changes in social media (and recently there's been quite a lot of changes! ) so we work hard to make sure that not only do we simplify the process but that we deliver the smoothest possible experience. 3. Is there anything in particular about Rollbar that has kept you a loyal user all this time? One of the difficulties of depending on so many 3rd party applications is having to deal with issues that may arise unexpectedly. Rollbar has been our most powerful tool... --- ### 500 - Published: 2024-11-07 - Modified: 2024-11-07 - URL: https://rollbar.com/500-error/ ::CLOUDFLARE_ERROR_500S_BOX::If you need immediate assistance or wish to report an issue, please contact ourSupport Team  --- ### Streamline monitoring with Rollbar & Datadog - Published: 2016-04-25 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/streamline-monitoring-with-rollbar-datadog/ - Categories: product - Tags: integrations Good news! We’ve recently released a new integration with Datadog to help extend your error monitoring options. Datadog is a leading cloud monitoring solution that brings metrics from all of your apps, tools & services (like Rollbar) into one place. Now Rollbar and Datadog users can syndicate exceptions, errors and code deployments as 'Events’ within Datadog (example below). Here's a few of the ways you can improve your monitoring when you connect Rollbar and Datadog: Get notified of exceptions, errors, code deployments in your event stream Filter notifications by severity, environment, host, users and more Search for exceptions in your graphs Discuss exceptions with your team Most important - spend less time debugging issues We hope that by bringing your Rollbar data into Datadog you can streamline your monitoring efforts and reduce some of the noise in your day to day workflow. For more information, check out our integration docs for Datadog. Also, to see if Rollbar integrates with other tools you’re using, see our full list of integrations here. If you haven’t already, signup for a 14-day free trial of Rollbar and let us help you defeat errors in production. :-) --- ### Rollbar vs Highlight.io | A Superior Highlight.io Alternative for Error Tracking > Have you had enough of these issues with Highlight.io? Complex Features, Endless Technical Glitches, Poor Support and Responsiveness, Steep Learning Curve, Complex Pricing Structure. Time to switch to Rollbar for the best error monitoring solution for frontend, backend and mobile applications. - Published: 2024-10-14 - Modified: 2025-01-24 - URL: https://rollbar.com/vs/highlight/ --- ### Arthur's story with Rollbar > It's always been a straightforward service to implement thanks to its integration with the Laravel framework. It is also one of my pinned tabs that I always have open and refer to multiple times a day. On the odd occasion, we have a customer-facing bug I usually find that me or the team is rolling out a fix before the customer has even gotten in contact.It's also a nice product to use, the integration with GitHub usually means the problem is displayed alongside the error message. - Published: 2023-07-21 - Modified: 2024-04-16 - URL: https://rollbar.com/blog/arthurs-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Arthur Guy Head of Engineering Arthur has now been using Rollbar for 109 months! 1. What company do you work for (describe the product/service) and what projects are you working on there? I am the head of engineering at Vestd (www. vestd. com) and lead our engineering teams. We specialise in building share scheme and equity management solutions for companies allowing businesses to easily and safely issue shares and equity to their team and investors. Our products are complex with a lot of business rules and restrictions that come into play at various stages. We are currently working on some exciting new tools for our larger users to help them manage more things in one place. 2. What are you most passionate about in your current and/or past roles? It's probably a cliché but I enjoy the challenge of building systems that solve problems. I really try and get to the underlying domain representation when designing a system, the better I can manage this, the more flexible and long-lasting the solutions tend to be. Over the years this has morphed from tackling small problems on my own to guiding engineering teams to solve problems for big businesses and thousands of users, however, the approach has always been the same. At Vestd we are solving some really big problems and doing so in a way that hasn't been done before so we are having to forge our own path. This can be frustrating as others in this space approach things a... --- ### 6 ways to improve error grouping in Rollbar - Published: 2016-04-11 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/6-ways-to-improve-error-grouping-in-rollbar/ - Categories: product - Tags: grouping You're two weeks into using Rollbar. You've watched in amazement as issue after issue comes in without a single customer complaint to accompany them. How did you ever find errors before! ? Now that your unresolved errors have drastically decreased, you've started to notice a handful of Rollbar items that all seem to be exactly the same issue. Maybe you've been notified that your UI has exceeded the maximum call stack when calling a particular function. And in one case you found out that your database is actually missing several columns which got grouped into a single error. What's a new Rollbar user to do? Here's 6 steps to help you improve your error grouping in Rollbar: 1. Learn how Rollbar groups items. The Rollbar grouping algorithm attempts to be as smart as possible by grouping items by root cause. Error type items are grouped by a combination of platform, environment, error class, and stack trace information. Message type items are grouped by message text after stripping out certain number-like and date-like portions of the message. 2. Customize your error grouping. Custom grouping enables you to decide exactly how Rollbar will group your items. You can alter the title, change the fingerprinting (and therefore the grouping), and use any data you send to us to make it work! 3. Make sure you're setting the server root. Before grouping by filename, Rollbar will strip off whatever you're sending in the server root segment. This means that you can host the code... --- ### Zipy > Send notifications to chatrooms so everyone on your team knows when an error needs to be resolved instantly.Unlock advanced error insights in Rollbar with Zipy session URLs for contextual debugging and efficient issue resolution. - Published: 2024-03-07 - Modified: 2024-03-07 - URL: https://rollbar.com/integrations/zipy/ --- ### How to Handle the ChatGPT “Model is Overloaded” Error - Published: 2023-07-21 - Modified: 2023-08-18 - URL: https://rollbar.com/blog/chatgpt-model-is-overloaded-error/ - Categories: Code Tutorials, Java - Tags: OpenAI ChatGPT is a champ, but sometimes, it needs a breather. Here's what you need to know about the Model is Overloaded error and how to give it that breather. What does the "Model is Overloaded" error mean? The Model is overloaded with other requests error occurs when the OpenAI API is under a lot of stress from concurrently high user demand. In such a scenario, the model may struggle to produce timely and accurate responses, leading to this error message. What causes the “Model is Overloaded” error? There are a few potential root causes of the model overloaded error: Increased user traffic: The model may get overloaded whenever there is a rapid increase in user traffic or a large number of concurrent requests. This happens when the model is being used by an excessive number of users at once, stressing its processing power. Complex or lengthy prompts: The model might struggle to process lengthy or complex user requests, which would increase computational work and possibly overburden the system. Hardware or infrastructure limitations: OpenAI splits traffic between servers located in different regions. You may have landed on a server that currently has resource restrictions. Due to insufficient CPU or RAM, the model may become overloaded, resulting in the error. System maintenance: There may be scheduled or unscheduled maintenance on their servers. You could check the status page for any announcements. Example: “Model is Overloaded” error The below Java code makes HTTP requests to the OpenAI GPT-3. 5 API endpoint to send... --- ### Query Rollbar data directly from our API - Published: 2016-02-15 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/query-rollbar-data-directly-from-our-api/ - Categories: product - Tags: monitor Good news for RQL users. Until recently RQL usage was limited to the Rollbar interface. That's no longer a problem. Now you can access RQL directly from our API. We like to believe that our interface provides just about everything you need to discover, investigate and resolve errors in your software. That being said, we know that everyone's needs are not the same. So, we created the Rollbar Query Language (RQL for short) to give Rollbar users more controls over their data. Many of our users have grown to depend on RQL for getting their day to day work done. RQL is a familiar SQL-like language for querying your Rollbar data. Here's a few ways that RQL can be useful: Want to find out the number of 500s your users experienced broken down by the url they were on at the moment? Search items using more complex filters than is possible on the Rollbar website. Search for items that occurred between two specific deploys Extend the power of RQL and make the perfect dashboard or tool with your queried error data directly from the API. For help, checkout our API documentation for RQL. For an example that runs on the data from our Live Demo check out the API-Examples repository on GitHub. New to Rollbar? Signup for a 14-day free trial and get instant insights into your application errors. --- ### Public Roadmap - Published: 2024-03-07 - Modified: 2024-03-07 - URL: https://rollbar.com/product/roadmap/ --- ### Rust Error Tracking > Install our Rust SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2024-02-16 - Modified: 2024-02-16 - URL: https://rollbar.com/platforms/rust-error-tracking/ --- ### Rollbar add-on now available for Bitbucket - Published: 2015-06-11 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/rollbar-add-on-now-available-for-bitbucket/ - Categories: product - Tags: integrations On the heels of Atlassian's announcement of Atlassian Connect for Bitbucket yesterday, we're excited to introduce our very own Rollbar Add-On for the Bitbucket community. With the new Rollbar Add-On for Bitbucket and our recent Bitbucket Issue Tracker integration, you can now monitor and keep tabs on your errors and exceptions within Bitbucket. No more switching between multiple tools and services to debug and deploy code. Atlassian Connect for Bitbucket provides an integration architecture that embeds add-ons right within the their UI creating a seamless user experience and unified workflow. How to install the Rollbar Bitbucket add-on? If you're currently a user of Bitbucket, click on your avatar, select "Manage Account", and simply install the Rollbar add-on by selecting "Find new add-ons" from the left menu. Once the add-on is installed, Rollbar data will be accessible per your Bitbucket repo dashboard(s). Note: Atlassian Connect for Bitbucket uses fine-grained permissions to grant add-on access to repositories, issues, accounts, teams, snippets and pull requests. We are thrilled to be a part of Atlassian Connect for Bitbucket and for the opportunity to build and maintain a valuable add-on for the Bitbucket community and Rollbar users to find and fix errors even faster! What's next? We're currently working toward full support for Bitbucket which includes Issues, Source Control and Authentication. Stay tuned. Leave a comment or send a note to support@rollbar. com and let us know if you have any feedback or questions. Happy to help. --- ### How to Deal with ChatGPT's Prompt Too Long Error > Are you getting an openai.error.InvalidRequestError about exceeding the maximum context length? Explore 5 techniques for managing prompt length. - Published: 2023-07-17 - Modified: 2023-08-18 - URL: https://rollbar.com/blog/chatgpt-prompt-too-long-error/ - Categories: Code Tutorials, Python - Tags: OpenAI Are you tired of the Prompt too Long error interrupting your flow with ChatGPT? Let's crack this nut together and learn how to keep your prompts lean, mean, and error-free. How Long is Too Long to Trigger the Error? A prompt contains a question or query that sets the context for the AI's response. The token limit of the prompt in GPT-4, for example, is 8,000 tokens, which applies to the prompt as well as the output. These tokens include characters, numbers, words, subwords, etc. One token generally corresponds to about 4 characters of text for common English text. When a developer gets the error message Prompt too Long, it indicates that the prompt's length is longer than the permitted threshold of the tokens. The token limits of OpenAI’s API may vary according to the model you use. It is important to note that any prompts reaching this limit or exceeding it may be shortened by the AI, leading to inaccurate and partial responses or the Prompt too Long error. Let’s take a look at an example. Example: Prompt Too Long Error The below Python script interacts with the OpenAI API, generating the Prompt too Long error: import openai openai. api_key = 'YOUR API KEY' def generate_text(prompt): try: response = openai. Completion. create( engine='text-davinci-003', prompt=prompt, max_tokens=1000 ) return response. choices. text. strip except openai. error. APIError as e: print(f"Error: {e}") # Generate a long prompt long_prompt = "This is a very long prompt that exceeds the maximum limit of the... --- ### Rollbar Offer for YC Startups > Prioritize development and let us do the heavy lifting. We'll provide all the info regarding which errors are affecting customers, what IPs are affected, and more. - Published: 2024-01-10 - Modified: 2024-01-10 - URL: https://rollbar.com/solutions/yc-startups/ --- ### Easier way to get your team on Rollbar - Published: 2015-05-19 - Modified: 2022-09-15 - URL: https://rollbar.com/blog/easier-way-to-get-your-team-on-rollbar/ - Categories: product - Tags: onboarding Joining and getting your team on Rollbar is now easier. Rollbar is better together and our latest account setting makes it easier to get everyone together. Introducing Email Domain Safelists. Previously the only way to join your team on Rollbar was being invited via email. Admins had to send email invites one by one. This can be tough for large organizations and fast growing engineering teams. With Email Domain Safelists, now you can set an email domain safelist, so that anyone with an address at a specified domain can join your account (once confirmed). No more one off invitations. Making the workflow for admins and new team members easier and less confusing. PROBLEM As we have grown we've seen more and more new users who are employees at companies that are already using Rollbar get lost trying to join their company’s account. The scenario looks something like this: You see a notification in your company's Slack, or an issue in JIRA, GitHub etc. Click link to view more details Hit the Rollbar login page (confusion ensues) Decide to signup and create a new separate account that is orphaned from your company’s account Ask Admin to add/invite you to their Team on Rollbar The new account you created gets abandoned :( SOLUTION With the new email domain safelist, anyone who signs up (from specified domains) automatically gets added to your account once they confirm their email address. Go to /settings/accounts/Name/ to setup (need to be on the Owners team to enable).... --- ### Bird Eats Bug > Send notifications to chatrooms so everyone on your team knows when an error needs to be resolved instantly. - Published: 2023-11-21 - Modified: 2023-11-27 - URL: https://rollbar.com/integrations/bird-eats-bug/ --- ### Hubert's story with Rollbar > I love Rollbar because of its incredibly powerful features, its freemium pricing model (which makes it really easy to start new projects with error tracking baked in from day 1, setting a good foundation from beginning rather than having to be distracted and set it up later on). - Published: 2023-07-12 - Modified: 2024-04-16 - URL: https://rollbar.com/blog/rollbar-story-hubert/ - Categories: company, User Stories - Tags: User Stories Hubert Liu Co-Founder & CTO Hubert has now been using Rollbar for 109 months! 1. What company do you work for (describe the product/service) and what projects are you working on there? I'm co-founder and CTO of Grayscale, https://grayscaleapp. com/ - we are a frontline engagement platform that helps talent acquisition and HR teams effectively communicate with their frontline workers. While we aim to reduce repetitive tasks or follow-ups through automation, we do want to keep the "human" in HR, but make it scalable for larger workforces. I work throughout the technology stack in all facets of the business, from R&D in emerging technologies to new features in our platform. 2. What are you most passionate about in your current and/or past roles? Grayscale aims to help a segment of the market that is typically underrepresented by technology. Frontline workers make up a large portion of our customers' workforce, so we want to make it easy to communicate with them, no matter what environment they work in. "Deskless" workers don't have consistent access to a desk with a computer, and therefore email is a less effective form of communication. It's a unique challenge to step into these workflows and help solve the problems they have in communication, and that's exciting. 3. Is there anything in particular about Rollbar that has kept you a loyal user all this time? I've used Rollbar across 3 organizations now in the last 9 years. Access to important information is critical to solving problems faster,... --- ### Edit and rename error item titles - Published: 2015-03-26 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/edit-and-rename-error-item-titles/ - Categories: product - Tags: monitor You can now rename/edit your error titles. Fix ugly long titles. Hover over, click, edit, and save. Enjoy! --- ### Flask Error Tracking with Rollbar > Install our Flask SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2023-10-12 - Modified: 2023-10-13 - URL: https://rollbar.com/platforms/flask-error-tracking-2/ --- ### Connect Rollbar to Bitbucket Issue Tracker - Published: 2015-03-17 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/connect-rollbar-to-bitbucket-issue-tracker/ - Categories: product - Tags: triage New integration now available - Bitbucket Issue Tracker Supercharge your issue and error tracking workflow when you connect your Rollbar and Bitbucket accounts. New Items in Rollbar will instantly create Issues in your Bitbucket repo, or you can create and link Issues with the click of a button within Rollbar. Here's how: Go to your project's Settings, then Notifications, and select Bitbucket Issues from the list of channels. Click 'Connect with Bitbucket” to grant Rollbar access to your account. From here, you can choose which repository, and add/edit/remove rules for Issues to be created automatically. Like magic, your Rollbar error items and details now show up in your Bitbucket repo. Success! Create Bitbucket Issues manually Prefer to create Issues by hand? You can create an Issue directly from the error Item page in Rollbar, or link with an Issue that already exists. You can use this alongside the automatic rules; or, remove the rules for full manual control. What's next? We're working toward full support for Bitbucket, like we have for GitHub - Issues, Source Control and Authentication. I know Rollbar users who rely on Bitbucket in their workflows are rejoicing. :) Let us know if you have any feedback or questions. We're here to help. Deploy and enjoy! --- ### FastAPI Error Tracking with Rollbar > Install our FastAPI SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2023-10-12 - Modified: 2024-11-05 - URL: https://rollbar.com/platforms/fastapi-error-tracking/ --- ### Jonathan's story with Rollbar > I love Rollbar because of its incredibly powerful features, its freemium pricing model (which makes it really easy to start new projects with error tracking baked in from day 1, setting a good foundation from beginning rather than having to be distracted and set it up later on). - Published: 2023-07-11 - Modified: 2024-04-16 - URL: https://rollbar.com/blog/rollbar-story-jonathan/ - Categories: company, User Stories - Tags: User Stories Jonathan Tsai (jontsai) Software Ninja Geektrepreneur, Empowering Engineers Jonathan has now been using Rollbar for 127 months! 1. What company do you work for (describe the product/service) and what projects are you working on there? Currently, my day job is at EasyPost (www. easypost. com), and I've been there for 4+ working on a variety of projects, mainly building and scaling integrations with hundreds of carriers around the world. Sadly, at EasyPost, they were integrated with Sentry since before I joined, and did not seem to want to switch. Having used all of Sentry, New Relic, and Rollbar professionally at various engineering shops, I highly prefer Rollbar over the others. Also, in a former life, I was co-founder/CTO of Talentral. com which spun off a separate app/product called ZippyApp. com that is still up and running to this day. It's managed to carve out a niche for itself and is self-sustaining, and managed by a small, but mighty team. And I still consult for them as a part-time CTO. I'm also a mentor and entrepreneur, so I usually have no fewer than 3-5 side projects that I'm running concurrently. One of my longer-running side projects is Hacktoolkit (https://www. hacktoolkit. com/), which is an open-source tech community and a collection of various kinds of open-source code. My largest and most successful open-source project is django-htk (https://github. com/hacktoolkit/django-htk), and it has Rollbar baked-in, coupled very tightly, for application error tracking and reporting. It's so opinionated that it's impossible to inject any other... --- ### Features - Published: 2023-06-26 - Modified: 2023-06-26 - URL: https://rollbar.com/features/ --- ### Local Variables / Arguments > You need to know what triggered an error before you can fix it. See the exact line of code and the timeline of browser events leading up to an error with Rollbar. - Published: 2023-06-26 - Modified: 2023-06-26 - URL: https://rollbar.com/features/local-variables/ --- ### Daily, Hourly, New Errors and Trend graphs are now clickable - Published: 2015-03-10 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/daily-hourly-new-errors-and-trend-graphs-are-now-clickable/ - Categories: product - Tags: monitor Yes, that's correct. Daily, Hourly, New Errors, and Trend graphs are now clickable. You can find and fix errors even faster, and in less clicks. :D Common usability feedback we get from our users: Sure would be nice if I could click the dashboard bar graphs and sparklines to quickly see what caused a spike in error events etc. Couldn't agree more. We love aggregating data and we love it clickable. So we enabled it! The following are now clickable in the project Dashboard: Hourly Error/Critical Occurrences Daily Error/Critical Occurrences Daily New/Reactivated Items Trends (24 hour and 7 day) Trends are also clickable on the Items page. For reference Trends are these guys also called 'sparklines'. When viewing a specific error item, the Last 60 Minutes, Hours, and Days are now clickable and aggregate error data by your selection. We're excited to get this features out the door. It reduces a lot of friction in navigating Rollbar. One of many UI and UX improvements to come. :) Login today and go click through your data now. Deploy and enjoy! --- ### Product - Published: 2023-06-26 - Modified: 2023-06-26 - URL: https://rollbar.com/product/ --- ### Nat's story with Rollbar > I first encountered Rollbar in my day job when I worked for PatientsLikeMe. We switched from a competitor because Rollbar made it much easier to track exceptions across programming languages (not just on our Ruby backend) and made it easy to attach additional details to exception reports as needed. - Published: 2023-07-11 - Modified: 2024-04-16 - URL: https://rollbar.com/blog/rollbar-story-nat/ - Categories: company, User Stories - Tags: User Stories Nat Budin Staff Software Engineer Nat has now been using Rollbar for 108 months! NEIL is a small organization with a small budget and relatively low traffic. Rollbar has long maintained a pricing structure that scales down to the level we can afford, while offering higher-capacity plans for enterprises. This is a sharp contrast to most of Rollbar’s competitors, who have a larger minimum monthly price that typically exceeds our entire web budget. 1. What company do you work for (describe the product/service) and what projects are you working on there? I volunteer for New England Interactive Literature, a non-profit that runs Intercon, one of the largest and oldest live action roleplaying game conventions in the world. I developed their open source convention management platform, Intercode, and I help maintain NEIL Hosting, which hosts other conventions’ sites on our instance of Intercode. 2. What are you most passionate about in your current and/or past roles? Our attendees are extremely passionate about practically every aspect of the convention, and as a result, I get a lot of direct feedback from users. It’s very important to me that attendees have a good experience with our web site. Rollbar has been invaluable in helping me catch issues before attendees raise them to us, and helping me quickly find the root cause of issues that attendees have raised. 3. Is there anything in particular about Rollbar that has kept you a loyal user all this time? I first encountered Rollbar in my day job... --- ### Rollbar Thank you - Published: 2023-05-22 - Modified: 2025-01-08 - URL: https://rollbar.com/events/rollbar-thank-you/ --- ### Using Logstash and Rollbar Together - Published: 2015-03-02 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/using-logstash-and-rollbar-together/ - Categories: product - Tags: integrations The infrastructure behind most modern web applications includes an assortment of tools for collecting server and application metrics, logging events, aggregating logs, and providing alerts. Most systems are made up of a collection of best-in-class tools and services, selected and deployed over time as team members arrive and depart, needs change, the system grows, and new tools are introduced. One of the challenges web development and operations teams face is collecting and analyzing data from these disparate sources and systems and then piecing together what’s happening by looking at multiple reports and dashboards. Two common pieces in this puzzle are Logstash and Rollbar. Logstash (and the Kibana web interface, both of which are heavily supported by and integrated with Elasticsearch) lets you collect and parse logs, store them in a central location, search and explore the data via the Kibana UI, and output events to other services. Logstash provides a powerful tool for taking logs in many different formats, converting them into JSON events, then routing and storing those events. Rollbar collects errors from your application, notifies you of those errors, and analyzes them so you can more efficiently debug and fix them. With a few lines of code or config changes to your application, you can make errors, complete stack traces, trends and affected user reports accessible via your Roller dashboard. Like Logstash, Rollbar collects and analyzes events represented in JSON. By connecting Logstash and Rollbar, you can not only centralize and analyze your system and application logs, but... --- ### Rollbar Offer for G2 Customers > Prioritize development and let us do the heavy lifting. We'll provide all the info regarding which errors are affecting customers, what IPs are affected, and more. - Published: 2023-04-06 - Modified: 2023-04-07 - URL: https://rollbar.com/solutions/g2-offer/ --- ### Free Plan Changes > We are standardizing our free plans to align with our current structure and ensure we can continue offering quality services to all our users. - Published: 2023-07-10 - Modified: 2023-07-12 - URL: https://rollbar.com/blog/free-plan-changes-2023/ - Categories: Uncategorized Changes to our Free plans What is changing? Rollbar is sunsetting our legacy Free 25K plans and standardizing all free plans to 5,000 occurrences per month starting August 15, 2023. Our paid plans start at $12. 50/month; you keep your occurrences limits and enjoy added features. Why is Rollbar changing the free plan occurrence limit? We are standardizing our free plans to align with our current structure and ensure we can continue offering quality services to all our users. What happens if I do not switch to the Essentials Plan within 30 days? If you choose to remain on our free plan after 30 days, your occurrence limit will be adjusted to 5,000 occurrences per month. How will this change affect my current projects? This change won't affect your projects if your monthly occurrences are consistently below 5,000. However, if you regularly exceed this limit, consider our Essential or Advanced Plans to avoid any service disruption. Visit our pricing page for more information. What are the differences between Free, Essentials and Advanced Plans? Please visit our pricing page to view the side by side comparisons of the different plan options. How do I switch to the Essentials or Advanced Plan Plan? We've made the transition as easy as possible. You can upgrade your plan directly from your account navigation by clicking the upgrade button. Our customer support team is also here to assist you in making this transition (email us at support@rollbar. com). Will the Essentials Plan rate ever increase?... --- ### Software Agency > Prioritize development and let us do the heavy lifting. We'll provide all the info regarding which errors are affecting customers, what IPs are affected, and more. - Published: 2023-03-21 - Modified: 2025-02-25 - URL: https://rollbar.com/solutions/software-agency/ --- ### Increasing max-open files for beanstalkd - Published: 2015-02-28 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/increasing-max-open-files-for-beanstalkd/ - Categories: Code Tutorials - Tags: behind-the-scenes Quick tip: If you are running out of file descriptors in your Beanstalkd process, use /etc/default/beanstalkd to set the ulimit before the init script starts the process. e. g. # file: /etc/default/beanstalkd BEANSTALKD_LISTEN_ADDR=127. 0. 0. 1 BEANSTALKD_LISTEN_PORT=11300 START=yes BEANSTALKD_EXTRA="-b /var/lib/beanstalkd -f 1" # Should match your /etc/security/limits. conf settings ulimit -n 100000 Lots of resources online tell you to update your /etc/security/limits. conf and /etc/pam. d/common-session* settings to increase your maximum number of available file descriptors. However, the default beanstalkd installation on Ubuntu 12. 04+ uses an init script that starts the daemon process using start-stop-daemon which does not use your system settings when setting the processes ulimits. Just add this line to your defaults and you're good to go! --- ### Live Webinar: Rollbar Project Configuration Best Practices - Published: 2023-02-07 - Modified: 2023-03-01 - URL: https://rollbar.com/events/project-best-practices/ --- ### Account Observability > We're thrilled to announce the launch of Rollbar's latest initiative to provide greater transparency and control over your occurrences. Our team has worked hard to address customers' feedback and concerns based on your occurrences and overages. We are excited to introduce a new level of observability to our platform. - Published: 2023-06-14 - Modified: 2023-07-26 - URL: https://rollbar.com/blog/account-observability/ - Categories: product - Tags: Usage Notifications Introducing Rollbar's Enhanced Usage Visibility Gain Control Over Your Occurrences We're thrilled to announce the launch of Rollbar's latest initiative to provide greater transparency and control over your occurrences. Our team has worked hard to address customers' feedback and concerns based on your occurrences and overages. We are excited to introduce a new level of observability to our platform. At Rollbar, we understand that having clear visibility into how your occurrences are utilized is crucial for making informed decisions and effectively managing your projects and account. Our goal with this initiative is to empower you, the account owners, with the tools and insights you need to take control of your data and leverage Rollbar's platform to its fullest potential. The primary focus of this release is to enhance your usage page, providing you with comprehensive information about your occurrences across all projects and throughout your contract period. With this new feature, you can track your occurrences over time, gaining valuable insights into your consumption patterns and making alt="" width="2116" height="1394" /> Project-level Breakdown: Understand your consumption of Rollbar occurrences for individual projects. We've introduced a new text-based table layout that provides a clear overview of your project's usage. Additionally, we're exploring options for incorporating graphs in future phases to enhance the visual representation of your data. Contextual Insights: Get detailed visibility into how your projects consume occurrences, enabling you to optimize your tracking and allocate your budget more effectively. This launch marks the first phase of our ongoing efforts to... --- ### Jira > Create Jira tickets directly from Rollbar Errors with automatic creation and ticket resolution built-in. - Published: 2022-12-05 - Modified: 2023-03-23 - URL: https://rollbar.com/integrations/jira/ --- ### Assign errors to your team - Published: 2015-02-26 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/assign-errors-to-your-team/ - Categories: product - Tags: triage Ever wanted to assign error items to other team members in Rollbar? Of course you have. Now you can. It is a pretty straight forward enhancement, but here is an overview. On the error ‘items’ details page, there's an “Assigned to" dropdown with the members of your team. Once assigned, we’ll shoot an email to that team member letting them know you assigned that specific item to them, including link and details. They'll be automatically added as a 'watcher' for that specific item and will receive notifications about any comments and updates. Assignment events will be listed in the item history section, so you can see who assigned it to whom, when. To quickly find items assigned to yourself or others on your team, search 'assigned:me', ‘assigned:username’, or 'assigned:unassigned' on the Items page. We're excited to get this out into the wild. Especially for some of the larger teams using Rollbar. Let us know what you think and how we can make it better for you and your team. --- ### Slack > Send notifications to chatrooms so everyone on your team knows when an error needs to be resolved instantly. - Published: 2022-12-05 - Modified: 2023-03-23 - URL: https://rollbar.com/integrations/slack/ --- ### Real-time, production quality data as a guide > Monitor errors in all projects in one view. Rollbar groups similar errors together for you and also provides the option to manually merge errors to fit your needs. - Published: 2022-10-11 - Modified: 2023-01-11 - URL: https://rollbar.com/solutions/improve/ --- ### A Web Developer's Guide to Common Website Error Codes > From the infamous 404 to the more elusive 500, this guide is your compass to troubleshoot, decode, and resolve these digital stumbling blocks. - Published: 2023-06-13 - Modified: 2023-06-13 - URL: https://rollbar.com/blog/common-website-error-codes/ - Categories: topics - Tags: Top Errors To err is not only human but also a fairly common occurrence on the world wide web. From misconfigured servers to mistyped URLs, three-digit error codes can turn an otherwise smooth browsing experience into a frustrating detour. From the infamous 404 to the more elusive 500, this guide is your compass to troubleshoot, decode, and resolve these digital stumbling blocks. 1. 404 Not Found “404 Not Found” is one of the most common website errors. It indicates that the server was unable to find the requested resource. This could be due to a broken link, a mistyped URL, or the resource being removed or relocated. Example of error code 404 Ways to resolve a 404 error: Examine any broken links. It's possible that a website has broken links that are to blame for the issue. To find any broken links the programmer or the website owner can use tools like Google Search Console or a link checker, and then fix them by changing the URL or eliminating the link entirely. Redirect the URL: The programmer can redirect the URL to another page on the website if the user is attempting to visit an outdated page. This can ensure that consumers can still obtain the information they need without getting a 404 error. Ask the user to delete their cache and cookies: A 404 error occasionally results from a cached copy of a website that is no longer available. The users can make sure the most recent version of the page... --- ### Get notifications every time an error occurs - Published: 2015-02-26 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/get-notifications-every-time-an-error-occurs/ - Categories: product - Tags: monitor You can now setup notifications every time an error occurs. Previously specific error Notifications were only available for New Items and 10^th Occurrences. Notification Rules are available for all Channels (Email, Slack, HipChat, Trello, PagerDuty). --- ### Technical Intro to Improve: Release > Introducing Improve: Release from Rollbar. - Published: 2022-10-10 - Modified: 2022-11-15 - URL: https://rollbar.com/vs/tech-intro-to-improve-release/ --- ### Intro to Rollbar - Published: 2022-09-23 - Modified: 2023-02-08 - URL: https://rollbar.com/events/intro-to-rollbar/ --- ### Debugging Node.js Apps in Production with PyCharm - Published: 2014-12-19 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/debugging-node-js-apps-in-production-with-pycharm/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript Node. js has a built-in debugger that you can start in running processes. To do this, send a SIGUSR1 signal to the running process and connect a debugger. The one, big caveat here is that the debugger only listens on the local interface, 127. 0. 0. 1. The following are instructions for debugging Node. js applications running in your company's private network from your laptop, through a bastion host. SSH into the production host that is running the Node. js app Put your production app into debug mode. prod-host $> kill -s SIGUSR1 As root, start an SSH tunnel to connect your private network with localhost. prod-host $> ssh -N -q -L :8585:localhost:5858 On your laptop Start an SSH tunnel to the production host, through your bastion host. laptop $> ssh -N -q -L 5858::8585 @ Open PyCharm and create a remote debugging configuration. Run → Edit Configurations Click the + button on the top-left of the window and select “Node. js Remote Debug” Set the host to 127. 0. 0. 1 using port 5858, name it and save. Run the new Debug configuration. Run → Debug... Select the new configuration. At this point your laptop will have connected to your local SSH tunnel which will be connected to your production host's private network interface which will be tunneled to your production host's local network interface and your Node. js process. PyCharm → local SSH tunnel → bastion host → production host private network → production host localhost → Node.... --- ### Intro to Improve: Release from Rollbar > Introducing Improve: Release from Rollbar. - Published: 2022-09-15 - Modified: 2022-09-30 - URL: https://rollbar.com/vs/intro-improve-release/ --- ### How to Resolve TypeError: ‘NoneType’ object is not subscriptable in Python > When you try to access an index or key of a variable that is of a NoneType sort, Python throws a NoneType error. Learn several solutions to fix this. - Published: 2023-06-12 - Modified: 2025-03-17 - URL: https://rollbar.com/blog/python-typeerror-nonetype-object-not-subscriptable/ - Categories: Code Tutorials, Python - Tags: Python When working with Python, attempting to access an index or slice of an object that has the value None may result in TypeError: 'NoneType' object is not subscriptable. Let’s delve into why this TypeError occurs and how to resolve it. None is a unique constant in Python that stands in for the lack of a value. It is employed to show that a variable or expression does not possess a value. The Python built-in class NoneType has an object called None that belongs to it. An instance of NoneType is assigned to a variable when None is assigned to it. For Example: my_var = None print(type(my_var)) Output: What Causes TypeError: ‘NoneType’ And How to Fix this Error Working with NoneType objects frequently results in the 'NoneType' object is not subscriptable error. The issue arises when you try to use the index or key of a NoneType object as if it were a list or dictionary. Python raises this error because NoneType objects do not support indexing or key access, preventing the programmer from doing an invalid operation. The following are some typical situations that may result in this issue and the solutions to fix them: 1. Forgetting to Assign a Value to a Variable If you forget to assign a value to a variable, it will default to a NoneType object. If you then try to access an index or a key of that variable, Python will raise the 'NoneType' object is not subscriptable error. Example One my_list = None... --- ### Introducing Improve: Release from Rollbar > Introducing Improve: Release from Rollbar. - Published: 2022-09-08 - Modified: 2022-09-23 - URL: https://rollbar.com/vs/introducing-improve-release/ --- ### RQL String Functions - Published: 2014-12-16 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/rql-string-functions/ - Categories: product - Tags: triage RQL now includes a basic library of string functions. You can use these to slice and group your data in arbitrary ways. For example, "email domains with the most events in the past hour": SELECT substring(person. email, locate('@', person. email)), count(*) FROM item_occurrence WHERE timestamp >= unix_timestamp - 3600 AND person. email IS NOT NULL GROUP BY 1 ORDER BY 2 DESC The new functions: concat, concat_ws, lower, upper, left, right, substring, locate, length, char_length. The functions are implemented to be compatible with MySQL; see the RQL docs for details. --- ### Angular > Rollbar for Angular. Find and fix errors quickly. - Published: 2022-09-07 - Modified: 2022-09-07 - URL: https://rollbar.com/vs/angular/ --- ### Error Resolution Unveiled > Introduce a new enhancement to our Improve package – the Mean Time to Resolution (MTTR) metric. Unlike other tools, our MTTR metric measures the time from when an issue begins in production to when it gets resolved, not from a ticket opening or alert trigger. This distinctive feature makes the Rollbar MTTR more accurate and reliable. - Published: 2023-06-07 - Modified: 2023-06-07 - URL: https://rollbar.com/blog/improve-mttr-metric/ - Categories: product - Tags: mttr Error Resolution Unveiled Unlock Insights with the new Improve MTTR Metric In today's fast-paced tech environment, swiftly and efficiently resolving software errors is essential to maintain the seamless operation of your application. A prominent problem for engineering leaders is they often need help tracking and effectively understanding their error resolution performance over time. With a comprehensive, real-time visualization of this data, making informed decisions, setting performance benchmarks, and optimizing resources become easier. Today, we are excited to introduce a new enhancement to our Improve package – the Mean Time to Resolution (MTTR) metric. Unlike other tools, our MTTR metric measures the time from when an issue begins in production to when it gets resolved, not from a ticket opening or alert trigger. This distinctive feature makes the Rollbar MTTR more accurate and reliable. The MTTR graph lets you view your resolved errors over set time periods. Whether these issues were manually resolved by a user or auto-resolved by our intelligent system, you can track your performance and gain valuable insights. Our intuitive MTTR graph is a sophisticated tool that dynamically monitors your application’s error resolution times. It diligently compiles data, transforming it into an interactive graphical format accessible at your convenience. We don't limit ourselves to just a part of the application; instead, we take a comprehensive view by looking at resolved errors across the entire application. This includes errors corrected manually in the UI, those resolved automatically on deployment, inactive items that auto-resolve themselves, and errors managed via API.... --- ### Office Hours > Visit our conference booth and learn more about Rollbar. Find and fix errors quickly. - Published: 2022-08-29 - Modified: 2023-09-01 - URL: https://rollbar.com/vs/office-hours/ --- ### October Release Roundup - Published: 2014-10-31 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/october-release-roundup/ - Categories: product - Tags: monitor Happy Halloween, everyone! Here's a roundup of what's new in Rollbar this month. Ruby Upgrades The rollbar gem for Ruby got a lot of attention in October. Early in the month, we released version 1. 1. 0, which added support for Ruby 2. 1 exception causes, and a new 'failover_handlers' feature for more reliable asnyc reporting. Mid-month, we released version 1. 2 which adds a new, much nicer and more powerful interface for sending the data you want into Rollbar. In 1. 2, you can do: begin Rollbar. info("About to do_something") do_something rescue => e # send a message and extra data along with an exception Rollbar. error("Something went wrong", e, :foo => "bar") # customize payload attributes, like the 'person' or 'fingerprint' Rollbar. scope({:fingerprint => "something"}). error(e) end More in the docs. It's available now on Rubygems (latest version is 1. 2. 7). New Status Site We've upgraded status. rollbar. com. We'll be using it to communicate about outages, so if you'd like to be notified, go there and subscribe to updates. The new status site also shows the current maximum latencies for the processing pipeline. Link Rollbar Items with Existing 3rd-party Issues You can now link a Rollbar item with an existing issue in your issue tracker: Or if you have a Rollbar item that is already linked, you can now change or remove the link. This works with Asana, GitHub Issues, JIRA, Pivotal Tracker, Sprintly, and Trello. Geolocation for IP Addresses Rollbar now shows geolocation information on... --- ### Conference > Visit our conference booth and learn more about Rollbar. Find and fix errors quickly. - Published: 2022-08-29 - Modified: 2022-08-31 - URL: https://rollbar.com/vs/conference/ --- ### How to Use CreateError for Crafting Custom Error Classes in Node.js > Unlock the full potential of JavaScript error handling with CreateError. Learn how to create custom error classes, pass additional error data, and more. - Published: 2023-06-05 - Modified: 2023-06-05 - URL: https://rollbar.com/blog/nodejs-error-handling-using-createerror/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript The npm createerror package is a helper that allows you to easily create custom error classes in Node. js. It provides a simple API to define and extend error classes with customizable properties and methods. CreateError Installation Node. js and npm should be installed before using the createerror package. To install createerror, the following command should be run: npm install createerror CreateError Example Here’s a simple example on how to use createerror in Node. js: var createError = require('createerror'); var MyError = createError({ name: 'MyError', message: 'Message describing the error' }); In the above example, the createerror package is used to create an error called MyError that has the name and message properties. How to Throw Errors Using CreateError After a custom error has been created using the createerror package, an instance of it can be thrown using the JavaScript throw keyword. Any instances of the error can also contain extra data about the error. Here’s an example that throws an instance of the MyError error created above: try { throw new MyError({ message: "My message", data: {restrictedIds: } }); } catch(e) { console. error(e. data); } Here, the MyError instance created in the try block contains a property called data that contains a set of restrictedIds. The error is caught in the catch block and the output is logged to the console with the error’s data property: { restrictedIds: } Track, Analyze and Manage Errors With Rollbar As you can see, creating custom errors can provide more detailed and... --- ### Rollbar vs Airbrake | A Superior Airbrake Alternative for Error Tracking - Published: 2022-08-22 - Modified: 2025-01-24 - URL: https://rollbar.com/vs/airbrake/ --- ### New "Reports" API calls - Published: 2014-08-20 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/new-reports-api-calls/ - Categories: product - Tags: monitor We've released two new API calls, exposing some of the data on the Dashboard via our JSON API. Use the /reports/top_active_items to fetch the same data as "Top 10 Active Items in last 24 hours". And use /reports/occurrence_counts to fetch the same data as "Daily Error/Critical Occurrences" and "Hourly Error/Critical Occurrences". More details in the docs. If you give this a try, send us any feedback at team@rollbar. com. --- ### Rollbar vs Raygun | A Superior Raygun Alternative for Error Tracking - Published: 2022-08-22 - Modified: 2025-01-24 - URL: https://rollbar.com/vs/raygun/ --- ### How to Fix AbortError in JavaScript > The JavaScript AbortError occurs when an operation is aborted before it completes. Learn three ways to handle it. - Published: 2023-05-29 - Modified: 2023-05-29 - URL: https://rollbar.com/blog/fix-aborterror-in-javascript/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript The JavaScript AbortError occurs when an operation is aborted before it completes, such as when an AbortController object cancels a fetch request in progress. What Causes AbortError In JavaScript, an AbortError is thrown when an operation is stopped or canceled before it completes. For example, when using the JavaScript fetch function, an AbortError is thrown if the abort function is called on the associated AbortController before the fetch operation completes. The AbortError is thrown only if the operation is canceled while it is actively in progress. If the operation completed successfully or failed for another reason, an AbortError will not be thrown. AbortError Example Here’s an example of an AbortError thrown when the AbortController. abort function is called while a fetch operation is in progress: const controller = new AbortController; const signal = controller. signal; fetch('https://example. com', { signal }); controller. abort; In the above example, the AbortController is used to create an AbortSignal object, which is passed as an option to the fetch request. When the AbortController. abort function is called while the fetch request is in progress, the request is canceled and an AbortError is thrown: Uncaught (in promise) DOMException: The user aborted a request. How to Fix AbortError Here are a few approaches to handle and fix an AbortError depending on the use case: Use try-catch blocks An AbortError can be caught and handled appropriately using a try-catch block. For example, the error can be caught in the catch block and handled with a message displayed to... --- ### Rollbar vs Bugsnag | A Superior Bugsnag Alternative for Error Monitoring - Published: 2022-08-22 - Modified: 2025-01-24 - URL: https://rollbar.com/vs/bugsnag/ --- ### Occurrence counts by minute - Published: 2014-07-31 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/occurrence-counts-by-minute/ - Categories: product - Tags: monitor We've released an improvement to our Item Detail pages, adding a graph showing the aggregate occurrence counts per minute. It's live now for everyone and looks like this: You can use this to see patterns that previously were hard to spot, like errors that occur on a regular, sub-hour interval (like the one shown above). It's also useful for quickly seeing how the occurrence rate changes after a deploy. --- ### Track and Debug Errors on Any Platform > Instrument any application with Rollbar error monitoring. Install our SDKs in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks - Published: 2022-03-20 - Modified: 2024-03-25 - URL: https://rollbar.com/platforms/ --- ### node_rollbar 0.3.11 - Published: 2014-07-24 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/node_rollbar-0-3-11/ - Categories: product - Tags: JavaScript We've released a new version of our Node. js library, version 0. 3. 11. It's available on npm and GitHub. This release adds a new function to the public API, handleErrorWithPayloadData. The name's a mouthful, but it allows you to use (nearly) the full power of the Rollbar API when reporting errors. For example, to report an error as a "warning" and pass some additional data: rollbar. handleErrorWithPayloadData(err, {level: "warning", custom: {someKey: "some value"}}); See more examples in the docs for caught exceptions. --- ### Salesforce Apex Tracking with Rollbar > Install our Apex SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-20 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/apex-error-tracking/ --- ### 10 Best Practices When Logging in Python > Harness the full power of Python's logging module. From best practices to advanced error tracking with Rollbar, learn everything you need to squash bugs. - Published: 2023-05-16 - Modified: 2023-05-16 - URL: https://rollbar.com/blog/10-best-practices-when-logging-in-python/ - Categories: Code Tutorials, Python - Tags: Python In the eternal hunt for elusive bugs, logging is an indispensable aid. By recording the events and messages that occur during the execution of your program, logging opens the door to unparalleled debugging and performance monitoring capabilities. It all starts with Python’s built-in logging module. However, the true power of Python logging is unlocked not merely by using it, but by mastering it. Keep reading to learn the fundamentals of logging in Python, get up to speed with best practices, and how one advanced error logging tool, Rollbar, can help you discover, predict, and resolve errors in real-time. The basics of logging in Python: words you should knowBefore we dive into the code, let's cover some basic concepts related to logging in Python: Logger: An object named a logger represents a named channel for message logging. You can add several loggers to your program, each with a unique name and set of configurations. The name of the logger you want to use is specified when you log a message. Handler: An entity that receives and processes logged messages is referred to as a handler. Each handler can have its own configuration, including a file name, a format string, and a level threshold. A logger may have one or more handlers. All of the handlers connected to the logger receive a message when it is logged. Formatter: A formatter is an object that transforms the logged messages into a string that can be read by humans. This can include placeholders for... --- ### More stack trace filename search filters - Published: 2014-07-22 - Modified: 2021-07-19 - URL: https://rollbar.com/blog/more-stack-trace-filename-search-filters/ - Categories: product - Tags: monitor We've released several new search filters to make it easier to find errors by the filenames in their stack trace. If you've ever wanted to find client-side Angular JavaScript errors that only occurred within your own specific domain, or exceptions originating in a specific part of your code, keep reading. You've always been able to search for errors where any filename contains a string, but now you can also search for errors where: all filenames contain a string (allfiles:myproject) no filenames contain a string (nofiles:evilproject) the top stack frame's filename contains a string (topfile:mydomain. com) the bottom stack frame's filename contains a string (bottomfile:some_important_library) the number of filenames is within a range (minfiles:1 and/or maxfiles:10) any filename contains a string (file:. rb) These filters can all be combined in a single query. If you forget which filters exist, mouse over the ? next to the search box to see the help text. --- ### Go Error Tracking with Rollbar > Install our Go SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-20 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/go-error-tracking/ --- ### How to Solve an Undefined Variable NameError in Python > A Python NameError is raised when the program attempts to use a variable that has not been defined. Learn how to fix it. - Published: 2023-05-16 - Modified: 2025-03-17 - URL: https://rollbar.com/blog/undefined-variable-nameerror-python/ - Categories: Code Tutorials, Python - Tags: Python In Python, a NameError: name 'x' is not defined error is raised when the program attempts to access or use a variable that has not been defined or assigned a value. This can happen if the variable is spelled incorrectly, or if it is accessed before it has been defined. What Causes Undefined Variable In Python, a variable is not created until a value is assigned to it. If an attempt is made to use a variable before it is defined, a NameError: name 'x' is not defined error is thrown. The error message typically includes the name of the variable that is causing the problem and the line of code where the error occurred. Python Undefined Variable Example Here’s an example of a Python NameError: name 'x' is not defined thrown when using an undefined variable: for i in range(x): print(i) In this example, an undefined variable x is used in the range function, throwing the NameError: name 'x' is not defined error: Traceback (most recent call last): File "test. py", line 1, in for i in range(x): NameError: name 'x' is not defined How to Solve Undefined Variable in Python To solve the NameError: name 'x' is not defined error in Python, you need to make sure that the variable is properly defined and assigned a value before it is used. The variable should also be referenced correctly, with the correct case and spelling. The earlier example can be updated to define the variable before it is used:... --- ### Missing daily summary emails - Published: 2014-07-21 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/missing-daily-summary-emails/ - Categories: product - Tags: monitor We just rolled out a fix for missing daily summary emails. The bug was introduced last week when we refactored a bunch of our email code. As a result, some projects did not receive their daily email for the previous 24 hours. We don't want to spam users with old summaries so please contact support@rollbar. com if you'd like to get yours. --- ### .NET Error Tracking with Rollbar > Install our .NET SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-20 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/dotnet-error-tracking/ --- ### rollbar-gem v0.13.2 - Published: 2014-07-08 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/rollbar-gem-v0-13-2/ - Categories: product - Tags: ruby We've released a patch version (0. 13. 2) of our Ruby gem, fixing two issues. The use_sucker_punch config option could cause timeouts when using Unicorn (#121) - thanks to Fabio Napoleoni for the report Sidekiq payloads were being mutated, causing the sidekiq-failures UI not to display parameters correctly (#122) - thanks to Dmitry Krasnoukhov for investigating and reporting this. It's available now on Rubygems and GitHub. --- ### Swift Error Tracking with Rollbar > Install our Swift SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-20 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/swift-error-tracking/ --- ### Flutter Error Tracking with Rollbar > Install our Flutter SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-20 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/flutter-error-tracking/ --- ### Prettier Node.js stack traces - Published: 2014-07-01 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/prettier-node-js-stack-traces/ - Categories: product - Tags: debug Small tweak of the day: we now render Node. js stack traces to look more like they do via console. log(err. stack). We also fixed an issue where the context lines would appear indented at random levels. Before: After: --- ### Error Logging: A Complete Guide for Beginners > No matter the programming language, learn the universal principles of what to include in error logs, where to save them and how to debug effectively. - Published: 2023-05-15 - Modified: 2023-05-15 - URL: https://rollbar.com/blog/error-logging-guide/ - Categories: topics - Tags: Top Errors Today's applications are incredibly intricate and interconnected, often relying on numerous third-party services and libraries. With this complexity comes an increased likelihood of things going wrong. However, an error doesn't usually announce itself with great fanfare and a detailed explanation. More often than not, it shows up as an unexplained crash, a suspicious slowdown, or a surprising output. Error logging shines a spotlight on these problems. Error logging is a mechanism for capturing and recording errors or issues that occur in your application, providing a crucial lifeline during the debugging process. Think of it like having surveillance cameras in every corner of your application. These logs provide a wealth of information, from the nature of the error and where it occurred, to the state of the system when it happened. This data can be the difference between solving a problem in minutes and struggling with it for days. While the specifics of logging errors may vary based on the application and the environment, this beginner’s guide will illuminate the universal principles that underpin this crucial development practice. We'll delve into what you should include in an error log, where to save these logs, and how to use logs as your secret weapon in the debugging process. What to Include in an Error Log Error logging is a technique that transcends specific programming languages or environments. Whether you're working with Python, Java, JavaScript, or other languages, there are always key pieces of information that should be included in every error log... --- ### MacOS Error Tracking with Rollbar > Install our macOS SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-20 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/macos-error-tracking/ --- ### Debugging by IP Address - Published: 2014-06-30 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/debugging-by-ip-address/ - Categories: product - Tags: debug We've released a first round of features around IP Addresses. Similar to how you can see the history by Person, you can now see the history by IP address. If you're tracking down an issue affecting logged-out users, this can be really helpful. To get there, click on an IP address anywhere in the Rollbar interface: You'll be able to see all events affecting that IP: There's also a handy link to the WHOIS record for the IP. --- ### How to Use the ChatGPT API with JavaScript > Step into the world of AI with this step-by-step tutorial on integrating the OpenAI API with JavaScript. Transform your app's user experience today. - Published: 2023-05-11 - Modified: 2023-08-18 - URL: https://rollbar.com/blog/chatgpt-api-with-javascript/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript, OpenAI Eager to infuse your JavaScript app with state-of-the-art AI? This comprehensive tutorial will show you how to embed ChatGPT, the titan of large language models, into your JavaScript code. Get ready to revolutionize your app's interactivity with natural language processing capabilities. First, follow these steps to integrate ChatGPT into JavaScript To use the ChatGPT language model in JavaScript, you make use of the OpenAI API library. Here are the steps to follow: First, sign up for OpenAI API access at https://beta. openai. com/signup/. Once you’ve signed up, you’ll get an API key to use to authenticate your requests. Create an empty folder on your computer named "Demo" and open it in an editor like VS Code to create the initial package. json file in it by writing the below command in the VS Code terminal: npm init -y To use the OpenAI API in your JavaScript application, you have to install the openai package using the following command in the terminal: npm install openai Next, install the . env package, which is a zero-dependency module that loads environment variables from a . env file into process. env. It allows you to separate sensitive data from your code and store it in a file that is not tracked by version control systems. You will use this to store your OpenAI API key. Now create two files: index. js, where you’ll write your code, and an . env file, where you will store your API key. This is how your project structure... --- ### iOS Error Tracking with Rollbar > Install our iOS SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-20 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/ios-error-tracking/ --- ### Better support for Browserify and Webpack - Published: 2014-06-18 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/better-support-for-browserify-and-webpack/ - Categories: product - Tags: JavaScript Recently (actually last week), we released a new version of rollbar. js that has a few fixes to play nicely with Browserify and Webpack. It's being served from our CDN and the source is on GitHub. We've also put together examples showing how to use rollbar. js with each. If you use Browserify or Webpack and want to include rollbar. js that way instead of using our standard snippet, this is your lucky day: Browserify example Webpack example Thanks to @altano for helping with this. --- ### Apple Error Tracking with Rollbar > Install our Apple SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-20 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/apple-error-tracking/ --- ### Codeship + Rollbar - Published: 2014-06-17 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/codeship-rollbar/ - Categories: product - Tags: integrations Our friends over at Codeship wrote a piece about how they use Rollbar to track deployments and fix exceptions. More on the Codeship blog: Tracking Deployments with Rollbar. --- ### Introducing Rollbar Analyze > Analyze is designed to deliver even more powerful insights to help your teams better understand your code and make data-driven decisions. By packaging the capabilities of RQL and Metrics API, we are equipping you with a robust solution that addresses your unique data needs. - Published: 2023-05-04 - Modified: 2023-05-05 - URL: https://rollbar.com/blog/introducing-rollbar-analyze/ - Categories: product Introducing Analyze Your Key to Enhanced Insights and Faster Error Resolution We are excited to announce the rollout of our new Rollbar Improve component, Analyze. As we strive to provide you with the best possible tools to monitor, understand, and improve your code, we've combined two powerful features, RQL and Metrics API, into one comprehensive package. Analyze is designed to deliver even more powerful insights to help your teams better understand your code and make /> *Rollbar Analyze - Includes RQL and Metrics API Package Changes What to Expect With the introduction of Analyze, we are changing our pricing packages. We understand these changes affect some of our customers and want to be transparent about the details. Moving forward, Analyze will be available as part of the Advanced package. For our other packages, we would like to outline our plan: Free and Essential Packages Free and Essentials package users will have limited access to RQL following a transitional grace period. Free users will continue to have access to RQL for 30 days after the launch of Analyze, while Essentials users will have access for 60 days. To make our Advanced package more accessible, we are also introducing two new pricing tiers: Advanced 25K for $29. 00 and Advanced 50K for $59. 00. We encourage our Free and Essential package users to consider upgrading to one of these plans to enjoy uninterrupted access to RQL and full access to our Metrics API. View Pricing and Packages Enterprise Package Enterprise customers will... --- ### Scala Error Tracking with Rollbar > Install our Scala SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-20 - Modified: 2024-11-05 - URL: https://rollbar.com/platforms/scala-error-tracking/ --- ### rollbar.js snippet update - Published: 2014-06-10 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/rollbar-js-snippet-update/ - Categories: product - Tags: JavaScript We've released a new version of rollbar. js (1. 0. 0-rc9), which fixes a bug in some environments. If you've seen "TypeError: Uncaught TypeError: Cannot read property '_wrapped' of null" in your project, you should update to the latest snippet. Grab it from the docs to update. --- ### How to Fix ReferenceError: $ is Not Defined in JavaScript > This error occurs when the jQuery library is used but is not properly loaded or is not available in the current scope of the code. Learn how to fix it. - Published: 2023-04-24 - Modified: 2024-09-13 - URL: https://rollbar.com/blog/fix-reference-error-is-not-defined-in-javascript/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript The JavaScript ReferenceError: $ is not defined occurs when the jQuery library is used but is not properly loaded or is not available in the current scope of the code. In JavaScript, the $ symbol is often used as a shorthand alias for the jQuery library. This error indicates that the code is trying to use jQuery functionality by referencing the $ symbol, but the library is not available or has not been loaded correctly. What Causes Javascript ReferenceError: $ is Not Defined This error can occur for several reasons, such as: The jQuery library is not included in the script that references it. The library is included with a typo or error in the script The script is executed before the jQuery library is loaded, which can be caused by incorrect placement of the script tag in the HTML file. The code is running in a different scope or environment where the $ symbol is not defined or has a different meaning. ReferenceError: $ is Not Defined Example Here’s an example of a Javascript ReferenceError: $ is not defined thrown when jQuery is not properly loaded in a script that uses it: Example Click me In this example, the code is trying to use the jQuery library. Since jQuery is not included in the above script, running it throws the error: Uncaught ReferenceError: $ is not defined How to Fix ReferenceError: $ is Not Defined To fix the ReferenceError: $ is not defined error, jQuery should be properly loaded... --- ### Spring Error Tracking with Rollbar > Install our Spring SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-20 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/spring-error-tracking/ --- ### Android Error Tracking with Rollbar > Install our Android SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-20 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/android-error-tracking/ --- ### More Powerful Custom Grouping - Published: 2014-06-09 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/more-powerful-custom-grouping/ - Categories: product - Tags: monitor Our Custom Grouping feature just got a lot more powerful. It's now possible to: group TimeoutErrors by the controller+action it appears in group 404s by path group all Android exceptions by the app version number and much more, just by writing a simple JSON rule. This feature is live now for all accounts. For the uninitiated: Custom Grouping allows you to tune Rollbar's grouping algorithm for the specifics of your application. If our default algorithm isn't grouping incoming occurrences like you want, you can define rules to customize. Rules consist of a condition, a title, and a fingerprint. If an incoming occurrence matches the condition, then it will be grouped with others that have the same fingerprint, and given the title title. (If it doesn't match, then the next rule is evaluated, or if there are no more rules, the default algorithm is applied. ) Previously, the title and fingerprint could only contain static text. Now, they're templates that can reference: any part of the incoming occurrence the title and fingerprint generated by our default algorithm For example, to group all ActionController::RoutingErrors by the request path (which comes in as the exception message): Or to have all Android exceptions grouped by app version: See the docs for more details. We've already seen this solve a diverse set of grouping problems and are really excited about how powerful this is. If you have any questions about how to get your errors grouped the way you want, drop us a line at... --- ### How to Fix IndexError: string index out of range in Python > This error occurs when an index is attempted to be accessed in a string that is outside its range. Learn how to fix it. - Published: 2023-04-24 - Modified: 2023-07-10 - URL: https://rollbar.com/blog/python-indexerror-string-index-out-of-range/ - Categories: Code Tutorials, Python - Tags: Python The Python IndexError: string index out of range error occurs when an index is attempted to be accessed in a string that is outside its range. What Causes IndexError: string index out of range This error occurs when an attempt is made to access a character in a string at an index that does not exist in the string. The range of a string in Python is , where len(str) is the length of the string. When an attempt is made to access an item at an index outside this range, an IndexError: string index out of range error is thrown. Python IndexError: string index out of range Example Here’s an example of a Python IndexError: string index out of range thrown when trying to access a character outside the index range of a string: my_string = "hello" print(my_string) In the above example, since the string my_string contains 5 characters, its last index is 4. Trying to access a character at index 5 throws an IndexError: string index out of range: Traceback (most recent call last): File "test. py", line 2, in print(my_string) ~~~~~~~~~^^^ IndexError: string index out of range How to Handle IndexError: string index out of range in Python The Python IndexError: string index out of range can be fixed by making sure any characters accessed in a string are within the range of the string. This can be done by checking the length of the string before accessing an index. The len function can be used to... --- ### Java Error Tracking with Rollbar > Install our Java SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-20 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/java-error-tracking/ --- ### Local variable values in stack traces - Published: 2014-06-05 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/local-variable-values-in-stack-traces/ - Categories: product - Tags: debug "This stack trace would be so much easier to debug if I knew what the value of that variable was" - said us, many many times. We finally scratched our own itch and built this into Rollbar. It's really awesome. Take for example a bug I ran into with our new deploy emails feature: "Hmmm, sure would be nice if I knew which variable was None--is it prev_deploy or deploy? " In the past, I would've had to reproduce locally, or add an additional rollbar. report_message to log each variable in production. But now I can just press "locals" for the stack frame and see it instantly: "OK, it's prev_deploy. " That was all I needed: prev_deploy will be None when deploy is the very first deploy in this project. Easy two-line fix. Time taken from opening the Rollbar notification to committing the fix: 2 minutes. Rollbarred! How it works We've implemented this in Python (pyrollbar), and are actively exploring other languages. Ruby and PHP are looking promising. Here's how it works in Python. When this feature is enabled and an exception is reported, we use the inspect module to collect: all stack frames: names and values of all variables that are function arguments in-project stack frames: names and values of all local variables There are two main edge cases to deal with: The variable could contain sensitive data. To deal with this, we use the same scrub_fields configuration used for scrubbing request data. If the variable name matches one... --- ### How to Handle Exceptions in Ruby with Rescue > Ruby provides a powerful error handling mechanism called Rescue. Learn how it works and common ways to use it to your advantage. - Published: 2023-04-24 - Modified: 2023-04-24 - URL: https://rollbar.com/blog/handle-exceptions-in-ruby-with-rescue/ - Categories: Code Tutorials, Ruby - Tags: ruby Ruby has a robust error handling mechanism called rescue. The way it works is the keyword rescue specifies an exception handler that will catch and handle any exceptions that are raised in the begin block, the code block preceding the rescue block that may cause an exception. Here’s how it looks: begin # code that may raise an exception rescue # code to handle the exception end When an exception occurs in the begin code block, Ruby transfers control to the rescue block and executes the code within it. And when no exception is raised, the rescue block is skipped and the program continues executing normally. Example: Using Rescue to Handle An Exception In this example, the divide method takes two arguments, a and b , and attempts to divide a by b . If b is zero, a ZeroDivisionError exception is raised. To handle this exception, we use a begin block followed by a rescue block. The rescue block catches the ZeroDivisionError exception and prints an error message to the console. It then sets the result to nil and returns it. def divide(a, b) begin result = a / b rescue ZeroDivisionError => e puts "Error: #{e. message}" result = nil end return result end puts divide(10, 2) # Output: 5 puts divide(10, 0) # Output: Error: divided by 0 # nil Output: 5 Error: divided by 0 The code block that might raise an exception is placed within the begin block, and the rescue block is used to... --- ### Django Error Tracking with Rollbar > Install our Django SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-20 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/django-error-tracking/ --- ### How to transform Rollbar payload in .NET Core 7 > Using Rollbar is great for Exceptions both handled and unhandled. But there is so much more you can get out of a solution like Rollbar.We often hear users asking us to log structured log data to Rollbar or that they have a custom Json object that they would like to store in Rollbar. - Published: 2023-04-12 - Modified: 2023-04-12 - URL: https://rollbar.com/blog/how-to-transform-rollbar-payload-net7/ - Categories: product - Tags: ai, chatai, ml Logging JSon data to Rollbar Using Rollbar is great for Exceptions both handled and unhandled. But there is so much more you can get out of a solution like Rollbar. We often hear users asking us to log structured log data to Rollbar or that they have a custom JSon object that they would like to store in Rollbar. If you just send in the Json object using Rollbar. Info(YOUROBJECT) you will find that it is placed in the message body as a string. This is fine but we can do a lot better. In my example below I want to use Rollbar to accept my logs from a . NET 7 API. I log everything to Rollbar not just exceptions. So I have created my own object that contains a set of properties and I would like to send that into Rollbar as something more than just a string message. Using Rollbar Payload Transformer Lets look atthe code example to use the Payload Transform function to modify the payload before it is sent to Rollbar. //Global Variables for access token and Environment const string rollbarAccessToken = "xxxxxxxxxxxxxxxxxxxxxx"; //Add your Server Side (Post) Rollbar Access Token string rollbarEnvironment = "production"; //Lets auto identify the Environment #if DEBUG // debug stuff goes here rollbarEnvironment = "development"; #else // release stuff goes here rollbarEnvironment = "production"; #endif //Send to Error Monitoring Solution RollbarLoggerConfig rollbarConfig = new RollbarLoggerConfig(rollbarAccessToken, rollbarEnvironment); RollbarLocator. RollbarInstance. Configure(rollbarConfig); //Lets send in a custom JSon Object butplace it into the... --- ### Security patch for the recent CCS Injection Vulnerability - Published: 2014-06-05 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/security-patch-for-the-recent-ccs-injection-vulnerability/ - Categories: product - Tags: security For the security conscious folks out there - We just finished patching our load balancers with the latest security updates. That is all. :) More info can be found here. --- ### How to Fix TypeError: Int Object Is Not Iterable in Python > The Python TypeError: Int Object Is Not Iterable is an exception that occurs when trying to loop through an integer value. Learn how to fix it. - Published: 2023-04-11 - Modified: 2023-04-11 - URL: https://rollbar.com/blog/python-typeerror-int-object-not-iterable/ - Categories: Code Tutorials, Python - Tags: Python The Python TypeError: 'int' object is not iterable is an exception that occurs when trying to loop through an integer value. In Python, looping through an object requires the object to be “iterable”. Since integers are not iterable objects, looping over an integer raises the TypeError: 'int' object is not iterable exception. Python TypeError: Int Object Is Not Iterable Example Here’s an example of a Python TypeError: 'int' object is not iterable thrown when trying iterate over an integer value: myint = 10 for i in myint: print(i) In the above example, myint is attempted to be iterated over. Since myint is an integer and not an iterable object, iterating over it raises a TypeError: 'int' object is not iterable: File "test. py", line 3, in for i in myint: TypeError: 'int' object is not iterable How to Fix TypeError: Int Object Is Not Iterable In the above example, myint cannot be iterated over since it is an integer value. The Python range function can be used here to get an iterable object that contains a sequence of numbers starting from 0 and stopping before the specified number. Updating the above example to use the range function in the for loop fixes the error: myint = 10 for i in range(myint): print(i) Running the above code produces the following output as expected: 0 1 2 3 4 5 6 7 8 9 How to Avoid TypeError: Int Object Is Not Iterable The Python TypeError: 'int' object is not iterable error... --- ### Flask Error Tracking with Rollbar > Install our Flask SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-20 - Modified: 2022-06-16 - URL: https://rollbar.com/platforms/flask-error-tracking/ --- ### Deploy emails show which commits were deployed - Published: 2014-06-04 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/deploy-emails-show-which-commits-were-deployed/ - Categories: product - Tags: monitor We recently added a feature I've wanted for a long time: our Deploy email notifications now show which commits were in that deploy. It looks like this: This works by querying GitHub's API to find the differences between the commit used for the previous deploy and the commit you just deployed. (If this looks familiar, it's because we show the same information on the Deploys page). As long as one user in your account has GitHub enabled (and the token enabled for your account), all users will be able to see the commit list. Want this? Sign up for a free account, connect with GitHub, and set up deploy tracking. Whenever you deploy, you and your team will get an email like the one above. --- ### Python Error Tracking with Rollbar > Install our Python SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-20 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/python-error-tracking/ --- ### How to Handle TypeError: Unhashable Type ‘Dict’ Exception in Python > The Python Unhashable Type ‘Dict’ exception usually occurs when trying to hash an unhashable object like a dictionary. Learn how to fix it. - Published: 2023-04-11 - Modified: 2023-04-11 - URL: https://rollbar.com/blog/python-typeerror-unhashable-type-dict-exception/ - Categories: Code Tutorials, Python - Tags: Python The Python TypeError: unhashable type: 'dict' usually occurs when trying to hash a dictionary, which is an unhashable object. For example, using a dictionary as a key in another dictionary will cause this error. This is because dictionaries only accept hashable data types as a key. Only immutable objects such as strings, integers and tuples are hashable since they have a single unique value that never changes. Hashing such objects always produces the same result, so they can be used as keys for dictionaries. TypeError: Unhashable Type: 'Dict' Example Here’s an example of a Python TypeError: unhashable type: 'dict'thrown when a dictionary is used as the key for another dictionary: my_dict = {1: 'A', {2: 'B', 3: 'C'}: 'D'} print(my_dict) Since a dictionary is not hashable, running the above code produces the following error: File "test. py", line 1, in my_dict = {1: 'A', {2: 'B', 3: 'C'}: 'D'} TypeError: unhashable type: 'dict' How to Fix TypeError: Unhashable Type: 'Dict' The Python TypeError: unhashable type: 'dict' can be fixed by casting a dictionary to a hashable object such as tuple before using it as a key in another dictionary: my_dict = {1: 'A', tuple({2: 'B', 3: 'C'}): 'D'} print(my_dict) In the example above, the tuple function is used to convert the dictionary to a tuple. The above code runs successfully and produces the correct output: {1: 'A', (2, 3): 'D'} Track, Analyze and Manage Errors With Rollbar Managing errors and exceptions in your code is challenging. It can make deploying... --- ### Daily summary email bugfix - Published: 2014-06-02 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/daily-summary-email-bugfix/ - Categories: product - Tags: monitor Last week we fixed a bug in our daily summary emails that a customer reported on May 1st. The bug caused some of the emails to miss information on errors that occurred during certain parts of the day. This was a pretty serious bug. It affected almost all of our customers and had been around for a very long time. The issue ended up being a miscalculation in our timezone handling code. Most developers who have worked with timezones know how difficult it can be to get it right. I'll explain how we did it and how Rollbar helped us quickly narrow in on the problem. Debugging The symptoms: The occurrence counts in some of the daily summary emails were too low Some new errors were not even in the daily summary emails The first thing I did was to recreate the database query by hand. After reading the code and pulling out the relevant queries, I was able to recreate the daily summaries for production but in a development environment. At this point, it was clear that we were missing data but the query was correct. Some possible culprits: MySQL slave delay Long-running MySQL transactions Nebulous time-zone related bug in our code I was able to verify that MySQL slave delay was not the cause by looking at our Scout graphs for the database host. Slave delay was nowhere near where it needed to be to cause this. Next, I looked for long-running MySQL transactions. We have quite a... --- ### Sinatra Error Tracking with Rollbar > Install our Sinatra SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-19 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/sinatra-error-tracking/ --- ### How to Handle TypeError: Cannot Unpack Non-iterable Nonetype Objects in Python > The TypeError:cannot unpack non-iterable nonetype objects occurs when we try to unpack a ‘None’ value as if it were an iterable object. Learn how to fix it. - Published: 2023-04-11 - Modified: 2023-04-11 - URL: https://rollbar.com/blog/python-typeerror-cannot-unpack-noniterable-nonetype-objects/ - Categories: Code Tutorials, Python - Tags: Python The Python error message cannot unpack non-iterable NoneType object typically occurs when we try to unpack a None value as if it were an iterable object. In this guide, we'll explore what this error means, why it occurs, and how to fix it. Let's take a closer look at the error message: TypeError: cannot unpack non-iterable NoneType object The first part of the message tells us that we've encountered a TypeError, which is an error that occurs when we try to perform an operation on a value of the wrong type. The second part of the message tells us that we're trying to unpack a non-iterable NoneType object. In Python, an iterable is an object that can be looped over, such as a list, tuple, or dictionary. And unpacking refers to extracting values from an iterable object and assigning them to individual variables. Example: Unpacking in Python In this example, we have defined a tuple my_tuple that contains three values. We then unpack the tuple into variables a,b, and c using the assignment statement. Each value in the tuple is assigned to a separate variable, which we can then use in our program. my_tuple = (1, 2, 3) a, b, c = my_tuple print(a) # Output: 1 print(b) # Output: 2 print(c) # Output: 3 The NoneType object is a special type in Python that represents the absence of a value. It is used to indicate that a variable or expression does not have a value or has an undefined... --- ### rollbar-php v0.9.2 released - Published: 2014-05-30 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/rollbar-php-v0-9-2-released/ - Categories: product - Tags: PHP We've released another small update to rollbar-php, version 0. 9. 2. Get it on Packagist or GitHub. This release contains a fix for an issue occurring in high-volume environments using rollbar-php with rollbar-agent. Previously, it was possible for relay log filenames to collide; now, the filenames include both the PID and the current time in microseconds (from microtime(true)). Thanks to Ryan Fink for the pull request. --- ### Rails Error Tracking with Rollbar > Install our Rails SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-19 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/rails-error-tracking/ --- ### 10 Best PHP Frameworks For Savvy Web Devs In 2023 > The most popular PHP frameworks used by the industry's most seasoned and savvy web developers are → ✓Larvel ✓Symfony ✓CodeIgniter ✓CakePHP... - Published: 2023-04-06 - Modified: 2023-04-20 - URL: https://rollbar.com/blog/10-best-php-frameworks/ - Categories: Code Tutorials, PHP - Tags: PHP What is a PHP framework? A PHP framework is a platform to build PHP web applications. PHP frameworks provide libraries for commonly used functions, which helps to cut down on the amount of original code developers need to write from scratch. A PHP framework provides a basic foundation for the development of web applications in PHP. Frameworks are useful because they speed up and standardize the development process, reducing doubts about how to start building an application. Why use a PHP framework? There are several reasons for using PHP frameworks compared to coding from scratch: Faster development - The time required for development is much less because of built-in libraries and tools. Better performance - Since frameworks are thoroughly tested for quality and performance, using PHP frameworks helps businesses meet their performance needs. Less code - The need to write original code is reduced when using functions built-in to frameworks. Libraries for common operations - Many tasks that developers need to perform when building applications can be repetitive e. g. validation, data cleaning and CRUD operations. Frameworks allow performing such common tasks using built-in functions. Following best practices - PHP frameworks usually follow best-practices e. g. they organize code in a clean and maintainable way and follow good naming conventions. More secure - Using PHP frameworks minimizes chances of exploits such as cross-site scripting and SQL injection. Good PHP frameworks have built-in defenses against such common threats. Enable teamwork - Using frameworks sets clear rules for projects, enabling developers to... --- ### Ruby Error Tracking with Rollbar > Install our Ruby SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-19 - Modified: 2024-11-05 - URL: https://rollbar.com/platforms/ruby-error-tracking/ --- ### rollbar-php v0.9.1 released - Published: 2014-05-29 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/rollbar-php-v0-9-1-released/ - Categories: product - Tags: PHP We've released another small update to rollbar-php, version 0. 9. 1. Get it on Packagist or GitHub. This release contains a fix for an issue when using rollbar-php with rollbar-agent, our server-side agent that allows asynchronous reporting. Previously, when used in agent mode, blank files would be created on each request, even if there was nothing to report. Now, these files are only created when needed. Thanks to Ryan Fink from Red Ventures for the fix. --- ### Laravel Error Tracking with Rollbar > Install our Laravel SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-14 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/laravel-error-tracking/ --- ### Rollbar Apple SDK 3.0.0 Released - Published: 2023-04-04 - Modified: 2023-04-04 - URL: https://rollbar.com/blog/new-apple-error-tracking-sdk/ - Categories: product - Tags: ai, chatai, ml Rollbar Apple SDK 3. 0. 0 Released We are excited to announce the latest release of our Rollbar SDK for Apple, version 3. 0. 0. This release includes several new features and enhancements to improve the functionality and performance of our error tracking and debugging platform. Complete rewrite of the crash reporting functionality The crash reporting functionality in the SDK has been completely rewritten. Crash reports now include the full crash stack trace, a meaningful description of what triggered the crash, and additional diagnostic information to make it easier to determine the root cause of the crash. Here are some of the key features and improvements included in this release: Improved Performance: We have made several performance enhancements to reduce the impact of the SDK on your application's runtime. This means that you can use Rollbar to track errors and exceptions without worrying about any impact on your app's performance. Custom Logging: With this new release, you can now log custom data to Rollbar using the SDK. This makes it easier to track and debug issues in your application by providing additional context around the error or exception. Support for SwiftUI: We have added support for SwiftUI, Apple's latest UI framework, to the Rollbar SDK. This means that you can now use Rollbar to track errors and exceptions in your SwiftUI-based apps. Improved Crash Reporting: We have made several improvements to our crash reporting capabilities, making it easier to identify and resolve issues in your application. Support for iOS 15:... --- ### Symfony Error Tracking with Rollbar > Install our Wordpress SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-14 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/symfony-error-tracking/ --- ### Most Popular Java Backend Frameworks for 2023 - Published: 2023-03-28 - Modified: 2023-04-20 - URL: https://rollbar.com/blog/most-popular-java-backend-frameworks/ - Categories: topics - Tags: java An intuitive user interface is a hallmark of any decent business. But in order for the frontend of applications to work smoothly, you must also consider the backend. Backend development, also called server-side development, handles the behind-the-scenes functions of web development – things like interactions with databases, authorizing users and routing URLs. As the most popular programming language for over 20 years, Java has a whole host of backend frameworks, but their reliability and versatility vary widely. Today’s most popular Java backend frameworks are: Spring Framework Struts Hibernate This list is based on usage from Hotframework. com's Java ranking and several other sources including blog posts and GitHub download numbers. All three of these frameworks have a strong programmer community surrounding them, but each brings its own strengths and weaknesses to the table. Java Backend Frameworks – Quick Comparison Strengths Weaknesses Spring Framework 1. Many ready-made components that are helpful for web apps 2. DI and IoC create flexible configurations 3. Easy to expose RESTful services 1. Many dependencies 2. The wealth of options can lead to confusion 3. Learning curve since it can do so much Struts 1. A good starting point for beginners 2. Provides great flexibility with its unique MVC model 3. Less development time and easier to maintain 1. Not as many resources are available as compared to others 2. Less transparency means that apps using Struts are harder to optimize Hibernate 1. Data-focused 2. Its use of abstraction layers makes data configuration much easier 3.... --- ### Wordpress Error Tracking with Rollbar > Install our Wordpress SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-14 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/wordpress-error-tracking/ --- ### rollbar-gem v0.12.20 released - Published: 2014-05-29 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/rollbar-gem-v0-12-20-released/ - Categories: product - Tags: ruby We've released a new patch version of rollbar-gem, version 0. 12. 20. Get it on Rubygems or GitHub. This release contains a compatibility fix for Sidekiq < 2. 3. 2, as well as an improvement to the project_gems feature. If you have multiple gems that you want to be considered in-project code, you can now specify them with a regex (strings still work too). For example: Rollbar. configure do |config| config. project_gems = end Thanks to Jonathan Cheatham for the pull request. --- ### What Are the Different Types of Python Errors? – and How to Handle Them > Understanding error types is an essential part of crafting effective Python apps. Each type denotes a distinct problem within the code. These 7 are typical. - Published: 2023-03-21 - Modified: 2023-05-16 - URL: https://rollbar.com/blog/python-errors-and-how-to-handle-them/ - Categories: Code Tutorials, Python - Tags: Python There are several types of errors that can occur in Python. Each type indicates a different kind of problem in the code, and comprehending these error types is crucial in creating effective Python applications. The most common types of errors you'll encounter in Python are syntax errors, runtime errors, logical errors, name errors, type errors, index errors, and attribute errors. Let's go through each with examples. How Do I Know What Type of Error I Have? When Python encounters an error, it typically stops the program and displays an error message that indicates the type of error and the line number where the error occurred. 1. Syntax Errors A syntax error occurs in Python when the interpreter is unable to parse the code due to the code violating Python language rules, such as inappropriate indentation, erroneous keyword usage, or incorrect operator use. Syntax errors prohibit the code from running, and the interpreter displays an error message that specifies the problem and where it occurred in the code. Here's an example of a Python syntax error: x = 10 if x == 10 print("x is 10") When the above code is executed in an IDE, we get the following output message that describes the error and the location in the code where it occurred: File "c:\Users\name\OneDrive\Desktop\demo. py", line 2 If x == 10 ^ SyntaxError: expected ':' It shows that there is a SyntaxError on line 2 of the file demo. py. Solution The SyntaxError occurs on line 2 because the... --- ### PHP Error Tracking with Rollbar > Install our PHP SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-09 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/php-error-tracking/ --- ### rollbar-php v0.9.0 released - Published: 2014-05-23 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/rollbar-php-v0-9-0-released/ - Categories: product - Tags: PHP We've released a new version of rollbar-php, version 0. 9. 0. It's available now on Packagist, or find the source on GitHub. E_NOTICES NOW IGNORED BY DEFAULT Rollbar can track E_NOTICEs as 'info'-level events, but in practice this often turns into large amounts of data, even for relatively low-traffic projects. We've changed the defaults to now ignore E_NOTICE errors. If you do want E_NOTICEs to be sent to Rollbar, configure like this: --- ### Vue Error Tracking with Rollbar > Install our Vue.js SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-09 - Modified: 2024-11-05 - URL: https://rollbar.com/platforms/vue-error-tracking/ --- ### What Makes a Company Attractive to Candidates? > In today’s competitive talent marketplace, making your company attractive to potential candidates is a must. In this case study, we covered how one of our favorite partners, Rollbar, achieves a great employer brand during the recruitment process. - Published: 2023-03-16 - Modified: 2023-03-16 - URL: https://rollbar.com/blog/what-makes-a-company-attractive-to-candidates/ - Categories: Uncategorized - Tags: business-impact, employee, recruiting Original Post Can be Found here: iseeq BLOG A recruitment case study with Rollbar As a recruitment agency, we (iseeq) can confidently say that we value the partners our candidates love the most – lucky for us, Rollbar is one of those clients in our current portfolio. Since establishing our partnership with them we successfully placed several outstanding individuals into their teams. What makes Rollbar so attractive for our candidates during the selection process and beyond that? What could other tech companies learn from them? We Interviewed Zita Lőrinczi, the company’s Business & People Operations Manager and we have answers! A mission that candidates are eager to contribute to Visions, missions, and values are not just must-haves or buzzwords to use at company presentations. Used wisely, they are key elements of the company’s everyday life and the building blocks of the culture. Occasionally they might even come in handy when it comes to attracting talent. Rollbar’s mission is to help developers build software quickly and painlessly. Needless to say, this statement is pretty attractive to their target audience in the job market. We would recommend every company that stays true to its core statements like vision, mission, or values to communicate those from the early stages of the recruitment process for like-minded candidates to be more engaged. Well-thought-out positions with clear requirements Gaining hundreds of applicants for an open position is all fun and games until companies find out that their witty texts are not just attractive to potential candidates,... --- ### rollbar.js v1.0.0-rc8 released - Published: 2014-05-22 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/rollbar-js-v1-0-0-rc8-released/ - Categories: product - Tags: JavaScript Today, we released rollbar. js version 1. 0. 0-rc8. This release includes a fix for a bug where the global variable i was used, which could cause strange behavior when interacting with other code that also references i as a global variable. The change is live now and being served from our CDN - no action is required on your part for most customers. If you're self-hosting rollbar. js, we recommend upgrading your copy to the latest. --- ### React Native Error Tracking with Rollbar > Install our React SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-09 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/react-native-error-tracking/ --- ### Using Rollbar for Performance Monitoring > Rollbar allows you to gain real-time visibility into exceptions and crashes in your applications and act on them quickly and easily. An important piece of any application is knowing if transactions are executing slower or below a certain threshold. - Published: 2023-03-15 - Modified: 2023-03-15 - URL: https://rollbar.com/blog/how-to-use-rollbar-for-performance-monitoring/ - Categories: product - Tags: ai, chatai, ml How to capture performance issues with Rollbar Rollbar allows you to gain real-time visibility into exceptions and crashes in your applications and act on them quickly and easily. An important piece of any application is knowing if transactions are executing slower or below a certain threshold. Rollbar provides an easy method to send this data to be processed quickly and easily inside your existing Rollbar project. First we need to understand what data and metrics we need to capture to help understand slow responses and understand the root cause of these. Let’s take a look at a Python application where we want to track slow responses as a Rollbar item. Here is what we recommend to ensure an easy way to use this data: We recommend sending events as warnings/errors based on thresholds. For example, "Request over 10s: project/index". Send the detailed timing information as a custom parameter. Include your standard Rollbar metadata like request, server, person, custom, etc. How will this performance data look inside Rollbar? Below is an example of API calls that have been logged in Rollbar where the request was over the set threshold (set in seconds). Python code to capture slow requests Let’s create the functions to help capture and log these slow transactions in our Python application. Sample Python code for a context manager to report slow code paths: import time import rollbar import logging log = logging. getLogger(__name__) class ReportIfSlow(object): default_thresholds = { 'error': 30, 'warning': 10, 'info': 2 } def __init__(self, message,... --- ### Heartbleed Bug Response - Published: 2014-04-08 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/heartbleed-bug-response/ - Categories: product - Tags: security Updated 4/9 7:30pm What is Heartbleed? CVE-2014-0346, known as “Heartbleed”, is a bug in OpenSSL v1. 0. 1 through 1. 0. 1f that allows a remote attacker to access private memory on the target server. It has existed for almost 2 years. More info can be found here: http://heartbleed. com/ With this vulnerability, an attacker can: Get your private key for your domain’s ssl cert Decrypt all current and past SSL traffic to/from all affected machines If this sounds bad, it is. Most sites on the Internet are affected. Are you affected? Probably. If your web server or load balancer is running on linux and you’ve updated your packages anytime in the last 2 years, you are more-than-likely affected. To check your OpenSSL version, run openssl version -a Check out http://filippo. io/Heartbleed/ to test your servers for the vulnerability. How We Responded We learned of CVE-2014-0346 at around 4:50pm on 4/7 and immediately began our response. We completed the most important fix (patching OpenSSL) within about an hour, and have been working over the past 24 hours on related issues. Here is a timeline of what we’ve done since the vulnerability was announced: 4/7 - 3:01pm - Ubuntu Security Announcements email Subscribe to this list here 4/7 - 4:50pm - Began updating our load balancers with the fix. All servers patched by 6pm. We’re running nginx on Ubuntu 12. 04. Updating is as simple as: apt-get update apt-get upgrade openssl version -a # should show that it was built on... --- ### React Error Tracking with Rollbar > Install our React SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-08 - Modified: 2024-11-05 - URL: https://rollbar.com/platforms/react-error-tracking/ --- ### How to add context to errors with custom tags > One of the hardest tasks for software engineers is often having to stop what you are doing and look into a software bug (error), find the root cause and fix it quickly. This is hard because you may have never seen the affected code (someone else wrote it), it could be code you wrote a long time ago or just the context switching from what you are working on right now. - Published: 2023-03-13 - Modified: 2023-03-15 - URL: https://rollbar.com/blog/tag-errors-with-custom-tags/ - Categories: product - Tags: ai, chatai, ml How to add context to errors with custom tags An important component of understanding the root cause of an error, and the importance of an error to the business is having additional contextual information about the error. The specific additional data that is important for your errors will be unique for your application and possibly the category of the error. Rollbar provides an easy way to tag your error data with additional custom tags. There are 2 main ways of doing this. The first way to do it is to add the tags when Rollbar is initialized in your application or web page these tags will be sent with each error sent to Rollbar. The second way to do it is to add the tag in the context of a specific error or group of errors Custom tags included with the error can be either single string value or hierarchical key value data. For example Javascript JSON data , or Python dictionaries of dictionaries. For certain Rollbar SDKs additional custom data tags can be added for a specific context When triaging your errors in Rollbar, custom tags are displayed as table columns. Using the Rollbar Query Language (RQL) you can easily analyze and filter your error data by your custom data tags using familiar SQL style syntax. This is a powerful solution to help you to quickly understand the business impact and root cause of your errors. Track, Analyze and Manage Errors at Scale Managing errors and exceptions in your... --- ### Connecting Rollbar with PagerDuty - Published: 2013-10-16 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/connecting-rollbar-with-pagerduty/ - Categories: product - Tags: integrations Using Rollbar with PagerDuty is now a lot more seamless. PagerDuty provides SaaS IT on-call schedule management, alerting, and incident tracking. With our new integration, you can automatically send issues found by Rollbar into incidents in PagerDuty. We have a few customers using it already. Here’s what Richard Lee, CTO at Polydice, a mobile development studio, has to say: “With Rollbar’s integration of PagerDuty, we’re able to get notified as soon as errors detected, and avoid possible downtime to our customers. This powerful combination becomes a must have tool for us. ” — Richard Lee, CTO at Polydice Integrating Rollbar with PagerDuty is easy; just create a new Generic API System in PagerDuty, and then link it in Rollbar’s Notification settings. See our docs for detailed instructions. --- ### Express Error Tracking with Rollbar > Install our Express SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-08 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/express-error-tracking/ --- ### Ember Error Tracking with Rollbar > Install our Ember SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-08 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/ember-error-tracking/ --- ### Resolving Rollbar Items in Versions - Published: 2013-09-17 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/resolving-rollbar-items-in-versions/ - Categories: product - Tags: triage We just rolled out a new feature to help track which versions/revisions errors are resolved in. When resolving items within Rollbar, you have the option of entering a revision or version number. If one is entered, it will appear in the item’s status history to let anyone looking at the item better understand specifically when it was fixed. This version can be combined with a new code_version parameter set in the configuration options of the latest versions of our notifiers. This can be set to either a numerical value (eg. 1, 24, 300), a semantic version value (eg. 1. 0. 3, 2. 9), or a git revision sha. Here are examples on how to set this parameter in our JavaScript and Ruby notifiers: In the JavaScript snippet: _rollbarParams = { // ... other configuration "client. javascript. code_version": "bdd2b9241f791fc9f134fb3244b40d452d2d7e35" } In your rollbar-gem configuration: Rollbar. configure do |config| # ... other configuration config. code_version = 'bdd2b9241f791fc9f134fb3244b40d452d2d7e35' end The other notifiers have a very similar top-level code_version configuration settings. See the notifier readmes for more info. If you resolve an item within Rollbar in a certain version and are also specifying a code_version for your code, we will use both of these values to decide whether or not to reactivate the item. For example, say you have a bug in version 1. 0 of your app. The bug is fixed and will be deployed to users in verision 1. 1, but that won’t happen for a few days. You can just resolve... --- ### How to Debug Code Using ChatGPT > ChatGPT can help you debug quickly and efficiently. Follow these 6 steps to engineer prompts that give the best results. - Published: 2023-03-13 - Modified: 2023-07-21 - URL: https://rollbar.com/blog/how-to-debug-code-using-chatgpt/ - Categories: topics - Tags: debug, OpenAI Unlike traditional debugging tools, which can be complex and require specific knowledge of the programming language, ChatGPT is accessible to programmers of all levels and works in any language. Simply ask ChatGPT specific questions about error messages or unexpected behavior and you’ll get a reply with relevant information that can help you identify and fix the issue. While every interaction with ChatGPT will be different (it is a chatbot afterall), there are some common steps to follow that will help you engineer prompts that give the best results. This blog post will walk through these steps and share examples. Step 1: Identify the Problem The first step in debugging is to identify the problem. This can be the most challenging part of the process, as the problem may not always be obvious. You may have to look for clues, such as error messages or unexpected behavior, to pinpoint the problem. You can ask ChatGPT questions about the error messages or the behavior you are seeing to get a better idea of what is causing the problem. Step 2: Isolate the Problem Once we have identified the problem, the next step is to isolate it. This involves finding the exact line or lines of code that are causing the problem. You can ask ChatGPT for help in determining which lines of code are causing the issue. Step 3: Reproduce the Problem In order to debug the problem, it's essential to reproduce it consistently. You can ask ChatGPT for guidance on how... --- ### Angular Error Tracking with Rollbar > Install our Angular SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-08 - Modified: 2024-11-05 - URL: https://rollbar.com/platforms/angular-error-tracking/ --- ### Ad-hoc error reporting with Rollbar CLI - Published: 2013-08-08 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/ad-hoc-error-reporting-with-rollbar-cli/ - Categories: product - Tags: monitor We just coded up a quick tool to send Rollbar messages from the command line. It’s useful for quick, one-off monitoring scripts that you don’t have time to instrument with one of our notifiers. To install, just pip install rollbar and you’re done. e. g. Tracking all non-500s as WARNINGs from HAProxy tail -f /var/log/haproxy. log | awk '{print $11,$0}' | grep '^5' | awk '{$1="";print "warning",$0}' | rollbar -t $ACCESS_TOKEN -e production -v e. g. Watch failed login attempts tail -f /var/log/auth. log | grep -i 'Failed password' | awk '{print "error user ",$11,"failed auth from ",$13}' | rollbar -t $ACCESS_TOKEN -e ops More info on how to install and use it can be found here. --- ### Introducing our new Item Detail page - Published: 2023-03-09 - Modified: 2023-03-09 - URL: https://rollbar.com/blog/introducing-our-new-item-detail-page/ - Categories: product We’re excited to share a significant update to all Rollbar plans in the next few weeks. We’ve redesigned our item detail page with a new mobile layout, prioritized important error context, display occurrence details more clearly, and put all actions at your fingertips. With our new UI, we are confident you will work more efficiently, so you can resolve errors quickly and get back to your essential work. Error resolutions on the goFirst, our most requested design change. We understand you won’t always be at your laptop, but you want to manage your errors and resolve them as quickly as possible. Our new Item Detail page will allow you to check on all your errors from any mobile device, no matter where you are. We included easy-to-read views, collapsible panels to reduce scrolling, and new slide-over panels to reduce loading times. And we even built a new action panel that gives you access to all commands from anywhere on the page. Reduced scrolling We wanted to ensure you had the most crucial actions at the top of the page and that you could resolve your error as quickly as possible. You’ll always have access to update the error’s status. From muting or unmuting notifications, assigning ownership, or creating tickets, our action header gives you access from anywhere on the page. View Item Context detailsOur new context panel provides summarized data across all the occurrences within the Item. Now you can get important information about how your errors impact your users,... --- ### Node.js Error Tracking with Rollbar > Install our Node.js SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-08 - Modified: 2023-03-23 - URL: https://rollbar.com/platforms/node-error-tracking/ --- ### jQuery Error Instrumentation - Published: 2013-08-07 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/jquery-error-instrumentation/ - Categories: product - Tags: JavaScript Today we are releasing a new feature for our JavaScript notifier that should make tracking down errors much easier if you use jQuery 1. 7 and above. The new functionality comes in a separate JS plugin snippet that should be placed right below where jQuery is loaded. Here is the first version of the plugin: // The source can be found on GitHub here. The snippet wraps the ready, on and off functions in jQuery to wrap any passed-in handlers in try/except blocks to automatically report errors to Rollbar. This lets us collect the full stack trace with line and column numbers for each frame, instead of just the last frame with only a line number. When combined with source maps, this makes debugging JavaScript errors much more doable. The new snippet also adds a handler to ajaxError to automatically report any jQuery AJAX errors such as 404s and 500s to Rollbar. If you don’t want this, add the following option to your base snippet’s _rollbarParams: "notifier. plugins. jquery. ignoreAjaxErrors": true You can start tracking errors in Rollbar by signing up for free. Or read more in the docs. --- ### Javascript Error Tracking with Rollbar > Install our JavaScript SDK in minutes and see the errors your users are experiencing. Available in all popular languages and frameworks. - Published: 2022-03-08 - Modified: 2025-03-17 - URL: https://rollbar.com/platforms/javascript-error-tracking/ --- ### Item Detail Page Update Details - Published: 2023-03-09 - Modified: 2023-03-09 - URL: https://rollbar.com/blog/item-detail-page-update-details/ - Categories: product We have introduced a new design for the Item Detail page - as well as helping to investigate & resolve Items more quickly, the layout provides a framework for adding future improvements and also introduces a new style that will roll out across the Rollbar website in future. Updated Look & Feel The new design aims to bring a cleaner layout to the Item Detail page. The new design and layout will be gradually rolled out across the whole Rollbar site as we continue to update all pages. It also provides a structure for future improvements that we will be introducing to the Item Detail page. Some key elements include A fixed Action Header accessible from wherever you are in the Item Detail page An Item Header providing details about the Item itself, breadcrumbs for navigation and a clear section for Service Links Contextual information about the Item, giving an overview of the details across all the Occurrences grouped together in the Item Details of the individual Occurrence, such as the Stack Trace, Params & Telemetry Slideover panels to investigate Occurrences, IPs & People More prominent placement of the Item History panel to enable discussions with teammates We will discuss these sections in more detail below. Mobile Friendly Design The new Item Detail page is now optimized for use on mobile devices, enabling investigation and handling on the smaller viewport. The new layout provides a clear view of overview statistics, an easier ability to perform actions via the new header,... --- ### Development Updates - Published: 2022-02-04 - Modified: 2022-02-12 - URL: https://rollbar.com/development-updates/ --- ### ProTips > Watch our Rollbar Tip of the Day videos where we share with you tips and tricks on how to get the most out of Rollbar. - Published: 2021-12-06 - Modified: 2023-01-25 - URL: https://rollbar.com/protips/ --- ### JavaScript and Source Maps in a Django App - Published: 2013-08-02 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/javascript-and-source-maps-in-a-django-app/ - Categories: Code Tutorials, JavaScript, Python - Tags: JavaScript It’s pretty well known that every web app needs frontend JavaScript these days to provide the best possible user experience. You are probably going to have a bunch of JavaScript files that need to be loaded by your users for that to happen, and since we all care about performance, minifiying and compressing these files is an absolute must. But what happens when it comes time to debug issues in these minified files? Stack traces will more or less be completely useless. How do we solve this problem? JavaScript source maps solve this problem. They allow you to map a point in a minified file back to the unminfied source, making it possible to actually identify and fix issues encountered in a production app environment. Below I have outlined a simple guide for setting up source map generation and usage in a sample Django app. You’ll learn how generate source maps for minified files, debug errors that happen in these files, and also a quick overview of what’s required to get this working for your production environments. Local Debugging with Source Maps Say you have a simple Django app with the following directory structure: ... app/ ... views. py static/ js/ site. js (containing various models and functionality used in your app) jquery. js (unminified) util. js templates/ index. html site. js would have the following code: var aFunction = function { var a = b; } App = {}; App. errorCausingFunction = function { aFunction; } views. py would... --- ### How to Fix RecursionError in Python > The Python RecursionError is an exception that occurs when the maximum recursion depth is exceeded. Learn how to fix it. - Published: 2023-03-08 - Modified: 2023-03-08 - URL: https://rollbar.com/blog/python-recursionerror/ - Categories: Code Tutorials, Python - Tags: Python The Python RecursionError is an exception that occurs when the maximum recursion depth is exceeded. This typically occurs when a function calls itself recursively, and the recursion doesn't have a proper stopping condition (base case). What Causes RecursionError A RecursionError in Python is caused by a function calling itself recursively without a proper base case. Python has a limit on the number of times a function can call itself recursively. This is to ensure that the function does not execute indefinitely. If this limit is exceeded by a recursive function, a RecursionError is raised. Python RecursionError Example Here’s an example of a Python RecursionError thrown when calling a recursive function that does not have a base case: def func: func func Since the recursive function func does not have a terminating condition, calling it creates an infinite loop as the function keeps calling itself over and over again until the RecursionError: maximum recursion depth exceeded error occurs: Traceback (most recent call last): File "test. py", line 4, in func File "test. py", line 2, in func func File "test. py", line 2, in func func File "test. py", line 2, in func func RecursionError: maximum recursion depth exceeded How to Fix RecursionError in Python Here are some approaches to fix a recursion error in Python: Adding a base case: The most common cause of a recursion error is that the function does not have a base case to stop the recursion. In such cases, a base case can be added... --- ### Blog - Published: 2021-07-14 - Modified: 2023-10-12 - URL: https://rollbar.com/blog/ --- ### Rollbar Academy > Watch our training webinars to learn more about features, and check out our Rollbar Workflow webinars to get the most out of using Rollbar! - Published: 2021-06-16 - Modified: 2023-06-01 - URL: https://rollbar.com/rollbar-academy/ --- ### Debug Production Errors in Minified JavaScript with Source Maps and Rollbar - Published: 2013-07-25 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/debug-production-errors-in-minified-javascript-with-source-maps-and-rollbar/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript Rollbar just got a much-requested feature: Source Maps support for Javascript. If you minify your Javascript code in production, this will make debugging production errors much easier. This feature is now live for all accounts. {: . highlightbox} Here's a link to a recently updated tutorial on using JavaScript source maps with Rollbar. What Are Source Maps? If you minify your Javascript code (i. e. using UglifyJS2 or the Closure Compiler), it gets harder to debug errors. Stack traces reference the line/column numbers in the minified code instead of the original source code. Source Maps were designed to resolve this; they provide a mapping back from the minified line/column numbers to the original code. Chrome and Firefox have tools to use them in development, but what about errors that happen in production? Source Maps and Rollbar Rollbar can now map stack traces that reference minified code back to the original source files, lines, and column numbers. Here’s what a stack trace might have looked like before: Here’s the de-minified version: We’ll also use the de-minified stack trace in our grouping algorithm, which should result in more useful grouping. Getting this set up To get started, you’ll need to make a change to _rollbarParams in the on-page javascript snippet. Add the following two parameters: _rollbarParams = { // ... existing params ... // set this to 'true' to enable source map processing "client. javascript. source_map_enabled": true, // provide the current code version, i. e. the git SHA of your javascript code.... --- ### vs-placeholder - Published: 2021-06-02 - Modified: 2021-09-29 - URL: https://rollbar.com/vs/ --- ### How to Fix ZeroDivisionError in Python > The Python ZeroDivisionError is an exception that occurs when a number is attempted to be divided by zero. Learn how to fix it. - Published: 2023-03-08 - Modified: 2023-03-08 - URL: https://rollbar.com/blog/python-zerodivisionerror/ - Categories: Code Tutorials, Python - Tags: Python In Python, a ZeroDivisionError is raised when a division or modulo operation is attempted with a denominator or divisor of 0. What Causes ZeroDivisionError A ZeroDivisionError occurs in Python when a number is attempted to be divided by zero. Since division by zero is not allowed in mathematics, attempting this in Python code raises a ZeroDivisionError. Python ZeroDivisionError Example Here’s an example of a Python ZeroDivisionError thrown due to division by zero: a = 10 b = 0 print(a/b) In this example, a number a is attempted to be divided by another number b, whose value is zero, leading to a ZeroDivisionError: File "test. py", line 3, in print(a/b) ZeroDivisionError: division by zero How to Fix ZeroDivisionError in Python The ZeroDivisionError can be avoided using a conditional statement to check for a denominator or divisor of 0 before performing the operation. The code in the earlier example can be updated to use an if statement to check if the denominator is 0: a = 10 b = 0 if b == 0: print("Cannot divide by zero") else: print(a/b) Running the above code produces the correct output as expected: Cannot divide by zero A try-except block can also be used to catch and handle this error if the value of the denominator is not known beforehand: try: a = 10 b = 0 print(a/b) except ZeroDivisionError as e: print("Error: Cannot divide by zero") Surrounding the code in try-except blocks like the above allows the program to continue execution after the exception... --- ### Persona: QA/Testing - Published: 2021-05-27 - Modified: 2021-06-10 - URL: https://rollbar.com/solutions/persona-qa-testing/ --- ### Async node.js API server testing - Published: 2013-07-12 - Modified: 2025-02-19 - URL: https://rollbar.com/blog/async-node-js-api-server-testing/ - Categories: Code Tutorials, JavaScript - Tags: nodejs This post is about how we built our test suite for our API server at Rollbar and some of the tricks and gotchas we ran into along the way. We wanted to build a test suite that not only tested the API logic, but also the underlying code, namely the Express and the Connect middlewares we use. If our API server was going to break, we wanted to know before we deployed it to thousands of customers and millions of requests per day. Testing is super important. If you don’t want to test, this probably won’t be very helpful or interesting. We use Vows. Why not Mocha? Mocha is, by far, the most widely used testing framework for Node. js apps. So, why didn’t we use it? The two main reasons were that Vows was the first thing I found when Googling “nodejs async testing” and the other is that the syntax of Mocha tests felt like another language and less like code. Mocha tests are more readable but the benefit of readability was overshadowed by the need to remember all of these new, special-case methods that Mocha injects. //Mocha . indexOf(5). should. equal(-1); vs //Vows assert. equal(. indexOf(5), -1); There’s something that bothered me about the former. I didn’t like how the library used a bunch of magic to enable something this small/strange. Mocha has a lot of awesome features but none that were important enough for me to switch. A simple Vows test Vows works just as you’d... --- ### How to Integrate ChatGPT into Your Python Script > Want to add some cutting-edge AI magic to your code? Buckle up as we show you how to use ChatGPT in your Python script. - Published: 2023-03-04 - Modified: 2023-08-18 - URL: https://rollbar.com/blog/how-to-integrate-chatgpt-into-your-python-script/ - Categories: Code Tutorials, Python - Tags: OpenAI, Python Want to add some cutting-edge AI magic to your code? That's right, we're talking about integrating ChatGPT - the powerhouse of large language models - into your Python scripts. With ChatGPT, your code will be able to understand natural language and generate human-like responses, revolutionizing the way users interact with your applications. How to use ChatGPT in a Python script To use the ChatGPT language model in a Python script, you’ll make use of the OpenAI Python library. Here are the steps to follow: First, sign up for OpenAI API access at https://beta. openai. com/signup/ to get an API key.   Use pip to install the Python OpenAI API client library by entering the following line in the terminal: pip install openai Create an environment variable named OPENAI_API_KEY and put your API key as its value to configure your API key. Add the next line to your Python code to import the OpenAI API client: import openai Initialize the OpenAI API client by adding the following lines to your Python code: openai. api_key = "YOUR_API_KEY_HERE" model_engine = "gpt-3. 5-turbo" # This specifies which GPT model to use, as there are several models available, each with different capabilities and performance characteristics. Now call the openai. Completion. create function to generate text using the ChatGPT language model. Here's an example of how to generate a response to a given prompt. Note there is an initial "system" prompt, followed by the user's question: response = openai. ChatCompletion. create( model='gpt-3. 5-turbo', messages=) message =... --- ### May Release Roundup - Published: 2013-05-29 - Modified: 2021-07-19 - URL: https://rollbar.com/blog/may-release-roundup/ - Categories: product - Tags: monitor Here’s a roundup of what’s new at Rollbar in the month of May. Big Features We revamped our notifications system, and added integrations with a bunch of new services. Rollbar now works with Asana, Campfire, Flowdock, GitHub Issues, Hipchat, JIRA, Pivotal Tracker, and Trello, as well as any arbitrary system via a Webhook. See the announcement blog post for more details. Small Features You can now customize how occurrences are grouped. This first release allows you to define rules of things that should always be grouped together. See the documentation: Custom Grouping Rules. An in-depth post on how to use this is coming soon. There’s now a “Download CSV” link at the bottom of the Items page, which will let you download a CSV of what you see on the page. Note that this information is also available via our API. You can now sort the Items page by Total Occurrences or Unique Users, in additon to Last Occurrence. Click on the column headers to change the sort. Links to files in GitHub are now linked to the appropriate revision, when this information is available. We’ll use one of the following (trying each in order): the value of server. sha the value of server. branch, if it looks like a SHA the revision from the last deploy before the first occurrence of the item Library Updates Ruby We released rollbar-gem versions 0. 9. 11 through 0. 9. 14. The changes include a fix for use with Rails 4, a concurrency... --- ### Rules Engine for Notifications, Plus Integrations with Campfire, Hipchat, JIRA and Trello - Published: 2013-05-06 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/rules-engine-for-notifications-plus-integrations-with-campfire-hipchat-jira-and-trello/ - Categories: product - Tags: integrations Today we’re revamping the model for defining what you want to be notified about from Rollbar. Rollbar now integrates with Asana, Campfire, Flowdock, GitHub Issues, Hipchat, JIRA, Pivotal Tracker and Trello, as well as any arbitrary system via a Webhook. New Integration Channels In addition to our existing channels (Email, Asana, GitHub Issues, Pivotal Tracker, and Webhook), we’re launching support for four more: Campfire, Hipchat, JIRA, and Trello. You can set up all of this in Settings -> Notifications. Notification Rules Engine Notifications are now configured per-project (instead of per-user-per-project), using a trigger-action model. There are triggers for the following events: New Item (first occurrence of a new issue) Reactivated Item (a previously resolved issue has occurred again) 10nth Occurrence (an issue has occurred for the 10th, 100th, etc. time) Resolved Item (an item has been resolved by hand) Reopened Item (an item has been reopened by hand) Post-deploy (you’ve notified us that you deployed a new release) Corresponding actions are available for most actions in most channels. If it would make sense, it probably exists. Most actions can be configured as you’d expect (i. e. set which teams should receive an email, or which user to assign JIRA issues to). Item-related triggers can be filtered by environment, level, title (exception class+message), and filename. Deploy triggers can be filtered by environment and comment. Our underlying tech supports much more than the UI exposes, so let us know what other filters you’d like to see. Migration for existing customers We’ve migrated... --- ### Reducing noise in Stack Traces by collapsing non-project frames > Reducing noise in Stack Traces by collapsing non-project frames - Published: 2023-03-02 - Modified: 2023-03-03 - URL: https://rollbar.com/blog/reducing-noise-in-stack-traces-by-collapsing-non-project-frames/ - Categories: Engineering, Java, product, Python - Tags: java, non-project frames, Python Stack Traces What are Stack Traces? Debugging errors in your software often requires browsing stack traces (also called as backtraces or tracebacks). A stack trace is a sequence of stack frames which represents the chain of methods calling each other in your software. Rollbar collects your stack trace at the time a crash occurs – this way you will be able to know which pieces of code were active when an issue happened. You can find how to read stack traces in our previous blog post. In this post, we will show how we are making it easier and quicker for our users to investigate errors and resolve underlying issues. A Python traceback How many Stack Traces does Rollbar receive? Rollbar processes more than 70 million stack traces on an average day, coming from tens of thousands of software projects. We prepare stack traces to be more useful for debugging by organizing and linking them to other data sources. Adding code context to stack frames with SCM integrations like GitHub, and grouping duplicates into single items are just a couple of the processing pipelines stack traces go through to assist users. Lately we also aimed to reduce noise in the way we present stack traces in the Item Detail page. How do Stack Traces vary across languages? A typical stack trace from one programming language can differ from a stack trace from another programming language in many aspects. For example, in Python the convention is to show the most recent... --- ### Pricing > Find the plan that’s right for your team. Get started for free. Change anytime. - Published: 2021-05-20 - Modified: 2025-02-25 - URL: https://rollbar.com/pricing/ --- ### Careers - Published: 2021-05-17 - Modified: 2024-08-12 - URL: https://rollbar.com/careers/ --- ### How to Fix EvalError in JavaScript > The JavaScript EvalError occurs when the global eval() function is used in a way that is not allowed. Learn more about it here. - Published: 2023-02-16 - Modified: 2023-02-17 - URL: https://rollbar.com/blog/javascript-evalerror/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript The JavaScript EvalError occurs when the global eval function is used in a way that is not allowed. This exception is not thrown by the latest versions of JavaScript, however the object remains for compatibility. What Causes EvalError Since EvalError is not used in the current ECMAScript specification, it is not thrown by the runtime. However, the EvalError object itself remains for backwards compatibility with earlier versions of the specification. Newer versions of JavaScript do not throw the error. EvalError Syntax new EvalError new EvalError(message) EvalError Example Here’s an example on how to create an EvalError in JavaScript: try { throw new EvalError("An EvalError occurred"); } catch (e) { console. log(e. stack); } In the above example, an EvalError is thrown in the try block. It is caught in the catch block and its stack trace is printed to the console. When the above code is executed, the following output is produced: EvalError: An EvalError occurred at test. js:2:9 How to Fix EvalError The EvalError is not thrown in the latest versions of JavaScript. However, other errors such as SyntaxError or TypeError can potentially be thrown when using the eval function incorrectly. In modern versions of JavaScript, the eval function is considered a legacy feature and its use is discouraged. Instead of using eval, more modern and secure alternatives, such as the Function constructor or the vm module should be used. Here’s an example on how to use Function instead of eval: let code = 'return x * 2'; let... --- ### Taking UNIQUE indexes to the next level - Published: 2013-03-29 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/taking-unique-indexes-to-the-next-level/ - Categories: Code Tutorials - Tags: sql You’ve probably seen unique constraints somewhere – either in Rails’ validates :uniqueness, Django’s Field. unique, or a raw SQL table definition. The basic function of unique constraints (preventing duplicate data from being inserted) is nice, but they’re so much more powerful than that. When you write INSERT or REPLACE statements that rely on them, you can do some pretty cool (and efficient) things that you would’ve had to do multiple queries for otherwise. This post covers unique indexes in MySQL 5. 5. Other versions of MySQL are similar. I’m not sure about Postgres or other relational databases but presume they’re similar-ish as well. Primer: what is a unique index? Pre-primer: data in a database is stored on disk somewhere. In a SQL database, the data is organized into tables which have rows and columns. An index is a way to look up particular rows, based on the values of one or more columns, without having to scan through the whole table. Instead, you look up those values in the index, which tells you where to find the matching rows. Index lookups are typically faster than full table scans because they’re organized for fast searches on the indexed columns (usually using binary trees), and they’re also generally smaller than the original data. A unique index is an index that also imposes a constraint: that no two entries in the index can have the same values. It can be comprised of one column or many columns. If many columns, then the entire... --- ### Contact Us - Published: 2021-05-17 - Modified: 2024-12-02 - URL: https://rollbar.com/contact/  --- ### Free Trial - Published: 2021-05-17 - Modified: 2024-07-17 - URL: https://rollbar.com/free-trial/ --- ### Improved grouping for Javascript errors - Published: 2013-03-21 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/improved-grouping-for-javascript-errors/ - Categories: product - Tags: monitor We’ve released an updated to how Javascript errors are grouped in Rollbar. The new update does a better job of separating different errors into different groups (“Items” in Rollbar parlance) while still recognizing the same issue in different browsers as the same. It’s now enabled for all new projects. Existing projects can enable it on the Migrations tab in Settings. Now the longer version... First some background: by default, exceptions in Rollbar are grouped using their stack traces. We take all of the filenames and method names in all of the stack frames, plus the exception class name, apply a number of heuristics to normalize them, and then combine everything together and take a sha1 hash. The result is a 40-character string used as the “fingerprint”; occurrences with matching fingerprints that also have the same project, environment, and platform are grouped together. The fingerprint can also be overridden at the API level for custom grouping. This generally works pretty well: Omitting the line numbers from stack frames means groups persist across code changes elsewhere in the file. Using the whole stack trace, instead of just the very last frame, avoids conflating unrelated issues that happen to cause an exception on the same line of code. Using just the exception class, instead of also the message, avoids including data in the fingerprint, and when we have a nice, long stack trace, that’s usually enough uniqueness. Javascript uncaught errors are a different story though. They’re reported through window. onerror, which luckily is... --- ### Free Demo: Error Monitoring and Debugging with Rollbar > Join us for an interactive demo and experience all the capabilities of our platform. We will show you how to monitor errors and debug them with Rollbar. - Published: 2021-05-17 - Modified: 2024-11-22 - URL: https://rollbar.com/request-a-demo/ --- ### Caching Database Queries in SQLAlchemy - Part 1/2 > How to cache database ORM queries using Python's SQLAlchemy v1.3 library - Published: 2023-02-15 - Modified: 2025-02-19 - URL: https://rollbar.com/blog/caching-database-queries-in-sqlalchemy-part-1-2/ - Categories: Engineering, Python - Tags: Caching, Database, Python, SQLAlchemy The database is one of the most critical components here at Rollbar and its performance ripples across most of our SLOs. One of our goals last months has been to remove unnecessary or repetitive load from it as much as possible. Caching queries is the 101 solution whenever you need to keep scaling up while maintaining, or even reducing, database costs (very relevant these days). Here’s an example of how just one query has been drastically reduced thanks to caching. This is the first entry of a two-part blog explaining how we cache database ORM queries using Python's SQLAlchemy v1. 3 library inside Rollbar. Note the version we’re using, it’s important because the mechanism for intercepting SQLAlchemy queries has changed a bit between versions 1. 3 and 1. 4. In this first blog post we will talk about: Caching challenges at Rollbar Caching strategy Serialization format Caching with SQLAlchemy Intercepting SQLAlchemy queries Passing options to queries with Mapper Options Part two, which will be a following blog post, will describe how we make usage in Rollbar system of the caching strateggies we discussed in this part one Caching challenges at Rollbar Caching is a hard problem. Among all the things you must consider is cache invalidation, not invalidation as in: “I’m ok with eventual consistency” but as in: “I have refactored my code and my new model representation is incompatible with cached values, so I better don’t read stale data from cache or my application will be failing until TTL... --- ### Integrations: Terraform - Published: 2021-05-13 - Modified: 2021-06-11 - URL: https://rollbar.com/integrations/terraform/ --- ### Launch and initial funding - Published: 2013-02-26 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/launch-and-initial-funding/ - Categories: company - Tags: error-monitoring Today we’re excited to announce the public launch of Rollbar. Rollbar tracks and analyzes errors in production applications, helping dev and ops teams diagnose and fix them. Platform-agnostic API Anything that can speak JSON and HTTP can talk to Rollbar. Our API accepts raw “items” (errors, exceptions, and log messages) and deploys as inputs, and aggregated items, occurrences, and deploys as outputs. We provide official libraries for Ruby, Python, PHP, Node. js, Javascript, and Flash; or you can roll your own. Severity levels Just because something raises an exception, doesn’t mean it should be treated as an “error”. Rollbar lets you utilize five severity levels (from “debug” to “critical”) to control visibility and notifications. Severity can be set in your code, or after-the-fact in the Rollbar interface. Track users through your stack Person tracking helps you provide great customer support by emailing affected users when you fix an error they hit. Or see the history for a particular user and link customer error reports to code problems, client- and server-side. So much more API endpoints on 3 continents. Resolving and reactivations. Real-time notifications for new issues. Graphs everywhere. Deploy tracking. Search by title, host, file, context, date, severity, status. Replay an issue by pressing a button. SSL everywhere. GitHub, Asana, and Pivotal Tracker integration. We’ve built many of the pieces our beta customers have needed, and we really think you’re going to like it. Start a free trial now, or see pricing, features, or docs. More firepower We’re also excited... --- ### Integrations: GitHub - Published: 2021-05-13 - Modified: 2021-06-11 - URL: https://rollbar.com/integrations/github/ --- ### Integrations: Atlassian - Published: 2021-05-13 - Modified: 2023-01-25 - URL: https://rollbar.com/integrations/atlassian/ --- ### Upgrading to the new Rollbar notifier libraries - Published: 2013-02-26 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/upgrading-to-the-new-rollbar-notifier-libraries/ - Categories: product - Tags: SDK We’ve updated all of our notifier library repositories to match the name change to Rollbar today. The old Ratchet. io repos have been deprecated and all further development will continue on the respective Rollbar versions. Please note that the submit. ratchet. io endpoint and the existing libraries will continue to work for the indefinite future, so you don’t have to do anything right now. But we do recommend upgrading to take advantage of future updates. Upgrading should be seamless and quick. Please contact support@rollbar. com if you run into any issues. Here are links to the upgrade instructions for each: Browser JS - update the JS snippet used on your site to the version shown here pyratchet ratchetio-gem ratchetio-php ratchet-agent node_ratchet flash_ratchet --- ### Take control of monitoring and responding to your production Frontend Javascript errors > We are very lucky on the Rollbar Customer Engineering Team because we get to work with many many development teams. Each team develops, tests, and deploys their applications in their own way. They have chosen different languages and frameworks to solve their particular problem. We learn from each team that we work with, and share these learnings to our Product Design team. - Published: 2023-02-13 - Modified: 2023-02-13 - URL: https://rollbar.com/blog/responding-to-frontend-javascript-errors/ - Categories: Code Tutorials, JavaScript - Tags: error-handling, error-monitoring, JavaScript Take control of monitoring and responding to Errors We are very lucky on the Rollbar Customer Engineering Team because we get to work with many many development teams. Each team develops, tests, and deploys their applications in their own way. They have chosen different languages and frameworks to solve their particular problem. We learn from each team that we work with, and share these learnings to our Product Design team. Javascript development teams contact Rollbar because they want to to build a real-time error monitoring and response process primarily for 3 reasons: They don’t know what errors their end-users are experiencing They want to give their end users a higher quality experience They want to find and fix errors in their code efficiently We see one big difference between Javascript teams we help and teams that develop in other languages: For applications developed in other languages, the teams generally already has logging and some form of application performance monitoring in place for their Production environment. For Javascript applications, the teams generally have zero visibility into errors that their end users are experiencing. In some ways this makes perfect sense: The browser developer tools make debugging errors in pre-production too easy. Developing formal observability processes for application errors isn’t prioritized early in the life of a Javascript application. Client-side errors are typically not the responsibility of SRE teams. Since development teams are so busy, an observability and error monitoring solution just hasn’t been built Javascript errors can be noisy and teams... --- ### Integrations: Google Cloud - Published: 2021-05-13 - Modified: 2021-06-11 - URL: https://rollbar.com/integrations/google-cloud/ --- ### Real-time Search for Exceptions and Errors - Published: 2012-10-24 - Modified: 2022-11-28 - URL: https://rollbar.com/blog/real-time-search-for-exceptions-and-errors/ - Categories: product - Tags: monitor We’re happy today to announce the release of real-time search. You can now search your exceptions, errors, and log messages by title: For exceptions, the title contains the exception class and message. For errors and log messages, it contains the entire message. It’s a full-text search that works best on whole words; we also do a few tricks with camelCase and underscore_separated terms. The search index is kept up-to-date in real-time as new items are added to the system (that’s the “real-time” part). Typically the delay is ~2 seconds from receiving the input at our API to being inthe index and searchable. Current customers can try it out now; let us know if you run into any issues. What else would you like to see indexed? If you don’t have an account yet, sign up here for early access. Under the hood We’re using the new Sphinx realtime features for indexing and querying. It’s currently running on a single dedicated machine (1 core, 2GB ram, 100GB local disk). New items are indexed by a long-running script that indexes new items as they are inserted. (It keeps track of its location in the table and polls every second for new rows. ) The index includes two full-text fields, title and environment, and two scalar attributes, status and level. Title and environment don’t change, so we don’t need to update them. But status (active/resolved) and level (critical/error/warning/info/debug) do. We keep these in sync by simply writing to the search server whenever we... --- ### Can ChatGPT speed up software error resolution? > One of the hardest tasks for software engineers is often having to stop what you are doing and look into a software bug (error), find the root cause and fix it quickly. This is hard because you may have never seen the affected code (someone else wrote it), it could be code you wrote a long time ago or just the context switching from what you are working on right now. - Published: 2023-02-10 - Modified: 2023-07-21 - URL: https://rollbar.com/blog/chatai-for-software-error-resolution/ - Categories: product, topics - Tags: ai, ml, OpenAI Can ChatGPT speed up software debugging and error resolution? One of the hardest tasks for software engineers is often having to stop what you are doing and look into a software bug (error), find the root cause and fix it quickly. This is hard because you may have never seen the affected code (someone else wrote it), it could be code you wrote a long time ago or just the context switching from what you are working on right now. Our mission here at Rollbar is to help developers build software quickly and painlessly, so could AI and technologies like ChatGPT help move this forward? So let's explore some practical examples to see if this is true. Error detection / code quality scanning One of the potential uses of ChatGPT and indeed AI in general is to scan large amounts of data (code, files) and look into potential issues, errors and general poor implementation practices. We definitly see great value here that can out perform todays static and dynamic code analysis tools. What about error detection when code is running in production? This is best done by Error monitoring tools like Rollbar. Rollbar can detect an exception (handled or unhandled) in real-time capturing the full stack trace and data around the error that is key to understanding the root cause and ultimatly resolving the issue. This is where we think AI can be of great use! What if we can feed this real-time data to an AI solution that can... --- ### Compliance GDPR - Published: 2021-05-13 - Modified: 2021-06-14 - URL: https://rollbar.com/compliance/gdpr/ --- ### Support > Get the help you need — find product docs, guides, learning resources or submit a support ticket for any urgent requests. - Published: 2021-05-12 - Modified: 2021-09-08 - URL: https://rollbar.com/developer/ blog videos webinar libarary for the 4 boxes ( --- ### solutions - Published: 2021-05-12 - Modified: 2021-06-11 - URL: https://rollbar.com/solutions/ --- ### Using a Request Factory in Pyramid to write a little less code - Published: 2012-09-07 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/using-a-request-factory-in-pyramid-to-write-a-little-less-code/ - Categories: Code Tutorials, Python - Tags: Python At Rollbar. com, we’ve been using Pyramid as our web framework and have been pretty happy with it. It’s lightweight and mostly stays out of our way. Pyramid doesn’t have a global request object that you can just import, so it makes you pass around request wherever you need it. That results in a lot of library code that looks like this: # lib/helpers. py def flash_success(request, body, title=''): request. session. flash({'body': body, 'title': title'}) and a lot of view code that looks like this: # views/auth. py @view_config(route_name='auth/login') def login(request): # (do the login... ) helpers. flash_success(request, "You're now logged in. ") # (redirect... ) That is, there ends up being a lot of function calls that pass request as their first argument. Wouldn’t it be nicer if we could attach these functions as methods on request itself? That would save a few characters every time we call them, and let us stop thinking about whether request is the first or last argument. Pyramid facilitates this by letting us provide our own Request Factory: from pyramid. request import Request class MyRequest(Request): def hello(self): print "hello! " def main(global_config, **settings): config = Configurator(settings=settings, request_factory=MyRequest) # ... Now the request passed to our view methods, and everywhere else in our app, has our hello method. So, what can we do with this that’s actually useful? In our codebase, we have a few convenience methods to get data about the logged-in user, flash messages, and check if features are enabled. Here it... --- ### How to Fix Ruby Bundle Install Errors > Ruby’s "Bundle Install" command is used to install all the dependencies of a Ruby project. However, this command may fail for a variety of reasons. - Published: 2023-02-01 - Modified: 2023-02-16 - URL: https://rollbar.com/blog/ruby-bundle-install-errors/ - Categories: Code Tutorials, Ruby - Tags: ruby A bundle install command in Ruby is used to install all of a project's dependencies. But occasionally, this command could falter and issue an error. Numerous variables might be to blame for this issue, and fixing it might prove challenging. In this post, we’ll go through some of the typical reasons for bundle install errors in Ruby along with solutions. What Causes the Bundle Install Error? There could be a few different reasons for this error when running bundle install in a Ruby project. Some common causes include: 1. Outdated/Missing RubyGems One of the most common causes of bundle install errors is a missing or outdated version of the RubyGems package manager. RubyGems is a package manager for the Ruby programming language that is used to manage the installation and updating of Ruby libraries, also known as gems. If the version of RubyGems is outdated or missing, it may lead to errors when running bundle install. Solution: To fix this issue, we can update RubyGems to the latest version by running the command: gem update --system 2. Outdated/Missing BundlerGem Another common cause of bundle install errors is a missing or outdated version of the Bundler gem. Bundler is a gem that is used to manage dependencies in a Ruby project. If the version of Bundler is outdated or missing, it may lead to errors when running bundle install. Solution: To fix this issue, we can install or update the Bundler gem by running the command: gem install bundler 3. Conflicting... --- ### Use Cases > Rollbar can help you discover and fix errors faster across your development pipeline by uncovering and resolving them in real-time, before users complain. - Published: 2021-05-12 - Modified: 2024-12-19 - URL: https://rollbar.com/use-cases/ --- ### Writing a simple deploy script with Fabric and @roles - Published: 2012-08-16 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/writing-a-simple-deploy-script-with-fabric-and-roles/ - Categories: Code Tutorials, Python - Tags: integrations I first heard about Fabric a couple years ago while at Lolapps and liked the idea of: writing deployment and sysadmin scripts in a language other than Bash that language being Python, which we used everywhere else but we already had a huge swath of shell scripts that worked well (and truth be told, Bash isn’t really that bad). But now that we have at clean slate for Rollbar, Fabric it is. I wanted a simple deployment script that would do the following: check to make sure it’s running as the user “deploy” (since that’s the user that has ssh keys set up and owns the code on the remote machines) for each webserver: git pull pip install -r requirements. txt in series, restart each web process make an HTTP POST to our deploys api to record that the deploy completed successfully Here’s my first attempt: import sys from fabric. api import run, local, cd, env, roles, execute import requests env. hosts = def deploy: # pre-roll checks check_user # do the roll. update_and_restart # post-roll tasks rollbar_record_deploy def update_and_restart: code_dir = '/home/deploy/www/mox' with cd(code_dir): run("git pull") run("pip install -r requirements. txt") run("supervisorctl restart web1") run("supervisorctl restart web2") def check_user: if local('whoami', capture=True) ! = 'deploy': print "This command should be run as deploy. Run like: sudo -u deploy fab deploy" sys. exit(1) def rollbar_record_deploy: # read access_token from production. ini access_token = local("grep 'rollbar. access_token' production. ini | sed 's/^. * = //g'", capture=True) environment = 'production' local_username =... --- ## Guides ### Error Monitoring - Published: 2021-05-12 - Modified: 2021-06-11 - URL: https://rollbar.com/error-monitoring/ --- ### How to Handle ActiveRecord:: RecordNotFound in Ruby > When an application is unable to find a record corresponding to the parameters in the database, a RecordNotFound error message appears in Ruby. - Published: 2023-02-01 - Modified: 2023-02-01 - URL: https://rollbar.com/blog/ruby-activerecord-recordnotfound/ - Categories: Code Tutorials, Ruby - Tags: ruby ActiveRecord::RecordNotFound in Ruby is an error that occurs when an application is unable to find a record in the database that corresponds to the provided parameters. ActiveRecord is a Ruby gem that is used to interact with databases in a Rails application. It provides an object-relational mapping (ORM) layer that allows us to work with database records as if they were Ruby objects. When a record is requested using ActiveRecord, the gem will query the database and return the corresponding record if it exists. However, if the record cannot be found, Active Record will raise an ActiveRecord::RecordNotFound error. When does ActiveRecord::RecordNotFound error occur? The ActiveRecord::RecordNotFound error can occur in a number of ways. One common cause is when an application attempts to find a record by its ID and the provided ID does not exist in the database. For example, if an application attempts to find a user with an ID of 100 but there is no user with that ID in the database, Active Record will raise a RecordNotFound error. Another common cause of this error is when an application attempts to find a record using a query that returns no results. For example, if an application attempts to find a user with a specific email address and there is no user with that email address in the database, Active Record will raise an ActiveRecord::RecordNotFound error. Example 1 - ActiveRecord::RecordNotFound Error ActiveRecord::RecordNotFound in Ruby can be demonstrated with a simple example. Let's say we have a Rails application with... --- ### Knowledge Base - Published: 2021-05-12 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/ --- ### About > Developers are held back from producing quality software because of unforeseen errors that appear during production. Our mission is to make life easier for them. - Published: 2021-05-11 - Modified: 2024-12-05 - URL: https://rollbar.com/about/     --- ### How to Implement Try Catch Finally Blocks in PHP > Using try-catch-finally blocks can help you write more robust and reliable code by handling exceptions in a controlled manner. Learn how! - Published: 2023-02-01 - Modified: 2023-02-01 - URL: https://rollbar.com/blog/php-try-catch-finally/ - Categories: Code Tutorials, PHP - Tags: PHP In PHP, try-catch-finally blocks are used to handle exceptions, which are runtime errors that occur during the execution of a script. Using try-catch-finally blocks can help write more robust and reliable code by allowing developers to handle exceptions in a controlled manner. Using Try Catch Finally Blocks Try-catch-finally blocks can be used in PHP to handle exceptions in the following way: The try block should contain code that can throw an exception. The catch block should contain code to handle the exception. The finally block should contain code that is always executed, regardless of whether an exception is thrown or not. Try Catch Finally Syntax Here is the basic syntax for implementing the try, catch and finally blocks in PHP to handle a single exception: try { // Code that can throw an exception } catch (ExceptionType $e) { // Code to handle the exception } finally { // Code that is always executed } Try Catch Finally Flow Control The following is the order in which exceptions are handled in PHP using try-catch-finally blocks: If an exception is thrown in the try block, script execution is halted and control is passed to the catch block. If no exception is thrown, script execution continues and the catch block is skipped. The catch block catches and handles the exception if one occurs. It must specify an exception type to catch, and also include a variable to store the exception object. This object can be used to get information about the exception,... --- ### Learn How To Monitor and Resolve Errors in Your Language - Published: 2021-05-11 - Modified: 2022-04-13 - URL: https://rollbar.com/guides/ --- ### Compliance > Rollbar helps developers deliver better software faster by providing rich, real-time application error data, without compromising security and compliance. - Published: 2021-05-07 - Modified: 2025-02-19 - URL: https://rollbar.com/compliance/ --- ### What is Error Logging in C++ > Error logs can be a life-saver. Learn how to create an error logging class in C++ to track errors, warnings, and status messages in runtime. - Published: 2022-07-11 - Modified: 2022-07-18 - URL: https://rollbar.com/guides/cpp/cpp-error-logging/ - Guide Languages: C++ In C++, an error logger class is typically used to track errors, warnings, and status messages at runtime. In a simple application, errors are printed directly to the console; however, in most cases, this class will log errors along with a timestamp, severity, and any other necessary details to a log file specified by the developer. This article is designed to help intermediate C++ coders learn how to create an error logging class and customize it as they see fit.   An Example of an Error Logger Class At runtime, the inner workings of a program are invisible to the user. This makes it difficult to understand why an application isn’t working as expected. An error logger is a module designed to assist in these situations. The logger sits within a program and tracks any errors or useful status messages created during runtime. Logs allow you to see the results of each independent process to determine exactly where faults are occurring. Below is an example of a basic error logging class in C++. While a fully realized logger would be more robust, this gives a good starting point to understand how a logger is designed. enum LogPriority { TraceP, DebugP, InfoP, WarnP, ErrorP, FatalP }; class BasicLogger { private: static LogPriority verbosity; public: static void Log(LogPriority priority, const char* message) { if (priority >= verbosity) { switch (priority) { case TraceP: std::cout --- ### Heroku Deploy App Webhook Support - Published: 2023-01-25 - Modified: 2023-01-25 - URL: https://rollbar.com/blog/heroku-deploy-app-webhook/ - Categories: company, product Heroku Deploy Hook Changes Starting October 17, 2022, Heroku will stop accepting new deploy hooks. Existing hooks will continue working until the product is sunset on February 17, 2023, Heroku encourages you to migrate your hooks as soon as possible. Read more here about the Heroku Deploy Hooks Sunset announcement. Rollbar has now implemented a receiver for the new Heroku App Webhooks in order to continue providing deploy tracking for the Heroku platform for all Rollbar users. Setup Instructions We created the following instructions for all users to migrate to the new deploy method. Read the detailed setup guide for Heroku Deployments to Rollbar Start using Rollbar via Heroku We have made it easy to start using Rollbar in every Heroku project by adding in Rollbar to your new project or existing project. View the Heroku Add-on here --- ### Integrate Existing Tools and Workflows With Rollbar > Don't be afraid of disrupting your workflows with new software. Rollbar has native and custom integrations so you can continue using your existing tools. - Published: 2021-05-06 - Modified: 2025-04-22 - URL: https://rollbar.com/integrations/ "we --- ### Error Debugging in C++ with VS Code > Learn how to debug using the C/C++ extension for VS Code with advanced features like breakpoints, tracking variable values, and stepping. - Published: 2022-07-11 - Modified: 2022-07-18 - URL: https://rollbar.com/guides/cpp/cpp-debugging-with-vs-code/ - Guide Languages: C++ Debugging can be a life-saver when it comes to discovering bugs or errors in your code. In this article you will learn how to debug using the C/C++ extension for VS Code, including advanced features like breakpoints, tracking variable values, and stepping.   The Code We’ll Debug Throughout this tutorial, the following C++ class is used as an example (vector. h): class Vector { private: float start_y; float start_x; float end_y; float end_x; public: Vector { start_x = -1; start_y = -1; end_y = -1; end_x = -1; } Vector(float start_a, float start_b, float end_a, float end_b) { start_x = start_a; start_y = start_b; end_y = end_a; end_x = end_b; } float get_length { return sqrt((end_x - start_x) * (end_x - start_x) + (end_y - start_y) * (end_y - start_y)); } }; This class is being called by the following main function (pathfinder. cpp): #include #include #include “Vector. h” int main { std::cout --- ### Automate > Most software development life cycles consist of finding errors, let alone fixing them. Spend more time developing new features and let Rollbar find errors for you. - Published: 2021-05-06 - Modified: 2022-10-15 - URL: https://rollbar.com/automate/ --- ### How to Handle Exceptions in C++ > C++ exceptions provide a well-defined way for detecting errors and passing the information up the call stack. - Published: 2022-04-13 - Modified: 2022-07-18 - URL: https://rollbar.com/guides/cpp/how-to-handle-exceptions-in-cpp/ - Guide Languages: C++ When C++ code is executed, various types of errors can occur in the program - coding errors made by programmers, errors due to incorrect input or other unforeseen errors. When an error occurs, C++ usually stops the program execution and generates an error message. In most scenarios, the preferred way to report and handle both logic and runtime errors is to use exceptions. Exceptions provide a formal and well-defined way for detecting errors and to pass the information up the call stack.   C++ Exception Types C++ provides a list of standard exceptions defined in the class which can be used in code. These exceptions are arranged in a hierarchy: Figure 3: C++ Exception Types Hierarchy As shown above, all the exception classes in C++ derive from the std::exception class. Here's a short description of each of the exceptions in the hierarchy above: Table 1. C++ Exception Classes Under std::exception Exception Description std::exception Exception and parent class of all standard C++ exceptions. std::bad_alloc Generally thrown by new. std::bad_cast Generally thrown by dynamic_cast. std::bad_typeid Generally thrown by typeid. std::bad_exception Useful device to handle unexpected exceptions. std::logic_failure Can be detected by reading code. std::runtime_error Cannot be detected by reading code. std::domain_error Thrown when using a mathematically invalid domain. std::invalid_argument Thrown when using invalid arguments. std::length_error Thrown when a large std::string is created. std::out_of_range/td> Thrown by the at method. std::overflow_error Thrown when a mathematical overflow occurs. std::range_error Thrown when attempting to store an out-of-range value. std::underflow_error Thrown when a mathematical underflow occurs.  ... --- ### How to Handle the Unpermitted Parameters Error in Ruby > The Unpermitted Parameters error is raised when the given parameter is not expected in an update, create or user-defined action. Learn more. - Published: 2023-01-22 - Modified: 2023-01-22 - URL: https://rollbar.com/blog/ruby-unpermitted-parameters-error/ - Categories: Code Tutorials, Ruby The ActionController::UnpermittedParameters error occurs when a parameter that has been passed is not permitted in a create, an update, or a user-defined action. In older versions of Rails, information about the unpermitted keys was provided in the logs only when an unpermitted parameter was found in a request. This did not provide enough information for the developers to understand which controller and action received the unpermitted parameters. Raising the Unpermitted Parameters Error Makes for Easier Debugging Let's say we have a user who has a name, an email address, and a role attribute, and only the name and email attributes are permitted. requested_params = { user: { name: "Tony Stark", email: "tony@gmail. com", role: "admin" } } tempParams = ActionController::Parameters. new(requested_params) tempParams. permit(user: ) But in the log, we only get: Unpermitted parameter: :role As seen in the log, only information about the unpermitted key is provided, with no information about the controller or action that actually received the unpermitted parameter. If the log files don't specify which parameters are causing the problem, it will be very hard for a programmer to pinpoint the error when dealing with production-level code. How to Raise the Unpermitted Parameters Error in Ruby The two best ways to raise the Unpermitted Parameters error are as follows: 1. Modifying the Config File In order to raise the Unpermitted Parameters error, the ActionController::Parameters. action_on_unpermitted_parameters field should be set to :raise. We need to make changes in a config file development. rb by adding the below line... --- ### Resolve Errors The Right Way > You need to know what triggered an error before you can fix it. See the exact line of code and the timeline of browser events leading up to an error with Rollbar. - Published: 2021-05-06 - Modified: 2022-10-15 - URL: https://rollbar.com/resolve/ --- ### How to Throw Exceptions in Flutter > Exception in Flutter can be thrown using try, catch and finally blocks when an unexpected issue occurs when executing a program. - Published: 2022-03-24 - Modified: 2023-09-19 - URL: https://rollbar.com/guides/flutter/how-to-throw-exceptions-in-flutter/ - Guide Languages: Flutter An exception is an unexpected issue that occurs when executing a program and disrupts its normal flow. Exceptions can cause the application to terminate abnormally if not handled. Exceptions are intended to be caught and handled so they do not affect the flow of the program. To handle an exception in code, try. . catch. . finally blocks should be used.   Why Throw Exceptions in Flutter? Exceptions can be thrown to convey information to the user about a failure that occurred during the execution of a program. They should contain useful data fields to convey the relevant information. This can help the issue be addressed programmatically. Exceptions can be instantiated and thrown in Flutter using the throw keyword. The syntax for throwing an exception is: throw new exception_name   Flutter Throw Exception Example Here’s an example that shows how to use the throw keyword in Flutter to throw an exception: void validate_age(int age) { if(age < 0) { throw new FormatException; } } In the above example, the validate_age function is used to validate an integer age, which should not be negative in value. If the value is found to be less than 0, a FormatException is thrown.   Handling Exceptions in Flutter To handle exceptions in Flutter, try. . catch. . finally blocks can be used to prevent the application from terminating abruptly. The try block contains the code that might possibly throw an exception. The try block must be followed by on or catch blocks, and an... --- ### Prioritize and Fix Errors Based on Severity > See what errors are affecting customers, when and how often they’re occurring, what browsers and IPs they’re affecting, and assign errors to colleagues instantly. - Published: 2021-05-06 - Modified: 2023-04-24 - URL: https://rollbar.com/prioritize/ --- ### Discover New and Reactivated Errors in Real Time > Monitor errors in all projects in one view. Rollbar groups similar errors together for you and also provides the option to manually merge errors to fit your needs. - Published: 2021-05-06 - Modified: 2025-02-13 - URL: https://rollbar.com/discover/ --- ### Rollbar vs Sentry | A Superior Sentry Alternative for Error Tracking - Published: 2021-05-06 - Modified: 2025-01-24 - URL: https://rollbar.com/vs/sentry/ --- ### How to Debug PHP Errors > Most PHP error reports are vague, and identifying the underlying causes can be difficult. Learn the common steps towards pinpointing and resolving PHP errors that crop up in production. - Published: 2019-02-12 - Modified: 2021-06-11 - URL: https://rollbar.com/guides/php/how-to-debug-php-errors/ - Guide Languages: PHP Most PHP error reports are vague, and identifying the underlying causes can be difficult. Learn the common steps towards pinpointing and resolving PHP errors that crop up in production. How to Debug PHP Errors Debugging PHP errors in a production environment can be one of the single most frustrating experiences as a developer. More often than not, the error reports are vague, and identifying the underlying causes can be difficult at best. That said, there are a few common steps that can be followed towards identifying and resolving errors that crop up in production. Debugging PHP Errors Step 1: Increase the log level More information is always better. Using the methods described in Where are PHP Errors Logged? , the first step towards diagnosing any issue is to increase the log level. This allows you to see everything that is happening before and after a problem occurs. There is a good chance that the problems you are experiencing have warnings or messages associated with them that don't necessarily make it into the log files by default. Step 2: Retain logs Once you've increased the log level, the next step is to start retaining logs. This can be done through any number of log aggregation platforms, and allows you to start establishing a timeline of events without worrying about the log files being rolled over. Step 3: Attempt to replicate circumstances Once you've determined the log lines that relate to the problem at hand, the next step is to attempt to replicate the circumstances of the error in a development environment. Before we can do this, we first need to establish some testing guidelines. This involves doing things like mimicking... --- ### Runtime Errors in Ruby > A RuntimeError is a default exception raised when an invalid operation is performed. Let’s learn more about these errors with some examples. - Published: 2023-01-22 - Modified: 2023-01-22 - URL: https://rollbar.com/blog/ruby-runtime-errors/ - Categories: Code Tutorials, Ruby - Tags: ruby Exceptions are unintended events that take place when a program is being executed or during its runtime causing disruptions to the program's overall logic. In Ruby, a program is enclosed between the begin and end blocks and a rescue block is used to tell what types of exceptions are to be handled. When no class is specified, by default, a RuntimeError is raised by Kernel#raise. raise "an exception has occurred" This is equivalent to: raise RuntimeError, "an exception has occurred" Whenever these runtime exceptions occur, for example, a “divide by zero” error or an “index out of bounds” error, they stop the execution of the program completely, so it is good programming practice to handle them properly in our code. In the exception hierarchy, RuntimeError is a subclass of StandardError, which is a subclass of Exception. All Ruby exceptions are subclasses of the Exception class. Exception | |--> StandardError | |---> RuntimeError Example 1: How to Raise an Exception with a Message In the below code, we raise an exception with a message; by default, Ruby will raise the generic exception RuntimeError. begin raise "Raising our exception" rescue StandardError => e puts "Exception class is #{e. class. name}" puts "Exception message is #{e. message}" puts "Exception backtrace is #{ e. backtrace}" end Output of Example 1 Exception class is RuntimeError Exception message is Raising our exception Exception backtrace is Example 2: How to Raise a Generic Exception In the below code, a Runtime Exception (a generic exception) will be raised.... --- ### Rollbar vs New Relic - Published: 2021-05-05 - Modified: 2021-07-30 - URL: https://rollbar.com/vs/new-relic/ --- ### Where are Ruby Errors Logged? > This simple guide explains where Ruby logs are located, how to configure logging, and why error monitoring tools like Rollbar make debugging even faster. - Published: 2019-02-12 - Modified: 2021-06-11 - URL: https://rollbar.com/guides/ruby/where-are-ruby-errors-logged/ - Guide Languages: Ruby This simple guide explains where Ruby logs are located, how to configure logging, and why error monitoring tools like Rollbar make debugging even faster. Where Are Ruby Errors Logged? So, when we encounter errors in our code, where exactly can we find them? At a high level, there are two common places that Ruby errors can be found: inline with program execution, and in a designated log file. The Logger Class Before we look at where Ruby errors are logged, let's first take a look at how those errors are logged. The Logger class is a utility class that can be used to write messages to a specified output path. While this may sound relatively simplistic, it is actually a very sophisticated implementation for a built-in logging tool. Log Files vs. Inline Errors When instantiating the Logger class, you must define a destination to output all logs to. Output could be one of two types: a standard stream output like STDOUT and STDERR, or a file output like /var/log/ruby. log. The standard output stream could also be considered inline errors, as they are output directly to the command line during program execution. To instantiate a Logger that writes to STDOUT, for example, all we need to do is pass STDOUT as the first parameter to the initializer: logger = Logger. new(STDOUT) While this is incredibly valuable for live debugging, a more long-term logging solution is often more desirable. Thankfully, the Logger class initializer also accepts a file path, allowing us to log data directly to a log file: logger = Logger. new("/var/log/ruby. log") Log Levels Once we select a destination for our log data,... --- ### Resources > Welcome to our Rollbar Library! We hope you find something interesting to read, watch and share. - Published: 2021-05-05 - Modified: 2025-04-22 - URL: https://rollbar.com/resources/ blog videos webinar libarary for the 4 boxes ( --- ### How to Fix HTTPError in Python > An HTTPError is raised when an HTTP request returns a status code that represents an error. Learn how to fix it. - Published: 2023-01-19 - Modified: 2023-01-19 - URL: https://rollbar.com/blog/python-httperror/ - Categories: Code Tutorials, Python - Tags: Python The urllib. error. HTTPError is a class in the Python urllib library that represents an HTTP error. An HTTPError is raised when an HTTP request returns a status code that represents an error, such as 4xx (client error) or 5xx (server error). HTTPError Attributes The urllib. error. HTTPError class has the following attributes: code: The HTTP status code of the error. reason: The human-readable reason phrase associated with the status code. headers: The HTTP response headers for the request that caused the HTTPError. What Causes HTTPError Here are some common reasons why an HTTPError might be raised: Invalid or malformed request URL. Invalid or malformed request parameters or body. Invalid or missing authentication credentials. Server internal error or malfunction. Server temporarily unavailable due to maintenance or overload. Python HTTPError Examples Here are a few examples of HTTP errors in Python: 404 Not Found import urllib. request import urllib. error try: response = urllib. request. urlopen('http://httpbin. org/status/404') except urllib. error. HTTPError as err: print(f'A HTTPError was thrown: {err. code} {err. reason}') In the above example, an invalid URL is attempted to be opened using the urllib. request. urlopen function. Running the above code raises an HTTPError with code 404: A HTTPError was thrown: 404 NOT FOUND 400 Bad Request import urllib. request try: response = urllib. request. urlopen('http://httpbin. org/status/400') except urllib. error. HTTPError as err: if err. code == 400: print('Bad request! ') else: print(f'An HTTP error occurred: {err}') In the above example, a bad request is sent to the server.... --- ### How to Raise Exceptions in Ruby > It's not enough to raise exceptions in Ruby. You need to raise exceptions effectively. Here's how to create a human-readable—and diagnosable—exception object. - Published: 2019-02-12 - Modified: 2021-06-11 - URL: https://rollbar.com/guides/ruby/how-to-raise-exceptions-in-ruby/ - Guide Languages: Ruby It's not enough to throw exceptions in Ruby. You need to throw exceptions effectively. Here's how to create a human-readable—and diagnosable—exception object. Raising Exceptions in Ruby Rescuing pre-defined exceptions is one thing, but to more effectively utilize exceptions within your application, it is important to understand how to create and raise your own. At its core, every Ruby exception stems from a built-in Exception class, and includes a handful of built-in methods, but the most commonly used exception method is message. This method can be used to retrieve a specific exception message from a raised exception object. Raising Generic Exceptions Like the title of this section implies, raising exceptions in Ruby can be done using the raise method. While a blank exception can be raised, however, most exceptions include a message with additional information about the error. For example, a default RuntimeError exception can be raised with a custom error message in just one line: raise "This is an exception" While this is valuable for raising generic exceptions, it is also possible to raise an instance of an Exception class, such as StandardError: raise StandardError. new "This is an exception" Keep in mind, however, that while StandardError exceptions are intended to be rescued, Exception exceptions are not (see Exception Handling in Ruby). This means that if you choose to raise a new Exception instance, you will not be able to rescue it without explicitly rescuing every top-level Exception instance, which could cause unexpected problems down the line. raise Exception. new "This is an exception" Raising Custom Exceptions In a nutshell, every custom Ruby exception should extend StandardError, rather than the Exception class... --- ### Resolve Support Tickets Faster and Improve Customer Satisfaction > Get all the contextual and historical information you need to find the root cause of every customer issue. HelpScout and Zendesk integrations supported. - Published: 2021-05-05 - Modified: 2023-03-24 - URL: https://rollbar.com/solutions/customer-support/ --- ### How to Handle Exceptions in Ruby > The simple guide to exception handling in Ruby. ✓ Harden your app against unexpected errors ✓ Respond more effectively ✓ Adapt to any issue that may arise. - Published: 2019-02-12 - Modified: 2022-11-30 - URL: https://rollbar.com/guides/ruby/how-to-handle-exceptions-in-ruby/ - Guide Languages: Ruby The simple guide to exception handling in Ruby. ✓ Harden your app against unexpected errors ✓ Respond more effectively ✓ Adapt to any issue that may arise. Exception Handling in Ruby In Ruby, error handling works like this; all exceptions and errors are extensions of the Exception class. While this may seem intuitive, exception handling in Ruby is a touch more nuanced than you might expect thanks to the designed hierarchy of Ruby exceptions. The begin-rescue Similar to PHP's try-catch handler, Ruby's exception handling begins with the begin-rescue block. In a nutshell, the begin-rescue is a code block in Ruby that can be used to deal with raised exceptions without interrupting the Ruby program execution. In other words, you can begin to execute a block of code, and rescue any exceptions that are raised. Rescuing Exceptions In Ruby by default, begin-rescue rescues every instance of the StandardError class. This includes no method errors, type errors, runtime errors, and every custom error that is intended to be rescued within a Ruby application (see Raising Exceptions in Ruby for more information). To rescue every StandardError, simply wrap the designated section of code in a begin-rescue block: begin # ... rescue => e # ... end In Ruby when a StandardError exception is raised within the begin block, an instance of it will be passed to the rescue block as the variable e (for more information about the structure of Ruby's Exception class, see Raising Exceptions in Ruby). Rescuing Specific Exceptions While rescuing every exception raised in your Ruby app is great for simplistic implementations—such as generalizing API error responses—best practice is to rescue for specific exceptions. To do this,... --- ### How to use Try Catch Throw in JavaScript > How to use Javascript Try Catch Throw to handle exceptions. - Published: 2023-01-17 - Modified: 2023-01-19 - URL: https://rollbar.com/blog/exception-handling-in-javascript-try-catch-throw/ - Categories: JavaScript - Tags: JavaScript How Javascript exception handling works. Try Catch Throw Throw, and Try... Catch... Finally The try statement defines a code block to run (to try). The catch statement defines a code block to handle any error. The finally statement defines a code block to run regardless of the result. The throw statement defines a custom error. Example Javascript exceptionExample Javascript exception In this example we misspelled "alert" as "allert" to deliberately produce an error: try { allert("Welcome to this test! "); } catch(err) { document. getElementById("pDemo"). innerHTML = err. message; } Implementing the Rollbar Javascript SDK helps speed up the error resolution flow. Here is the code example: try { allert("Welcome to this test! "); } catch(err) { Rollbar. error(err); document. getElementById("pDemo"). innerHTML = err. message; } Track, Analyze and Manage Errors With Rollbar Managing errors and exceptions in your code is challenging. It can make deploying production code an unnerving experience. Being able to track, analyze, and manage errors in real-time can help you to proceed with more confidence. Rollbar automates error monitoring and triaging, making fixing Javascript errors easier than ever. Try it today! --- ### How to Debug Ruby Errors > Most Ruby error reports are vague, and identifying the underlying causes can be difficult. Learn the common steps towards pinpointing and resolving Ruby errors that crop up in production. - Published: 2019-02-12 - Modified: 2021-06-11 - URL: https://rollbar.com/guides/ruby/how-to-debug-ruby-errors/ - Guide Languages: Ruby Most Ruby error reports are vague, and identifying the underlying causes can be difficult. Learn the common steps towards pinpointing and resolving Ruby errors that crop up in production. How to Debug Ruby Errors Debugging Ruby errors in a production environment can be one of the single most frustrating experiences as a developer. More often than not, the error reports are vague, and identifying the underlying causes can be difficult at best. That said, there are a few common steps that can be followed toward identifying and resolving errors that crop up in production. Debugging Ruby Errors Step 1: Increase the log level More information is always better. Using the methods described in Where Are Ruby Errors Logged? , the first step toward diagnosing any issue is to increase the log level. This allows you to see everything that is happening before and after a problem occurs. There is a good chance that the problems you are experiencing have warnings or messages associated with them that don't necessarily make it into the log files by default. Step 2: Retain logs using an error monitoring solution Once you've increased the log level, the next step is to start retaining logs. Identifying the request parameters, user, browser, and any other information surrounding a given error can be incredibly valuable. While accomplishing this may seem difficult from within the context of a server, it can be easily done through the use of Rollbar, and allows you to start establishing a timeline of events without worrying about the log files being rolled over. Step 3: Attempt to replicate circumstances Once you've determined the log lines that relate to the problem at hand, the... --- ### How to Handle io.netty.handler.timeout.ReadTimeout Exception in Java > This exception is thrown when no data is read within a certain period of time when using the Netty framework. Learn how to handle it. - Published: 2023-01-10 - Modified: 2024-07-24 - URL: https://rollbar.com/blog/java-io-netty-handler-timeout-readtimeoutexception/ - Categories: Code Tutorials, Java - Tags: java The io. netty. handler. timeout. ReadTimeoutException is a runtime exception in Java that is thrown when no data is read within a certain period of time when using the Netty framework. Since the io. netty. handler. timeout. ReadTimeoutException is thrown at runtime, it does not need to be declared in the throws clause of a method or constructor. What Causes io. netty. handler. timeout. ReadTimeoutException The io. netty. handler. timeout. ReadTimeoutException is thrown when a read operation times out. This exception is typically thrown by the ReadTimeoutHandler in the Netty network application framework. Here are a few scenarios where a read operation might take longer than the timeout value: The server takes too long to process the request and send a response. A network issue causes delays in the transmission of data. The client takes too long to process data received from the server. io. netty. handler. timeout. ReadTimeoutException Example Here’s an example of an io. netty. handler. timeout. ReadTimeoutException thrown when the server takes too long to send a response. Three Java classes are created in this example to demonstrate how the exception can occur: SlowServer - A Netty server that is slow to respond to the client. SlowServerHandler - A handler for SlowServer that sleeps for 10 seconds before sending the response to the client. Client - A Netty client that tries to connect to SlowServer and read the response. SlowServer. java: import io. netty. bootstrap. ServerBootstrap; import io. netty. channel. ChannelFuture; import io. netty. channel. ChannelInitializer; import... --- ### Where are PHP Errors Logged? > This simple guide explains where PHP logs are located, how to configure logging, and why error monitoring tools like Rollbar make debugging even faster. - Published: 2019-02-12 - Modified: 2021-06-11 - URL: https://rollbar.com/guides/php/where-are-php-errors-logged/ - Guide Languages: PHP This simple guide explains where PHP logs are located, how to configure logging, and why error monitoring tools like Rollbar make debugging even faster. Where are PHP Errors Logged? So when we encounter errors in our code, where exactly can we find them? At a high level, there are really only three places where PHP errors can be found: inline with program execution, in the system log, or in error monitoring tools like Rollbar. Inline errors By default, whenever an error or exception is thrown, PHP sends the error message directly to the user via STDOUT. In a command-line environment, this means that errors are rendered in the terminal. In a web environment, errors and exceptions get displayed directly in the browser. While this behavior is useful for debugging problems in a development environment, it should be disabled in a production environment for security reasons. To do this, open up the PHP configuration file for the environment you are working in—typically found in a path that looks like /etc/php/:environment:/php. ini—and change the display_errors directive to Off. ; This directive controls whether or not and where PHP will output errors, ; notices and warnings too. Error output is very useful during development, but ; it could be very dangerous in production environments. Depending on the code ; which is triggering the error, sensitive information could potentially leak ; out of your application such as database usernames and passwords or worse. ; For production environments, we recommend logging errors rather than ; sending them to STDOUT. ; Possible Values: ; Off = Do not display any errors ; stderr = Display errors to STDERR (affects only... --- ### How to Throw Exceptions in PHP > It's not enough to throw exceptions in PHP. You need to throw exceptions effectively. Here's how to create a human-readable—and diagnosable—exception object. - Published: 2019-02-12 - Modified: 2022-10-17 - URL: https://rollbar.com/guides/php/how-to-throw-exceptions-in-php/ - Guide Languages: PHP It's not enough to throw exceptions in PHP. You need to throw exceptions effectively. Here's how to create a human-readable—and diagnosable—exception object. Throwing Exceptions in PHP Throwing a generic PHP exception is almost as simple as it sounds. All it takes is to instantiate an exception object—with the first parameter of the Exception constructor being the error message—and then, "throw" it. throw new Exception('Exception message') The most important thing to take note of is the message. Defined in the constructor, and accessed via the getMessage method, the message is the human-readable error that can often be related to the end user. The Exception class To more effectively utilize exceptions within your application, it is important to understand how to create and throw your own PHP exception. But before we get into throwing custom PHP exceptions, let's first take a look at what an exception is under the hood, and how to define your own, starting with the global Exception class that all PHP exceptions stem from: class Exception { protected $message = 'Unknown exception'; // exception message private $string; // __toString cache protected $code = 0; // user defined exception code protected $file; // source filename of exception protected $line; // source line of exception private $trace; // backtrace private $previous; // previous exception if nested exception public function __construct($message = null, $code = 0, Exception $previous = null); final private function __clone; // Inhibits cloning of exceptions. final public function getMessage; // message of exception final public function getCode; // code of exception final public function getFile; // source filename final public function getLine; // source line final public function getTrace;... --- ### How to Fix Runtime Errors in Python > A runtime error is a type of error that occurs during program execution. Learn how to fix them. - Published: 2023-01-10 - Modified: 2023-07-10 - URL: https://rollbar.com/blog/python-runtime-error/ - Categories: Code Tutorials, Python - Tags: Python A runtime error is a type of error that occurs during program execution. The Python interpreter executes a script if it is syntactically correct. However, if it encounters an issue at runtime, which is not detected when the script is parsed, script execution may halt unexpectedly. What Causes Runtime Errors Some of the most common examples of runtime errors in Python are: Division by zero. Using an undefined variable or function name. Performing an operation on incompatible types. Accessing a list element, dictionary key or object attribute that does not exist. Accessing a file that does not exist. Python Runtime Error Examples Here’s a few examples of runtime errors in Python: Division by zero If a number is divided by zero in Python, a runtime error is raised: print(100/0) In the above example, a number is attempted to be divided by zero. Running the above code raises a ZeroDivisionError: Traceback (most recent call last): File "main. py", line 1, in print(100/0) ZeroDivisionError: division by zero Using an undefined variable or function name A runtime error is raised if an attempt is made to access an identifier, such as a variable or function name, that is not declared previously: print(myString) In the above example, an undefined identifier myString is attempted to be accessed. Running the above code raises a NameError: Traceback (most recent call last): File "main. py", line 1, in print(myString) NameError: name 'myString' is not defined Performing an operation on incompatible types If an operation, such as addition, multiplication... --- ### How to Handle Exceptions in PHP > The simple guide to exception handling in PHP. ✓ Harden your app against unexpected errors ✓ Respond more effectively ✓ Adapt to any issue that may arise. - Published: 2019-02-12 - Modified: 2021-09-20 - URL: https://rollbar.com/guides/php/how-to-handle-exceptions-in-php/ - Guide Languages: PHP The simple guide to exception handling in PHP. ✓ Harden your app against unexpected errors ✓ Respond more effectively ✓ Adapt to any issue that may arise. Exception Handling in PHP The try-catch The primary method of handling exceptions in PHP is the try-catch. In a nutshell, the try-catch is a code block that can be used to deal with thrown exceptions without interrupting program execution. In other words, you can "try" to execute a block of code, and "catch" any PHP exceptions that are thrown. PHP nested try-catch Try-catch blocks in PHP can be nested up to any desired levels and are handled in reverse order of appearance i. e. innermost exceptions are handled first. Nested blocks can be useful in case a block of code causes an exception, which can be handled within that block and program execution can continue in the outer block. They can also be useful in case the handling of an exception causes another exception. Here is an example of a nested try-catch block: try{ try{ if(file_exists("myfile. json")){ //upload file } else { throw new Exception( 'File not found'); } } catch (Exception $e){ throw new Exception( 'Unable to upload file',0,$e); } //continue outer try block code } catch (Exception $e){ echo $e->getMessage . ""; while($e = $e->getPrevious) { echo 'Previous exception: '. $e->getMessage . ""; } } In this example, a file is uploaded and it is checked whether the file exists or not prior to the upload operation. If it does not exist, an exception is thrown. This code that checks whether the file exists or not is placed within a try-catch block, which is nested within another try-catch... --- ### How to Avoid java.util.concurrent.TimeoutException > The java.util.concurrent.TimeoutException is thrown when a blocking operation times out. Learn how to avoid it. - Published: 2022-12-23 - Modified: 2024-07-24 - URL: https://rollbar.com/blog/java-timeoutexception/ - Categories: Code Tutorials, Java - Tags: java The java. util. concurrent. TimeoutException is a checked exception in Java that is thrown when a blocking operation times out. Since java. util. concurrent. TimeoutException is a checked exception, it must be explicitly handled in methods which can throw this exception - either by using a try-catch block or by throwing it using the throws clause. What Causes java. util. concurrent. TimeoutException Blocking operations in Java that have a specified timeout require a way to indicate that the timeout has occurred. For many such operations, it is possible to return a value that indicates timeout. When this is not possible or desirable, TimeoutException should be thrown. java. util. concurrent. TimeoutException Example Here is an example of a TimeoutException thrown when a thread awaits at a barrier until the specified timeout elapses: import java. util. concurrent. BrokenBarrierException; import java. util. concurrent. CyclicBarrier; import java. util. concurrent. TimeUnit; import java. util. concurrent. TimeoutException; class TimeoutExceptionExample { public static void main(String args) throws TimeoutException, InterruptedException, BrokenBarrierException { CyclicBarrier barrier = new CyclicBarrier(2); barrier. await(10, TimeUnit. MILLISECONDS); } } In the above example, the main thread invokes the await method on an instance of CyclicBarrier with a specified timeout of 10 milliseconds. When the barrier is not reached by other threads within the specified timeout, a TimeoutException is thrown: Exception in thread "main" java. util. concurrent. TimeoutException at java. base/java. util. concurrent. CyclicBarrier. dowait(CyclicBarrier. java:257) at java. base/java. util. concurrent. CyclicBarrier. await(CyclicBarrier. java:435) at TimeoutExceptionExample. main(TimeoutExceptionExample. java:9) How to Avoid java. util. concurrent. TimeoutException... --- ### How to Handle Exceptions in .NET > The simple guide to exception handling in .NET ✓ Harden your app against unexpected errors ✓ Respond more effectively ✓ Adapt to any issue that may arise. - Published: 2019-02-12 - Modified: 2021-09-20 - URL: https://rollbar.com/guides/dotnet/how-to-handle-exceptions-in-net/ - Guide Languages: .Net The simple guide to exception handling in .NET ✓ Harden your app against unexpected errors ✓ Respond more effectively ✓ Adapt to any issue that may arise. Where are . NET Errors Logged? Although every developer aims for bug-free code, it’s nearly impossible to deploy an application without a few unwanted bugs. You can test an application thoroughly, but still have logic errors. These errors can vary from critical issues that inhibit proper use of the application to minor annoyances. Regardless, you must be able to fix any bug in the application before it becomes a huge nuisance for your users. You detect bugs and find the . NET object that’s causing it by using logging techniques. . NET can log errors to the Windows Event Viewer, a database, or a file using libraries already included in the . NET framework. Each solution has its pros and cons. You can use your own custom libraries or simplify the process using third-party libraries installed from NuGet. . NET is a backend coding platform as opposed to client-side languages such as JavaScript. This means that your logging solution for . NET must be able to integrate with your application and your server. If the application is public, the logging solution must also be secure; otherwise, attackers can gain valuable insight on critical components for malicious purposes. Types of logs Logging provides root cause analysis for more than just . NET applications. The operating system, system applications such as IIS, and security and network appliances log events to some location determined by the administrator configurations. Custom applications may have no logging components at all, but the operating system or host... --- ### Where are JavaScript Errors Logged? > This simple guide explains where JavaScript logs are located, how to configure logging, and why error monitoring tools like Rollbar make debugging even faster. - Published: 2019-02-12 - Modified: 2021-06-11 - URL: https://rollbar.com/guides/javascript/where-are-javascript-errors-logged/ - Guide Languages: JavaScript This simple guide explains where JavaScript logs are located, how to configure logging, and why error monitoring tools like Rollbar make debugging even faster. Where are JavaScript Errors Logged? Unlike other web languages, JavaScript was originally a client-side language. As a result, error handling is designed with the client side in mind, rather than the server side. Rather than dealing with log files, rotation, permissions, and all the other fun things that come with server-side languages, JavaScript errors are dealt with inline. While the client-side-only perception is slowly giving way to server-side Node. js due to the increased security and performance benefits of server-side rendering, many of the logging conventions of Node. js are still influenced by its browser-based siblings. Introduction to The Console In both client-side JavaScript and Node. js, log data is handled by default via a global console instance. While client-side JavaScript writes console data to the individual browser's developer console, Node. js console data is written to stdout and stderr. What this means, at least in terms of client-side JavaScript, is that log data is readily available to both the end user and the developer. While this can present some privacy issues, it can make debugging significantly easier in any environment. For those concerned about privacy, logging can also be disabled in production through logging frameworks or minification tools. Log Levels When it comes to logging, console. log is one of the more common debug methods used in JavaScript development. That said, the Console object offers a handful of other useful log levels, which can be used to provide more relevant information with minimal changes. log The purpose of console.... --- ### Guide to Frontend Error Handling > Discover the secrets to effective error handling and how to track errors in real-time. Don't miss out on the essential tips in this must-read guide. - Published: 2022-12-12 - Modified: 2022-12-12 - URL: https://rollbar.com/blog/guide-to-frontend-error-handling/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript To enhance user experience, avoid data loss, and guard against security vulnerabilities, frontend errors must be handled properly. In this post, we'll cover the most common types of frontend errors and best practices for handling them. We'll also explore how to use the popular error monitoring platform Rollbar to track and manage errors. Common types of frontend errors There are several types of frontend errors that can occur. The most common are: JavaScript runtime errors These occur when the JavaScript code in your application is executed in the browser and something goes wrong. Examples include syntax errors (e. g. a missing semicolon in your code) and reference errors (e. g. using a variable that has not been defined). Network errors These occur when there is a problem with the network connection between the browser and your application's server. Examples include failed HTTP requests (e. g. when the server is down or the request times out) and DNS errors (e. g. when the domain name cannot be resolved). User input errors These occur when users provide invalid or incomplete input to your application. Examples include validation errors (e. g. entering an invalid email address) and required field errors (e. g. forgetting to fill out a required form field). Best practices for frontend error handling To effectively handle frontend errors, follow these best practices: Display user-friendly error messages When an error occurs, always provide a clear and helpful error message. This helps users understand what went wrong and potentially guide them towards... --- ### How to Throw Exceptions in JavaScript > It's not enough to throw exceptions in JavaScript. You need to throw exceptions effectively. Here's how to create a human-readable—and diagnosable—exception object. - Published: 2019-02-12 - Modified: 2021-06-11 - URL: https://rollbar.com/guides/javascript/how-to-throw-exceptions-in-javascript/ - Guide Languages: JavaScript It's not enough to throw exceptions in JavaScript. You need to throw exceptions effectively. Here's how to create a human-readable—and diagnosable—exception object. Throwing Exceptions in JavaScript Errors are thrown by the engine, and exceptions are thrown by the developer. But what exactly does that mean? In JavaScript, all exceptions are simply objects. While the majority of exceptions are implementations of the global Error class, any old object can be thrown. With this in mind, there are two ways to throw an exception: directly via an Error object, and through a custom object. Generic exceptions While the built-in Error class is fairly well defined—including such things as the filename, line number, and stack trace to name a few—when it comes down to it, the most important thing to take note of is the message. The first—and often only—parameter to be passed during Error instantiation, the message is a human-readable error that can often be related directly to the end user. Throwing a generic exception is almost as simple as it sounds. All it takes is to instantiate an exception object—with the first parameter of the Error constructor being the error message—and then... "throw" it. throw new Error('Exception message'); error. code vs. error. message It is important to note here that, while the error message is the human readable error data, Node. js also provides an error code that identifies the kind of error that is being thrown. This value is useful as it allows you to programmatically adapt to errors that may be thrown, regardless of the message contained within the error. While error codes are generally used for system errors, when creating... --- ### How to Handle Exceptions in JavaScript > A simple guide to exception handling in JavaScript. ✓ Harden your app against unexpected errors ✓ Respond more effectively ✓ Adapt to any issue that may arise. - Published: 2019-02-12 - Modified: 2023-09-19 - URL: https://rollbar.com/guides/javascript/how-to-handle-exceptions-in-javascript/ - Guide Languages: JavaScript The simple guide to exception handling in JavaScript. ✓ Harden your app against unexpected errors ✓ Respond more effectively ✓ Adapt to any issue that may arise. Exception Handling in JavaScript The try-catch As with many programming languages, the primary method of dealing with exceptions in JavaScript is the try-catch. In a nutshell, the try-catch is a code block that can be used to deal with thrown exceptions without interrupting program execution. In other words, you can "try" to execute a block of code, and "catch" any exceptions that are thrown. Catching all exceptions At its simplest, catching exceptions in JavaScript requires simply wrapping an expression in a try-catch statement. Without any additional configuration, this method will catch any and all exceptions that get thrown. try { // ... } catch (e) { // ... } While this is relatively simplistic in terms of error handling, it is important to note that the exception that is caught is always an implementation of the JavaScript Error object, which brings with it some useful properties such as a human-readable description of the error. This allows you to log these exceptions for debugging. try { // ... } catch (e) { console. log(e); } Catching specific exceptions In most instances, however, catching every exception thrown is considered bad practice. It is far more manageable to specifically catch and react to exceptions that you expect to encounter, rather than implementing a catchall. To accomplish this, simply check the exception instance type before reacting to it. try { // ... } catch (e) { if ( e instanceof CustomExceptionError ) { // ... } } While JavaScript does offer the ability to... --- ### How to Debug JavaScript Errors > Identifying the underlying causes of most JavaScript errors can be difficult. Learn the common steps towards pinpointing and resolving JavaScript errors. - Published: 2019-02-12 - Modified: 2021-06-11 - URL: https://rollbar.com/guides/javascript/how-to-debug-javascript-errors/ - Guide Languages: JavaScript Most JavaScript error reports are vague, and identifying the underlying causes can be difficult. Learn the common steps towards pinpointing and resolving JavaScript errors that crop up in production. How to Debug JavaScript Errors Debugging JavaScript errors in a production environment can be a difficult experience. More often than not, the error reports are vague, and identifying the underlying causes can be difficult at best. That said, there are a few common steps that can be followed towards identifying and resolving errors that crop up in production. Gathering information Step 1: Attempt to replicate circumstances In software development, the first step towards debugging any issue is attempting to replicate the circumstances. With most programming languages, this is bolstered by reviewing logs leading up to an error, but with client-side JavaScript, this type of diagnosis requires significantly more foresight (more on that below). Before we can replicate any circumstances of an issue, and assuming we have access to any production logs, we first need to establish some testing guidelines. This involves doing things like mimicking the production database, the user accounts involved, and even the operating system. Everything is fair game here. Step 2: Test assumptions Once you've established the circumstances that you think might throw the exception or error you are hunting down, it's time to test them. Never test exceptions in production. Development and staging environments are designed to be breakable without any impact on the end users, so always always always try to break your code in a safe environment. Step 3: Increase logging More information is always better. Using the methods described in Where are JavaScript Errors Logged? , the first step towards diagnosing any issue... --- ### Where are Java Errors Logged? > This simple guide explains where Java logs are located, how to configure logging, and why error monitoring tools like Rollbar make debugging even faster. - Published: 2019-02-12 - Modified: 2021-06-11 - URL: https://rollbar.com/guides/java/where-are-java-errors-logged/ - Guide Languages: Java This simple guide explains where Java logs are located, how to configure logging, and why error monitoring tools like Rollbar make debugging even faster. Where are Java Errors Logged? Logging Java errors is an essential component in any application as it allows developers to track the root cause of errors and fix them easily. By default, Java log messages are stored only on the console, but they can be transferred to a longer term location as well. These messages let you see what’s happening in your application and troubleshoot problems. Console logs in Java At the most basic level, Java errors are logged on the console. Developers typically call System. out. println to print log messages on the console. Whenever the console is closed, these messages are lost as they cannot be stored in any permanent location. To overcome this problem, developers use Java logging frameworks which are responsible for storing data to any other location such as a file or a database. Java Logging frameworks There are several common frameworks for logging in Java and they let you customize where your logs are sent. Logback and Log4j are two popular Java logging frameworks that are simple to use. Logback was built as a replacement for its predecessor, Log4j. Logback offers a faster implementation than Log4j, provides more options for configuration, and gives more flexibility in archiving old log files. The newest is log4j 2 but it's still catching up in adoption. Let's focus on Logback since it offers many improvements and is very common. The Logback architecture consists of three main classes: logger, appender, and layout. The appender determines where the logs are... --- ### How to Throw Exceptions in Java > It's not enough to throw exceptions in Java. You need to throw exceptions effectively. Here's how to create a human-readable—and diagnosable—exception object. - Published: 2019-02-12 - Modified: 2025-03-17 - URL: https://rollbar.com/guides/java/how-to-throw-exceptions-in-java/ - Guide Languages: Java It's not enough to throw exceptions in Java. You need to throw exceptions effectively. Here's how to create a human-readable—and diagnosable—exception object. Throwing Exceptions in Java It is important to understand how to throw exceptions in Java. This will allow you to create higher quality code where errors are checked at compile time instead of runtime, and create custom exceptions that make debugging and recovery easier. Install the Java SDK to identify and fix exceptions How to throw exceptions in Java Throwing an exception is as simple as using the "throw" statement. You then specify the Exception object you wish to throw. Every Exception includes a message which is a human-readable error description. It can often be related to problems with user input, server, backend, etc. Here is an example that shows how to throw an exception: throw new Exception("Exception message"); It’s limiting to use a generic exception because it makes it difficult for the calling code to catch it. It’s better to throw custom exceptions, which we will come back to in a bit. Using the Throws keyword Throws is a keyword used to indicate that this method could throw this type of exception. The caller has to handle the exception using a try-catch block or propagate the exception. We can throw either checked or unchecked exceptions. The throws keyword allows the compiler to help you write code that handles this type of error, but it does not prevent the abnormal termination of the program. With the help of the throws keyword, we can provide information to the caller of the method about the types of exceptions the method might throw.... --- ### How to Handle Exceptions in Java > The simple guide to exception handling in Java. ✓ Harden your app against unexpected errors ✓ Respond more effectively ✓ Adapt to any issue that may arise. - Published: 2019-02-12 - Modified: 2022-09-28 - URL: https://rollbar.com/guides/java/how-to-handle-exceptions-in-java/ - Guide Languages: Java The simple guide to exception handling in Java. ✓ Harden your app against unexpected errors ✓ Respond more effectively ✓ Adapt to any issue that may arise. Exception Handling in Java The classic definition of an exception is an event that occurs during the execution of a program and that disrupts the normal flow of instructions. Java exceptions are specialized events that indicate something bad has happened in the application, and the application either needs to recover or exit. Why handle Java exceptions? Java exception handling is important because it helps maintain the normal, desired flow of the program even when unexpected events occur. If Java exceptions are not handled, programs may crash or requests may fail. This can be very frustrating for customers and if it happens repeatedly, you could lose those customers. The worst situation is if your application crashes while the user is doing any important work, especially if their data is lost. To make the user interface robust, it is important to handle Java exceptions to prevent the application from unexpectedly crashing and losing data. There can be many causes for a sudden crash of the system, such as incorrect or unexpected data input. For example, if we try to add two users with duplicate IDs to the database, we should throw an exception since the action would affect database integrity. Developers can predict many of the Java exceptions that a piece of code is capable of throwing. The best course of action is to explicitly handle those exceptions to recover from them gracefully. As we will see ahead, programming languages provide ways to handle exceptions starting from specific ones and moving toward... --- ### How to Debug Java Errors > Most Java error reports are vague, and identifying the underlying causes can be difficult. Learn the common steps towards pinpointing and resolving Java errors that crop up in production. - Published: 2019-02-12 - Modified: 2022-11-28 - URL: https://rollbar.com/guides/java/how-to-debug-java-errors/ - Guide Languages: Java Most Java error reports are vague, and identifying the underlying causes can be difficult. Learn the common steps towards pinpointing and resolving Java errors that crop up in production. How to Debug Java Errors Debugging Java code for errors is a must-have skill for any developer. If an application crashes in a production environment, it can badly impact your business. You can prevent crashes and errors by spending time testing and debugging your code before deploying it. There are several ways to debug Java code. When developing, you can use the tools available in your IDE or debugger. Once the application is deployed to production, you can capture the logs or use an error monitoring solution. Let’s explore each of these ways in more detail. Debugging with Eclipse IDE There are several ways to debug your code in Eclipse. Below are a few popular ways: A conditional breakpoint: For debugging a Java code in Eclipse IDE, a breakpoint is a good approach. Applying breakpoints lets a debugger temporarily suspend the execution of your program at a certain point in the code. This allows you to examine the state of the application, the values of local variables, the call stack, and to step through the code line-by-line. This information gives you more clues to why the problem occurs. To set a breakpoint, just toggle it by clicking on the left-hand side of the screen. Exception breakpoints: Runtime exceptions like NullPointerException and ArrayIndexOutofBoundException are the errors encountered most often. Figuring out the root cause of these errors can be difficult. Eclipse IDE offers exception breakpoints in which the execution of the program is stopped whenever the specified exception occurs. Watch point:... --- ### What is E_WARNING in PHP? > PHP run-time warnings are non-fatal errors that do not halt script execution. Learn more about them here. - Published: 2022-12-12 - Modified: 2022-12-21 - URL: https://rollbar.com/blog/php-e-warning/ - Categories: Code Tutorials, PHP - Tags: PHP The PHP E_WARNING constant refers to run-time warnings. Warnings are non-fatal errors in PHP that do not halt script execution. What Causes E_WARNING PHP Warnings are errors that are issued when something unexpected or unwanted occurs in code. They are usually triggered because of minor mistakes such as: Referring to a file that does not exist. Wrong or missing arguments for inbuilt function calls. Sending HTTP headers after sending HTTP body output. It is considered good practice to fix warnings as they can potentially lead to serious issues over time. How to Enable E_WARNING It is best practice to enable E_WARNING during development since it warns developers about possible bugs in code. This can help with issues such as missing inbuilt function arguments and saves time when debugging. E_WARNING can be enabled using the error_reporting function: error_reporting(E_WARNING); This will show only E_WARNING errors. However, it is recommended to show all errors during development. This can be done by enabling E_ALL: error_reporting(E_ALL); E_WARNING Example Here's an example of a PHP E_WARNING issued when calling an inbuilt function with a missing parameter: When the above script is executed, a Warning is generated since the var_dump function expects an argument: PHP Warning: var_dump expects at least 1 parameter, 0 given in main. php on line 3 How to Fix E_WARNING PHP Warnings can be identified by inspecting the warning message and the line numbers in code where the issue exists. The issue can then be fixed in code to resolve the Warning. In... --- ### Where are .NET Errors Logged? > This simple guide explains where .NET logs are located, how to configure logging, and why error monitoring tools like Rollbar make debugging even faster. - Published: 2019-02-12 - Modified: 2022-11-30 - URL: https://rollbar.com/guides/dotnet/where-are-net-errors-logged/ - Guide Languages: .Net This simple guide explains where .NET logs are located, how to configure logging, and why error monitoring tools like Rollbar make debugging even faster. Where are . NET Errors Logged? Although every developer aims for bug-free code, it’s nearly impossible to deploy an application without a few unwanted bugs. You can test an application thoroughly, but still have logic errors. These errors can vary from critical issues that inhibit proper use of the application to minor annoyances. Regardless, you must be able to fix any bug in the application before it becomes a huge nuisance for your users. You detect bugs and find the . NET object that’s causing it by using logging techniques. . NET can log errors to the Windows Event Viewer, a database, or a file using libraries already included in the . NET framework. Each solution has its pros and cons. You can use your own custom libraries or simplify the process using third-party libraries installed from NuGet. . NET is a backend coding platform as opposed to client-side languages such as JavaScript. This means that your logging solution for . NET must be able to integrate with your application and your server. If the application is public, the logging solution must also be secure; otherwise, attackers can gain valuable insight on critical components for malicious purposes. Types of logs Logging provides root cause analysis for more than just . NET applications. The operating system, system applications such as IIS, and security and network appliances log events to some location determined by the administrator configurations. Custom applications may have no logging components at all, but the operating system or host... --- ### How to Debug .NET Errors > Most .NET error reports are vague, and identifying the underlying causes can be difficult. Learn the common steps towards pinpointing and resolving .NET errors that crop up in production. - Published: 2019-02-12 - Modified: 2022-12-03 - URL: https://rollbar.com/guides/dotnet/how-to-debug-net-errors/ - Guide Languages: .Net Most .NET error reports are vague, and identifying the underlying causes can be difficult. Learn the common steps towards pinpointing and resolving .NET errors that crop up in production. How to Debug . NET Errors There are many tools available to help developers debug errors. For local development, there is a great debugger built into Visual Studio. In production, you can look at log files and error monitoring solutions like Rollbar give your deeper insight into local variables and parameters. Debugging in Visual Studio The most popular IDE for . NET is Visual Studio and it offers great debugging tools. Visual Studio is considered one of the best development platforms on the market, and it’s easy to use once you understand how it works. Developers can put breakpoints in their code to step through each statement and watch the code execution flow. By watching and stepping through statements, you can replicate errors and find bugs. When you click "Run" from the Visual Studio Debug menu, the code is compiled and executes. The binaries are stored in the debug folder in the solution directory, and code executes until it reaches the break point (the red dot in the image above). When the debugger reaches the break point, execution stops and you can view the variable’s value by hovering your mouse over it. As you step through the program (using menu options or F10 and F11 keyboard shortcuts), you can use the Watch section at the bottom of Visual Studio to watch specific variables. Drag and drop variables to this section to watch as they change. This can help you find bugs in your program before you deploy it. It also... --- ### What is Migration in Rails? > Migration in Rails makes it easy to change an application's database schema consistently, but occasionally it trips up. Learn what steps you can take. - Published: 2022-12-05 - Modified: 2022-12-05 - URL: https://rollbar.com/blog/migration-in-rails/ - Categories: Code Tutorials, Ruby - Tags: ruby Migration in Rails is a tool that allows the developer to use Ruby to change an application's database schema. Instead of using SQL scripts, we use Ruby code, which is database independent, so it is easy to move the application to a completely new platform. We define these database changes in domain-specific language (DSL), and these migrations can be rolled back and managed along with the application source code. In Ruby, the db/migrate folder contains all the migrations in the form of files. The name of the file is in the form YYYYMMDDHHMMSS_name_of_migration. rb, which is the UTC timestamp followed by the name of the migration. One important point to remember here is that the migration class name should match the later part of the file name. For instance, 20220906120001_add_details_to_orders. rb should define the class AddDetailsToOrders (CamelCased). Using migration, we can create tables, add indexes on columns, and add or remove columns. Example of Migration in Rails Let's see an example to understand migration better: rails generate migration CreateEvents department:string The above command creates a migration that creates table events in our database. And a timestamped Ruby file, 20221119103635_create_events. rb, is also created in the db/migrate directory. A Ruby file would have the following contents: class CreateEvents < ActiveRecord::Migration def change create_table :events do |t| t. string :department t. timestamps end end end Let's examine the code shown above: The migration file class CreateEvents inherits from superclass ActiveRecord::Migration. 5. 7 describes the Rails version here. Then we have the method... --- ### How to Throw Exceptions in .NET > It's not enough to throw exceptions in .NET. You need to throw exceptions effectively. Here's how to create a human-readable—and diagnosable—exception object. - Published: 2019-02-12 - Modified: 2021-09-20 - URL: https://rollbar.com/guides/dotnet/how-to-throw-exceptions-in-net/ - Guide Languages: .Net It's not enough to throw exceptions in .NET. You need to throw exceptions effectively. Here's how to create a human-readable—and diagnosable—exception object. Throwing Exceptions in . NET Types of exceptions and errors Exceptions happen on logic errors when an operation is invalid or impossible, so the normal flow of execution is aborted. If the exception is not handled, it will crash the application. For example, a QA person may be able to find bad input or a combination of bad input and logic flaws that causes an exception. Any unhandled exception is considered a bug, but even handled events can affect user experience if they are done incorrectly. Regardless of the type of bug, it’s a developer’s goal to handle any of them gracefully so the user is able to continue using the application without losing data or abruptly crashing the program. Developers want to avoid uncaught exceptions the most. These errors crash an application and interrupt user workflow. Because they’re unhandled, a user loses data if any is unsaved; these errors can even cause corruption with saved data. For instance, if the database doesn’t handle errors in workflow, orphaned records could occur and users are forced to contact customer support over issues that can’t be remedied on the front end. Exceptions vs errors You should know when to throw an exception versus an error. Throwing an exception means that you raise an event that interrupts the normal program execution. However, some workflows don’t need an exception thrown. Errors could be coded as regular function return values. For instance, a user entering the wrong URL in a browser is an error, not... --- ## KB Posts ### How to Resolve NameError: Uninitialized Constant in Ruby > The NameError: Uninitialized Constant error in Ruby is often raised when a given variable or constant is undefined or invalid. Learn how to handle it. - Published: 2022-12-05 - Modified: 2022-12-05 - URL: https://rollbar.com/blog/ruby-nameerror/ - Categories: Code Tutorials, Ruby - Tags: ruby A NameError is raised when a referenced variable or a constant, such as a module, a class, or a constant variable, isn't defined or is invalid. The Uninitialized Constant error is a variation of the NameError exception class and has several reasons to occur. NameError: uninitialized constant Object::Something When this error occurs, several class names appear in place of Something. What causes an Uninitialized Constant Error? Let’s look at the most common reasons why NameError: Uninitialized Constant occurs: Whenever a class or module is referred to in code that can't be found, this error occurs. This often happens because the require method is missing, which is used to load another file and import all classes and method definitions from that file. Methods and variables in Ruby start with lowercase letters, whereas class names begin with uppercase letters. So in the code, if this distinction is missing, we'll get an Uninitialized Constant exception. Ruby is case-sensitive, so if there is any typo in the code, this error pops up. One small example of that is: X = 20; Y = 50; SUM = X+Y; print "Sum of x + y = ", sum; When the above code is executed, we get the following output: undefined local variable or method 'sum' for main:Object (NameError) If the code contains rubygems, which all new versions of Ruby disapprove of. Example of NameError: Uninitialized Constant Class Let’s examine and analyze one of the causes of Uninitialized Constant errors. This one occurs when the configuration of... --- ### What is E_NOTICE in PHP? > Run-time notices indicate minor errors in PHP that do not halt script execution. Learn more about them here. - Published: 2022-12-01 - Modified: 2022-12-12 - URL: https://rollbar.com/blog/php-e-notice/ - Categories: PHP - Tags: PHP The PHP E_NOTICE constant refers to run-time notices. Notices indicate that the script encountered something that could indicate an error, but could also happen in the normal course of running a script. What Causes E_NOTICE Notices indicate minor errors in PHP that do not halt script execution. They are usually triggered because of minor mistakes in code such as: Using a variable before declaring it. Typos in variable names. Using an ambiguous array index. Notice messages are not serious and can often be ignored. However, it is generally considered good practice to fix them. How to Enable E_NOTICE It is best practice to enable E_NOTICE during development since it warns developers about possible bugs in code. This can help with issues such as unassigned values, typos etc. and saves time for debugging. E_NOTICE can be enabled using the error_reporting function: error_reporting(E_NOTICE); This will show only E_NOTICE errors. However, it is recommended to show all errors during development. This can be done by enabling E_ALL: error_reporting(E_ALL); E_NOTICE Example Here's an example of a PHP E_NOTICE issued when using an undeclared variable: When the above script is executed, a Notice is generated since $mystring is not declared: PHP Notice: Undefined variable: mystring in main. php on line 2 How to Fix E_NOTICE PHP Notices can be identified by inspecting the notice message and the line numbers in code where the issue exists. The issue can then be fixed in code to resolve the Notice. In the earlier example, the notice message can... --- ### Error Grouping Best Practices - Published: 2022-02-08 - Modified: 2022-07-20 - URL: https://rollbar.com/knowledge-base/error-grouping-best-practices/ - KB Tags: Best Practices, Core features - KB Categories: Core Features and Best Practices Why error grouping is important Without grouping, error monitoring and error logs churn out a massive list of unsorted errors that must each be separately triaged, identified, and dealt with. Since applications are being used by thousands or even millions of users simultaneously, development teams spend vast amounts of time in triaging and fixing errors. Grouping errors is increasingly important. Below you can find a checklist that will assist you in reviewing your project settings. We also have some handy tips & tricks for you to make sure your grouping works properly, so you can concentrate on the important thing: fixing errors! Error grouping in Rollbar There are two types of item grouping in Rollbar: automation-grade grouping (default grouping) and custom fingerprinting. Automation-grade grouping is performed by Rollbar automatically, it neither requires nor accepts any input from the user and is typically used for the majority of item grouping. Automation-grade grouping combines Rollbar’s extensive error library with machine learning components to formulate optimal grouping solutions. This provides continuous improvement to the grouping engine to help improve your experience. Custom fingerprinting is more of a specialized feature that allows you to override the default grouping engine by declaring your own rules. Custom fingerprinting rules will always be evaluated first, and if no match is found then the automation-grade grouping engine will group the given occurrence. This feature allows users to create grouping rules for custom data and edge cases that the grouping engine may not properly detect. Grouping Issues Since new... --- ### How to Fix E_WARNING: strpos(): Empty needle in PHP > This warning is issued if the substring being searched for using the strpos() function is an empty string. Learn how to fix it. - Published: 2022-11-17 - Modified: 2022-12-12 - URL: https://rollbar.com/blog/php-e-warning-strpos-empty-needle/ - Categories: PHP - Tags: PHP The PHP strpos($haystack, $needle, $offset) function is used to find the numeric position of the first occurrence of a substring in a string. The haystack parameter is the string to search in, and needle is the substring being searched for. The E_WARNING: strpos: Empty needle warning is issued if the needle substring is empty when calling the strpos function. E_WARNING: strpos: Empty needle Example Here’s an example of an E_WARNING: strpos: Empty needle issued when searching for an empty string using the strpos function: In the above example, since the needle parameter in the strpos function is an empty string, an E_WARNING: strpos: Empty needle is issued: PHP Warning: strpos: Empty needle in main. php on line 4 How to Fix E_WARNING: strpos: Empty needle The E_WARNING: strpos: Empty needle warning can be avoided by adding a check before calling the strpos function to ensure that the needle parameter is not an empty string. The function should only be called if the substring being searched for is not empty. The above approach can be applied to the previous example to avoid the warning: Here, a check is added to ensure that the strpos function is only called if the needle parameter is not an empty string. This avoids the E_WARNING: strpos: Empty needle warning, and the correct output is produced as expected: Continuing execution Track, Analyze and Manage Errors With Rollbar Managing errors and exceptions in your code is challenging. It can make deploying production code an unnerving experience. Being... --- ### How Rollbar helps ensure Low-Risk Releases - Published: 2021-06-23 - Modified: 2022-07-20 - URL: https://rollbar.com/knowledge-base/how-rollbar-helps-ensure-low-risk-releases/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Pain points You need to get ideas out quickly and with confidence, but releases are inherently risky. The first minutes or hours after release are when errors often first occur. New deploys are a high-risk environment for errors with a high potential impact on user experience. Companies are usually hesitant to deploy code to production, as they are concerned about: Downtime due to a new release in production, Bad user experience when a bug is accidentally released into production Reducing Mean Time To Acknowledge (MTTA) and remediating issues before users notice them is critical to your business. Here's how Rollbar helps make your releases low risk. Customizable notifications help you stay alert and reduce noise Sometimes folks overlook Rollbar’s powerful customizable notification engine. Notifications can be triggered in specific conditions using filters, and the message format can be customized using variables. This ensures that you are notifying people or teams only when it is important. Rollbar supports several messaging tools, including email, Slack, PagerDuty, and many more. Using Rollbar’s customizable notifications can help reduce MTTA (Mean Time To Acknowledge) by taking on the identification and tracking steps. This reduces the manual effort required to notify the right person or team responsible for the affected code. Thanks to Rollbar’s real-time reporting agent and grouping engine, the right people are notified more quickly and can begin to address the issue without spending valuable time gathering information. These notifications are delivered so quickly that they can also be used to trigger LaunchDarkly feature... --- ### How to Use errors.WithMessage() in Golang > The errors.WithMessage() method adds context to errors by annotating them with a new message which makes debugging easier. Learn more about it here. - Published: 2022-11-17 - Modified: 2024-07-24 - URL: https://rollbar.com/blog/golang-errors-withmessage/ - Categories: GoLang - Tags: golang In Golang, the WithMessage method allows you to annotate errors with an additional message. Often, error values by themselves don’t give enough context to be useful in debugging. Take, for example, Golang’s basic error handling technique: if err ! = nil { return err } In Golang, errors are treated as values, so err contains the error value. In this situation, a developer could make use of the error package to add context to the code along with the failure path without destroying the original value of the error. Syntax of WithMessage WithMessage annotates err with a new message. If err is nil, WithMessage returns nil. func WithMessage(err error, message string) error Example One In the below code, the errors package has been imported first, followed by an errors. New method is used and returns an error. Each call to New returns a distinct error value in the event that the content is indistinguishable. package main import ( "fmt" "github. com/pkg/errors" ) func main { cause := errors. New("What's the cause? ! ") err := errors. WithMessage(cause, "something unusual has occurred") fmt. Println(err) } Output something unusual has occurred: What's the cause? ! Example Two Let’s see another block of code to understand it even better. import ( "database/sql" "fmt" ) func second error { return sql. ErrNoRows } func first error { return second } func main { err := first if err == sql. ErrNoRows { fmt. Printf("Data error, %+v\n", err) return } } Output Executing the above... --- ### Rollbar as a tool for DevOps Teams > DevOps monitoring & troubleshooting is a complex process. There are many different places where failures can occur, and it is up to you as an engineer to diagnose and address these problems. Fortunately, Rollbar can help DevOps teams by providing better alerting signal and a new starting point for your investigations. - Published: 2021-06-23 - Modified: 2022-07-20 - URL: https://rollbar.com/knowledge-base/rollbar-as-a-tool-for-devops-teams/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices DevOps monitoring & troubleshooting is a complex process. There are many different places where failures can occur, and it is up to you as an engineer to diagnose and address these problems. Fortunately, Rollbar can help DevOps teams by providing better alerting signal and a new starting point for your investigations. Rollbar is most commonly known for its ability to help developers improve their code quality by reporting errors in real-time and grouping those errors to effectively determine the code culprit of a given issue. However, thanks to features like Automation-Grade Grouping and customizable alerting, Rollbar can also be used to empower other roles such as SREs and DevOps engineers. These features give better visibility into DevOps processes such as the CI/CD pipeline and the operational health of the code. Use Rollbar as a Starting Point for all Error Investigations Thanks to Rollbar’s ML-powered grouping engine, alerts can notify your team of errors that have not been previously reported in your code. This intelligent analysis helps keep you informed of new problems as they surface — even if only a small number of users are affected — so that you can proactively be one step ahead. Rollbar items are tightly coupled to the code that causes these items. Features like Code Context can show you the exact version and line of code where an error originated, as well as the last person to change that code. Therefore, the use of Rollbar alerts as a first line of defense can be... --- ### How to Handle the NoMethodError in Ruby > The NoMethodError is raised when an object on which we are calling the method doesn't exist. Learn how to use method_missing() to handle it. - Published: 2022-11-08 - Modified: 2022-11-11 - URL: https://rollbar.com/blog/ruby-nomethoderror/ - Categories: Code Tutorials, Ruby - Tags: ruby The NoMethodError is the most common error encountered in Ruby. As the name suggests, a NoMethodError occurs when the object on which we are trying to call a method or an attribute is not defined. For example when you call a method on an object that is nil or that is not defined: message = "hello world" message. dummyMethod Output: undefined method `dummyMethod' for "hello world":String (NoMethodError) Let’s take a look at some more examples and how to define a method_missing method to gracefully handle such errors. Example 1: NoMethodError in Ruby In the code example that follows, we've built a calculator that can operate on two numbers. In order to do these activities, we created the class' objects and called the various methods. class User: def plus(a,b) puts "The sum is : #{a} + #{b} = #{a+b}" end def mul(a,b) puts "The product is : #{a} * #{b} = #{a*b}" end end user = User. new user. plus(3,4) user. mul(5,6) user. divide(4,5) Output: Example 1 When the above code is executed we get the following output: The sum is : 3 + 4 = 7 The product is : 5 * 6 = 30 undefined method `divide' for # (NoMethodError) You can see that for the first two methods our code gave the correct answer but for the divide method we got NoMethodError. This indicates that the method which we are calling using the object user isn’t defined. Use method_missing to Handle NoMethodError in Ruby When dealing with small... --- ### How to Handle InvalidArgument Exception in PHP > The PHP InvalidArgumentException is an exception that is thrown when an inappropriate argument is passed to a function. Learn how to handle it. - Published: 2022-11-08 - Modified: 2022-12-12 - URL: https://rollbar.com/blog/php-invalidargumentexception/ - Categories: Code Tutorials, PHP - Tags: PHP The PHP InvalidArgumentException is an exception that is thrown when an inappropriate argument is passed to a function. This could be because of an unexpected data type or invalid data. What Causes InvalidArgumentException There are mainly two cases where an InvalidArgumentException can be thrown: When the strict_types flag is enabled and an unexpected data type is passed for an argument. When the data type of an argument is correct, but the data value is invalid. InvalidArgumentException Example Here’s an example of an InvalidArgumentException thrown when an inappropriate type is passed as an argument: In the above example, the multiply function expects two numbers as arguments. If either of the two arguments are not numbers, an InvalidArgumentException is thrown: PHP Fatal error: Uncaught InvalidArgumentException: Both arguments must be numbers in main. php:8 Stack trace: #0 main. php(13): multiply #1 {main} thrown in main. php on line 8 How to Handle InvalidArgumentException in PHP The following steps should be followed to handle an InvalidArgumentException: Inspect the exception stack trace and identify the lines of code that pass the invalid argument. Update the code to make sure that the passed argument is valid within the method that uses it. To catch the InvalidArgumentException, try-catch blocks can be used. Certain situations can be handled using a try-catch block such as asking for user input again instead of stopping execution when an invalid argument is encountered. Track, Analyze and Manage Errors With Rollbar Managing errors and exceptions in your code is challenging. It can make... --- ### How to Handle an ActionController:: RoutingError in Ruby on Rails > The Rails version of the 404 error, ActionController::RoutingError occurs when a URL requested does not have a matching route. Learn how to catch them. - Published: 2022-11-08 - Modified: 2022-11-09 - URL: https://rollbar.com/blog/ruby-on-rails-routingerror/ - Categories: Code Tutorials, Ruby - Tags: ruby The ActionController::RoutingError is the most common error faced when working on a Ruby on Rails project - it’s equivalent to the classic 404 error in web applications. The ActionController::RoutingError indicates that there isn't a route in the application for the URL entered by the user in the browser. Wait, What is an ActionController? ActionController is the "C" in the Model-View-Controller software design pattern. It is made up of several actions that are carried out in response to a request and either redirects to another action or renders a template. It serves as an intermediary between views and models, and is the foundation for all web requests made using Rails. How to Handle an ActionController::Routing Error When the ActionController::RoutingError error occurs, a log record is created as follows: ActionController::RoutingError (No route matches "... . . "): It’s best to explicitly catch and throw the ActionController::RoutingError with a custom message. This is because they may go unnoticed in the log files. To do so, add the following code in your config/routes. rb file: Rails. application. routes. draw do # all your other routes match '*unmatched', to: 'application#not_found_method', via: :all end Now you need to add this not_found_method in your ApplicationController. class ApplicationController < ActionController::Base protect_from_forgery with::exception def not_found_method render file: Rails. public_path. join('404. html'), status: :not_found, layout: false end end This will serve your 404 page every time a user-provided URL lacks a suitable route. Keep in mind though that any route or engine that is mounted after the application loads won’t... --- ### Manage Rollbar automatically through the Rollbar Terraform Provider - Published: 2021-04-08 - Modified: 2022-07-20 - URL: https://rollbar.com/knowledge-base/manage-rollbar-automatically-through-the-rollbar-terraform-provider/ - KB Tags: Best Practices - KB Categories: Managing Your Rollbar Account Terraform Provider is available for Rollbar Accounts The Rollbar account administration is critical to get the most out of Rollbar and to maintain data visibility across teams. However, this process can be tedious for large and fast-growing accounts. Users are required to manually support provisioning and management of Rollbar Accounts (using the UI or the APIs). Fortunately, the Rollbar Terraform Provider offers an automated way! Terraform is a multi-cloud provisioning product used to create, manage, and update infrastructure resources. The Provider will automate the creation, modification, and removal of resources within your account such as projects, users, and teams. The Terraform Provider is a declarative framework - which means that you can describe the end state that you want to achieve without stating the exact steps and ‘how’ to get there. It leverages the Rollbar API to make the changes necessary to reach and maintain its desired state. This way you can reduce the time it takes to provision and manage your Rollbar account, while cutting back on manual efforts and human error. What does the integration do? A Terraform integration, known as a Provider, provides a way to provision and manage a Rollbar Account. Instead of using the Ingestion API, it will use parts of the API that create, edit, and destroy Rollbar Accounts, Project, Teams, Access Tokens, etc. With the Rollbar Terraform Provider you will be able to: Manage projects and users with ease Create, read, update or delete projects and users easily Provision new projects automatically as... --- ### Finding items by UUID - Published: 2021-03-30 - Modified: 2022-07-20 - URL: https://rollbar.com/knowledge-base/finding-items-by-uuid/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices UUID in general A universally unique identifier (UUID) is a 128-bit number used to identify information in computer systems. When generated according to the standard methods, UUIDs are, for practical purposes, unique. Unlike most other numbering schemes, their uniqueness does not depend on a central registration authority or coordination between the parties generating them. While the probability that a UUID will be duplicated is not zero, for most applications it is negligible. How Rollbar uses UUID In Rollbar, each item and the corresponding occurrences have UUIDs based on this pattern: aaaaaaaa-bbbb-cccc-dddd-eeeeffffeeee. Rollbar uses UUIDs to differentiate occurrences from each other within a project. You can use them to search and identify occurrences. Finding items by UUID First, let's see where you can find UUIDs. The two most common places are the UI and Rollbar API responses. Here you can see a UUID inside an occurrence: Here is the UUID in an instance creation API response: As every occurrence have its own UUID, regardless if those were created through an API or by a Rollbar SDK, your logs and error messages might show you some, or even your customers can send you one along with their issue. To easily navigate to the corresponding occurrence on our UI, we created an easy-to-use search link. In our last example, we will use the UUID from the first clip: fe3b5d6b-4f14-4594-b5c2-bd632c012a15 In Rollbar, we have two types of UUID search links. One for the Items: https://rollbar. com/item/uuid/? uuid=aaaaaaaa-bbbb-cccc-dddd-eeeeffffeeee And one for the Occurrences: https://rollbar. com/occurrence/uuid/?... --- ### How to Handle PDOException in PHP > The PHP PDOException is a runtime exception that occurs when something goes wrong while using the PDO class or its related extensions. Learn how to handle it. - Published: 2022-10-31 - Modified: 2022-12-12 - URL: https://rollbar.com/blog/php-pdoexception/ - Categories: Code Tutorials, PHP - Tags: PHP The PHP PDOException is a runtime exception that occurs when something goes wrong while using the PDO (PHP Data Objects) class or its related extensions. For example, this exception can occur while handling database connections or queries. What Causes PDOException PHP Data Objects (PDO) are a collection of APIs that are used to access and work with databases. The PDOException is thrown anytime an issue occurs while using the PDO interface. Common situations where this exception can occur are: Attempting to connect to a database e. g. entering an incorrect password for the database connection. Issuing an SQL statement e. g. missing database table, invalid SQL statement. PDOException Example Here’s an example of a PHP PDOException thrown when facing issues connecting to a database using the PDO interface: In the above example, the PDO class is used to establish a connection to a database. Since the database connection parameters are incorrect, running the above code throws a PDOException: PHP Fatal error: Uncaught PDOException: SQLSTATE Connection refused in main. php:2 Stack trace: #0 main. php(2): PDO->__construct('mysql:host=loca... ', 'user', 'pass') #1 {main} thrown in main. php on line 2 How to Handle PDOException The PDOException can be caught and handled using a try-catch block. The try block should contain the lines of code that can throw the exception and the catch block should catch and handle the PDOException appropriately. The message associated with the exception can be retrieved using the Exception::getMessage method on the PDOException object. Using the above approach, the previous... --- ### Using Zapier to create Zendesk tickets - Published: 2021-03-19 - Modified: 2022-07-20 - URL: https://rollbar.com/knowledge-base/using-zapier-to-create-zendesk-tickets/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Why use webhooks? Webhooks are a powerful tool to receive information from Rollbar and use in any other workflows you have. These will trigger on conditions you set and contain information about the Rollbar item. More information on webhook configuration and information can be found here. What can we do with webhooks? Here’s one example utilizing Rollbar webhooks and Zapier. Zapier is a tool which can "catch" the webhook, process it, and forward it to other tools you’re using (called Zaps). The following will need a paid subscription to Zapier. For this demonstration, we will use both webhooks and our people tracking features. Suppose you have high priority clientele and need to ensure they have a smooth experience on your application. If they encounter an error you want to triage that immediately and inform your customer success team. As an example, let’s create a ticket in Zendesk for your team to follow up. Don't have time to read? Watch our short video on how you can setup Zapier to create Zendesk tickets: Create a Zendesk ticket automatically using Rollbar webhooks First, copy this Zap to your own Zapier account: https://zapier. com/shared/c2afe0eba9c4e8a565227315ac4831d2db905580 You’ll see a screen which contains the Zapier webhook URL. Copy this URL and we shall use it when creating the Rollbar webhook: We now are able to create the webhook from Rollbar. Go to your project settings, then select the + button in the Integrations column: Select Webhook and proceed to the next page: Paste the webhook URL... --- ### Rollbar Solutions: Enabling Support Teams - Published: 2021-03-18 - Modified: 2022-07-20 - URL: https://rollbar.com/knowledge-base/rollbar-solutions-enabling-support-teams/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Overview When your application surfaces bugs, it might put your Support team in a difficult position in understanding the impact of an error on users and customers and who might be the right team to assign the issue to. A proactive approach is essential: when users are affected by bugs in your software, it corrupts the customer experience, leading to users eventually choosing to stop using your product. In this article, we will walk you through how you can help Support team enablement with certain features of Rollbar: People tracking provides visibility over which users of the application are impacted by an error Item Severity level and error frequency help prioritize errors Automated Issue Tracking helps you to assign a developer to an issue to ensure resolution Rollbar helps your team understand the impact of errors on specific users, and you will be able to prioritize and assign errors based on the frequency of bugs and the volume/value of customers impacted by them. This will enable your team to address and resolve customer issues faster and with more context. People tracking When an error occurs in your application, one of the first questions is “How many people are affected? ” When you have People tracking set up, you will have visibility on how the errors in your application have impacted your customers. You can check the People menu in the Item details view to see: Which customers were affected by any one error: This gives you details on a particular... --- ### Intelligent alerting helps you stay on top of critical errors and reduce noise in your notification channels - Published: 2021-02-24 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/intelligent-alerting-helps-you-stay-on-top-of-critical-errors-and-reduce-noise-in-your-notification-channels/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Overview Discovering errors in a timely manner is crucial when it comes to fixing bugs in your product. Moreover, you should learn about an error before it is reported by your users. Setting up your alerts - for example enabling Slack notifications- can give you a huge advantage and helps your team to quickly react to critical events in a given domain. However, a large number of alerts can be overwhelming and counterproductive. The important alerts might get lost in the avalanche of notifications, and you might not notice severe alerts in time. One of the main problems causing alert noise is the under-specification of alerts created in a system. By providing insufficient parameters and filters and notifying unnecessarily large groups of users, you are essentially creating noise and causing problems in the future. The best way to reduce alert noise is to create a set of specific alert rules targeting the smallest subset of necessary users. This will involve a bit of planning and configuration, but the overhead will pay off in the long run. In this article, you will learn about: how best to set-up relevant channels and groups for notifications, how to specify filters and parameters that notify the appropriate groups of people at the right times, and how best to monitor and fine-tune alert thresholds. Create dedicated notification channels and groups Keeping your team informed on incoming errors is vital, however the noise incurred by false positive alerts can cause users to ignore notifications, which can... --- ### Introducing Automation-Grade Grouping - Published: 2020-12-01 - Modified: 2022-07-20 - URL: https://rollbar.com/knowledge-base/introducing-automation-grade-grouping/ - KB Tags: Core features - KB Categories: Working with Rollbar Items Overview Proactively discover, predict, and remediate errors with Rollbar’s real-time, AI-assisted workflows! The foundation for these workflows is Automation-Grade Grouping which dramatically improves the performance and accuracy of error categorization. Automation-Grade Grouping is the next generation of our grouping engine that is trained by machine learning on millions of crashes. Machine learning enables us to continuously analyze frequently occurring error types to deduplicate items accurately. Benefits include: Reduced noise in your items list and alerts Easier triaging by removing duplicates from the error list Faster response to errors through less manual effort and more automation Machine learning trained grouping algorithm Unlike our competitors, who use hard-coded grouping algorithms, we use machine learning to determine patterns on a on-going basis and identify frequently occurring error types. This helps increase the performance of Automation-Grade Grouping over hard-coded algorithms and significantly reduces the number of both over-grouped and under-grouped errors, getting rid of missed bugs and noise. Hardcoded rules can’t keep up with constantly changing stack traces, so we regularly run our AI model against new errors from our customers to recognize different error types and group them effectively. Frequent Grouping Update releases On the path to Automation-Grade Grouping, we frequently release new grouping updates that further improve grouping accuracy and allow users to observe and respond to errors quickly. Automation-Grade Grouping is currently available for Ruby, JavaScript, Java, Python and C#. We’ll be releasing it for additional languages, including Go and PHP soon! Our latest Ruby Grouping Update improves the grouping accuracy... --- ### Reduce noise with the help of Slack notifications integration - Published: 2020-09-25 - Modified: 2021-12-13 - URL: https://rollbar.com/knowledge-base/reduce-noise-with-the-help-of-slack-notifications-integration/ - KB Tags: Best Practices, Tool Integrations - KB Categories: Core Features and Best Practices Rollbar supports multiple messaging tools, where your team can get notified about errors and significant events. Integrating a messaging tool with your Rollbar projects helps you manage the incoming alerts, so you won’t overlook any essential event in your projects while you are not overloaded with messages. This way, you can focus on the important things: fixing bugs. In this article, we will focus on the most popular notification integration: Slack. We will cover: the benefits of using Slack integration in your projects, the perks of using Slack Actions, and tips and tricks to get the most out of using Slack (or other) notifications. So let’s get to it then! Slack notifications Slack is one of the most commonly used options for notification integration for Rollbar projects. Once Slack is integrated with Rollbar, default rules will have been created for your projects, ready to be used. You can also customize these rules and set them up to make sure they serve your team the best (and least annoying) way. With the help of notifications, you can: set-up the types of notifications you are interested in, add notification filters, to keep the messages relevant and limit the number of alerts, include notification variable values to customize the content of the messages based on the type of event that triggers the notification. With these set-ups, you can make sure that notifications are only triggered in specific conditions, with tailored messaging that fits your needs. For example, you can set-up an alert for... --- ### Jira integration best practices - Published: 2020-09-25 - Modified: 2022-07-20 - URL: https://rollbar.com/knowledge-base/jira-integration-best-practices/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Perks of an issue tracking integration Save time and debug faster by integrating an issue tracking tool with your Rollbar projects so that you can streamline workflows and issue monitoring. Rollbar can integrate with many popular issue tracking softwares, making it easy to track Rollbar detected errors in your already existing workflow. Integrating an issue tracker allows you to Manually: Create an issue to track a Rollbar error Link a Rollbar error to an already created issue Automatically: Create an issue for new or frequent occurrences Reopen a linked issue when a Rollbar error is reactivated or reopened by a user Resolve a linked issue when a Rollbar error is resolved In this article, we will focus on Jira, one of the most popular issue tracking tool for teams. Please continue reading to learn how to best leverage it with your Rollbar projects. Tracking Rollbar detected errors with Jira Setting up Jira with your Rollbar projects allows you to create issues instantly with rich contextual data and error analytics. Moreover, you can track all these in your already existing issue tracker workflow. Once you connect Rollbar with Jira, you can significantly improve your monitoring workflow with: Link and display root cause exception data in issues Set notification rules to open new issues automatically Create and assign Jira issues with a few clicks Bidirectional syncing, update statuses in both Rollbar and Jira Detailed error data will be conveniently and easily accessible within Jira, including: stack traces, error status, number total occurrences,... --- ### Filter or Ignore Errors from Bots - Published: 2020-09-22 - Modified: 2021-06-14 - URL: https://rollbar.com/knowledge-base/filter-or-ignore-errors-from-bots/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Filter or Ignore Errors from Bots Rollbar provides a few ways to filter or ignore errors that happen in requests made by bots. Using Custom Grouping You can create a Custom Grouping rule to group all errors from known bots into their own Item in Rollbar, separate from your other data. Then mute that item or change its severity. Here's an example custom grouping rule to ignore client-side JavaScript errors that are caused by the Baidu spider: }, "fingerprint": "Baiduspider js error", "title": "Baiduspider js error" } ] We use this ourselves: these errors are still tracked in case we need them, but they stay out of sight in day-to-day use. Filtering Client-Side If you would rather ignore them completely, you can filter them out before they are sent to the Rollbar API in the first place. For example, for client-side JavaScript: _rollbarConfig = { // current config... checkIgnore: function(isUncaught, args, payload) { if (window. navigator. userAgent && window. navigator. userAgent. indexOf('Baiduspider') ! == -1) { // ignore baidu spider return true; } // no other ignores return false; } } Some of our other libraries don't implement checkIgnore yet. Please check out the docs for your SDK to see if checkIgnore is implemented, and open an issue on the appropriate repo in GitHub if you'd like checkIgnore in an SDK that hasn't implemented it yet. --- ### Unknown(Script Error) - Published: 2020-09-22 - Modified: 2021-06-09 - URL: https://rollbar.com/knowledge-base/unknownscript-error/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices This happens when your JS code is hosted on a different domain (i. e. a CDN). To fix, set Access-Control-Allow-Origin: * on the JS file, and crossorigin="anonymous" on the tag. If the script errors are coming from Javascript that you don't maintain, you can suppress them using the ignoreMessages option in Rollbar. js It is normal to still get some of these errors even after following the steps below and setting up CORS, because almost everyone has third party JS on their site that isn't set up with the CORS headers. Full explanation "Script Error" happens when an uncaught JavaScript error crosses domain boundaries in violation of the cross-origin policy. For example, if you host your JavaScript code on a CDN, any uncaught errors (errors that bubble up to the window. onerror handler, instead of being caught in try-catch) will get reported as simply "Script error" instead of containing useful information. This is a browser security measure intended to prevent passing data across domains that otherwise wouldn't be allowed to communicate. It's implemented in Firefox and Chrome. To get the real error messages, do the following: 1. Send the Access-Control-Allow-Origin header Setting the Access-Control-Allow-Origin header to * signifies that the resource can be accessed properly from any domain. You can replace * with your domain if necessary, for example Access-Control-Allow-Origin: www. example. com. However, handling multiple domains gets tricky, and may not be worth the effort if using a CDN due to caching issues that may arise. See more here.... --- ### Spot and prioritize production errors with Versions - Published: 2020-09-22 - Modified: 2022-07-20 - URL: https://rollbar.com/knowledge-base/spot-and-prioritize-production-errors-with-versions-2/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Overview Versions feature is available for our Advanced and Enterprise plan customers as a useful addition to Deploy tracking. This feature comes handy if you are deploying continuously or if you have multiple code versions in production. With the help of Versions you will be able to: See which version of your deploys are throwing exceptions, Resolve your items in Versions, Resolve your items easily via Git commit messages. Watch our short video on Versions! Versions Enabling Versions provides you visibility on which versions of your code are throwing exceptions. With Version, you can have a clear view of which occurrences are the result of your latest deployed version, thus being able to decide whether to proceed with a full deployment after a canary deploy or if you should just stick with a previous stable version. It is also very helpful if you have multiple code versions running in production, such as with mobile apps. Triaging your errors will also become easier with Versions, as you will have more insights on when and who was the last to deploy and if the error has already been resolved by a teammate or not. Resolve in version With Versions, you can track which versions your errors are resolved in. When you resolve an item within Rollbar, you have the option to enter a version number. It will then appear in the item’s status history, thus providing more info about the item, when it was fixed and in which version of your deployments.... --- ### Send Log Messages to Rollbar - Published: 2020-09-22 - Modified: 2025-02-19 - URL: https://rollbar.com/knowledge-base/send-log-messages-to-rollbar/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices You can send any log message to Rollbar, not just exceptions. This is especially helpful for client-side applications that don't write to your server logs. Log messages can have the same attached metadata as exceptions (request, server, person, etc. ) and go through a similar fingerprinting process as exceptions. Log messages have a level (critical, error, warning, info, or debug), a body (just a string), and any arbitrary optional parameters you want to include. Javascript // log methods exist for each level, or pass as a param Rollbar. critical("Crash while processing payment"); Rollbar. log("error", "Crash while checking order status"); Rollbar. warning("Facebook API unavailable"); Rollbar. info("User logged in"); Rollbar. debug("Cron job starting"); // can pass arbitrary params Rollbar. info("User logged in", {loginType: "email+password"}); // rich metadata will be included automatically, but if you want to override: Rollbar. scope({person: {id: "123"}}). info("User logged in"); Ruby log methods exist for each level, or pass as a param Rollbar. critical("Crash while processing payment") Rollbar. log("error", "Crash while checking order status") Rollbar. warning("Facebook API unavailable") Rollbar. info("User logged in") Rollbar. debug("Cron job starting") # can pass arbitrary params Rollbar. info("User logged in", :login_type => "email+password") # rich metadata will be included automatically, but if you want to override: Rollbar. scope(:person => {:id => "123"}). info("User logged in") Python default level is 'error' rollbar. report_message('Got an IOError in the main loop') # logs at the 'warning' level rollbar. report_message('Got an IOError in the main loop', 'warning') # can also include the request object rollbar. report_message('Got an... --- ### Reduce Noisy Javascript Errors - Published: 2020-09-22 - Modified: 2021-09-20 - URL: https://rollbar.com/knowledge-base/reduce-noisy-javascript-errors/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Ignore noisy errors on the client-side Rollbar. js enables you to ignore errors client-side if you wish. You can filter by any value in the payload, and ensure that the error never even gets sent to the Rollbar API. To do this, use the checkIgnore configuration function. var _rollbarConfig = { ... checkIgnore: function(isUncaught, args, payload) { // Code here to determine whether or not to send the payload // to the Rollbar API // return true to ignore the payload } ... }; isUncaught is true if the error bubbled up to window. onerror. It is false if the error came from one of the Rollbar. js logging methods. args are the args passed to the Rollbar. js logging method. If the error is uncaught and is from an unhandled rejection, the args parameter contains the Promise object. payload is the payload that will be sent to the Rollbar API. You can use anything in the payload to conditionally filter these errors out. To have Rollbar. js ignore the payload here, return true from the function. To continue processing and have the error sent to the Rollbar API, return false. Whitelist specific domains You can configure Rollbar. js to only accept errors from your own domains. We recommend this if you use a lot of third party scripts that are generating errors you have no control over, and you only want to see errors coming from your own domains. var _rollbarConfig = { ... hostWhiteList: ... }; When hostWhiteList... --- ### Multiple Production Environments - Published: 2020-09-22 - Modified: 2021-05-05 - URL: https://rollbar.com/knowledge-base/multiple-production-environments/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Rollbar requires the environment property on all error occurrences to indicate where they occurred (production ,staging , qa , etc. ). The choice of which environment values to use is very important due to the following considerations: Items cannot be merged if they are in different environments The Dashboard, Items, and Deploys views can only show information from a single environment or all environments. Many of our customers deploy their apps to multiple production environments, e. g. multiple zones in Amazon Web Services, Google Cloud Platform, Azure, etc. In this case, you might want to see all the items and deploys to any of your production environments at once, but also be able to track which environment a particular error occurred in. You probably will want to merge items that occurred in different production environments if they have the same root cause. Recommended usage: Use the environment value production for all errors from and deploys to any production environment. Use the host property in your error payloads to include the 'full path' of the server where an error occurred, including the name of the region/zone, e. g. us-east-1-web02 for the server web-02 that is hosted in the us-east-1 region. If you follow this approach, you can then merge any items that occur in a production environment. To find the items that are only occurring in a particular region, you can use the host advanced search option, which supports prefix search: host:us-east-1 To find items that occurred on a specific server... --- ### Keep an eye on your deploys with the help of Deploy Tracking - Published: 2020-09-22 - Modified: 2021-06-14 - URL: https://rollbar.com/knowledge-base/keep-an-eye-on-your-deploys-with-the-help-of-deploy-tracking-2/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Overview Nowadays, constant and fast deployment has become essential for your applications to keep up with the ever-changing needs of your customers. Elevate your Rollbar projects with Deploy tracking, and notify Rollbar about each one of your deployments to: See new errors for each deployment, Highlight the deployment that is suspected to have caused each error, Auto-resolve errors that were fixed in each deployment, Enable GitHub to notify Rollbar about errors. Watch our short video! Track your deploys for more details Every project that is connected to a web app should use deploys! Reporting a new deploy to Rollbar can allow us to display all the code revisions between each release of the application. The Deploys screen provides a detailed view of all your deployments that were made to a particular environment. The entry for each deploy displays a wide range of information to help you with the debugging process, including: Start & finish time Deploy status Deploying user (if known) Target environment Code version (typically a Git SHA or a version number) Deploy comments List of commits included (if you've connected Rollbar to a git repository) The Deploys screen offers visibility over your successful commits and your undeployed commits too. Undeployed commits are the ones that were added to the master branch but have not yet been deployed. These commits will be highlighted at the top of the Deploys screen. This will provide more visibility for developers who have missed the commits while deploying to act quickly upon them.... --- ### Jenkins - Published: 2020-09-22 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/jenkins/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Tracking deployments in Jenkins will allow you to see new errors for each deployment, determine the deployment that is suspected to have caused each error, and automatically resolve errors that were fixed in each deployment. You can read more examples in our blog Continuous Delivery with Jenkins and Rollbar. To configure Jenkins, use the curl command to notify Rollbar of the deployment: curl https://api. rollbar. com/api/1/deploy/ -F access_token=access_token -F environment=development -F revision=${GIT_COMMIT} -F rollbar_username=rollbar_username -F local_username=jenkins_user -F comment='any comments' Place this command in your deploy script so that it runs once the deploy has completed successfully. If successful, Rollbar's API will give a JSON response like this: { "data": {} } Replace each of the example values according to the parameter reference below. If using a version control system other than Git, change the revision= line as appropriate to set the revision ID. Parameter Reference access_token - Your project access token (required). environment - Name of the environment being deployed, e. g. production (required). revision - Revision number/sha being deployed. If using git, use the full sha (required). local_username - User who deployed (optional). rollbar_username - Rollbar username of the user who deployed (optional). comment - Deploy comment (e. g. what is being deployed) (optional). --- ### Transfer Projects Between Accounts > How to transfer Rollbar projects to another Rollbar Account. Includes Heroku and GitHub project transfers steps. - Published: 2020-09-22 - Modified: 2023-06-16 - URL: https://rollbar.com/knowledge-base/transfer-projects-between-accounts/ - KB Tags: Knowledge Base - KB Categories: Managing Your Rollbar Account Transfer Projects Between Rollbar Accounts Rollbar projects can be moved between accounts by anyone who is a member of the Owners team in both accounts. To transfer a project to a different account Go to Project Settings --> Advanced / Transfer Accounts Select the destination account, then confirm your Rollbar username and password and submit the request. What to do before transferring projects: Add your teams into the new account Add the users you want into the new account Select the correct plan (Essenstials or Advanced) and setup payment options. What will be transferred: *Notification rules will transfer only if it’s the same user token Source control JIRA Github issues Environments settings Project access tokens Slack + its rules (need to allow the new account under Connected Accounts) Service links History and comments What will not be transferred: Existing users and existing teams (additional people on the Owners excluding myself were removed) Need to add the right teams to projects If a user was assigned to an item it turns back to unassigned (see history below) Items to review after transfer: Once you have transferred the project, you should confirm the configuration of the project in the new account, including: Team assignments Notification rules We will attempt to transfer as many settings as possible to the new account, but some may not move depending on which users have access to the new account. Transferring from Heroku / GitHub to a Direct Rollbar Account Rollbar accounts can be created via partners... --- ### Personal vs. Organization Accounts - Published: 2020-09-22 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/personal-vs-organization-accounts/ - KB Tags: Knowledge Base - KB Categories: Managing Your Rollbar Account When you sign up for Rollbar, two separate but related things are created in our system: A user, which has a username, primary email address, and password. An account, which can contain projects representing your apps/services. If you sign up with the username johndoe , then we will also create an account accessible via https://rollbar. com/johndoe . Personal vs. Organizational Accounts All new accounts are created as personal accounts, which are meant to be used by a single person for their personal projects. If you are creating an account for your organization, then you can change the account into an organization account by going to Account Settings → General → Convert to Organization. The only difference between an organization account and a personal account is that organization accounts can be renamed. The name of a personal account is based on the user, so if user johndoe is renamed to johnfoo , then their personal account would change from https://rollbar. com/johndoe to https://rollbar. com/johnfoo . --- ### Billing in Rollbar - Published: 2020-09-22 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/billing-in-rollbar/ - KB Tags: Billing - KB Categories: Billing and Event Quotas For both monthly and annual plans, your account will have a billing cycle that starts on the day of the month when you originally signed up for the plan. The billing cycle is used to calculate your monthly usage. If you sign up after the 28th then your billing cycle date will vary depending on the length of the month. If you exceed your monthly event limit, you can pay per event over the limit. If your on-demand charge is sufficiently high that it would be more economical to upgrade to the next plan, then we'll do it for you automatically and you won't be charged for the overages. Once your account has been automatically upgraded, it will remain at the new plan level for future billing cycles. You can change your plan at any time by going to Account Settings –> Choose Plan. If you choose a lower plan level, the change will take effect at the start of your next monthly billing cycle. You may also upgrade your subscription manually at any time by going to Account Settings –> Choose Plan. If you are on a strict budget and don't mind missing some errors, then you can choose to disable on-demand events at Account Settings –> Billing Info. If on-demand is disabled and you reach your plan limit, we will not process new errors until your next billing cycle begins. On-demand event charges are calculated at the end of your billing cycle, and are included in the next... --- ### Bash - Published: 2020-09-22 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/bash/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Use Curl to send an HTTP POST: ACCESS_TOKEN=POST_SERVER_ITEM_ACCESS_TOKEN ENVIRONMENT=production LOCAL_USERNAME=whoami REVISION=git rev-parse --verify HEAD curl https://api. rollbar. com/api/1/deploy/ -F access_token=$ACCESS_TOKEN -F environment=$ENVIRONMENT -F revision=$REVISION -F local_username=$LOCAL_USERNAME Place this command in your deploy script so that it runs once the deploy has completed successfully. If the POST is successful, you will receive a JSON response like: {"data": {}} If using a version control system other than Git, change the revision= line as appropriate to set the revision ID. Parameter Reference ● access_token - Your project access token (required). ● environment - Name of the environment being deployed, e. g. "production" (required). ● revision - Revision number/sha being deployed. If using git, use the full sha (required). ● local_username - User who deployed (optional). ● rollbar_username - Rollbar username of the user who deployed (optional). ● comment - Deploy comment (e. g. what is being deployed) (optional). --- ### Enable GitHub Organization Access for Rollbar - Published: 2020-09-22 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/enable-github-organization-access-for-rollbar/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Sometimes the GitHub repo you want isn't showing up in the dropdown in our UI. If typing the repo name in and saving the settings doesn't work, it may be because you haven't granted permission to the Rollbar application on Github. Go to your personal settings on GitHub, then go to Applications and navigate to the Authorized OAuth Apps. There you should see Rollbar, click on the link and you should be able to grant permission to the organization. --- ### Filtering Javascript errors by language - Published: 2020-09-22 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/filtering-javascript-errors-by-language/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices If your application has an international user base, you may be receiving Javascript error reports in the local language of your users' browsers. While Rollbar can't translate error messages into your preferred language, it is possible to group errors by language so that you have fewer items to manage. Here are a few custom grouping recipes to match errors based on browser language: One supported language The following rule groups errors where client. language. javascript does not contain en-: { "condition": { "path": "client. javascript. language","ncontains": "en-" }, "fingerprint": "non-en error", "title": "non-english error" } Multiple supported languages The following rule groups errors where client. language. javascript does not contain en-,fr-,de-, or es-: { "condition":{ "all": }, "fingerprint": "non-supported language error", "title": "non-supported language error" } --- ### Hiding Third-Party Code - Published: 2020-09-22 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/hiding-third-party-code/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices When using libraries or frameworks you will often have large portions of well-tested third party code that is unlikely to have caused an error for you. In order to keep the focus on your code Rollbar will collapse stack frames from third party code. Single Root To set this up all you have to do is configure your SDK to send the server. root, or the prefix URL for all in-house stack frame filenames. Any code from outside the server. root directory will be collapsed by default when you load that item in the Rollbar UI. For example, in a hypothetical stack trace with lines from the following files: ● /home/deploy/www/app/model. py ● /home/deploy/www/app/controller. py ● /home/deploy/www/vendor/webfmwk/eventloop. py ● /home/deploy/www/vendor/webfmwk/startup. py ● /home/deploy/www/app/main. py and with server. root set to /home/deploy/www/app, the lines from the vendor directory would be collapsed together, to allow you to focus on your code, and not the unlikely possibility that webfmk has a bug. Extra Roots Sometimes you'll have split your code into multiple sibling modules adjacent to folders you do not want included as project code (vendor, models, controllers, for instance). In these cases you can send additional application roots in the project_package_paths key. These paths should look identical to the server root (the beginning of a URL), and the key should be in an array containing any additional folders to be considered "in-project". --- ### Disable Two Factor Authentication - Published: 2020-09-22 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/disable-two-factor-authentication/ - KB Tags: Security - KB Categories: Security If you no longer have access to your 2FA device and do not have your recovery codes, Rollbar cannot disable 2FA on your user account unless you are on a paid account (see below). There are a couple of possible solutions that can allow you to regain access to your account. If there is another user in your account that is a member of the Owners team, they can disable 2FA for you via the Account Settings --> Members screen. If you are the only Owner in your account, and your 2FA device was a smart phone (e. g. iPhone, Android), then you can restore a backup of your device that has your authentication app properly configured. Note: If you are a paying customer, we can make two small charges (less than $1 US) to your credit card. If you can tell us the amount of those charges, then we will disable 2FA and immediately reverse the charges. --- ### Preventing Client-Side Access Token Abuse - Published: 2020-09-22 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/preventing-client-side-access-token-abuse/ - KB Tags: Security - KB Categories: Security Unfortunately there is no silver bullet here -- all analytics services have this problem too (Google Analytics, Mixpanel, etc. ). Our best practices for mitigating this problem: Access tokens Use a separate client-side token with post_client_item scope only. (This is the default post_client_item token. ) The client-side access token can only be used to send events and only from client-side platforms. It can't be used to read any data, and it can't be used to spoof server-side events. Tokens can be disabled and replaced at any time. If someone is abusing your token, you can disable it and use a new one instead. IP Blocklist We also provide an IP Blocklist so that you can blocklist specific malicious IPs. You can find the source IPs in the Rollbar interface, and then add those IP(s) to the blocklist. (Project -> Settings -> IP Blocklist) --- ### Source Map Troubleshooting - Published: 2020-09-22 - Modified: 2021-06-14 - URL: https://rollbar.com/knowledge-base/source-map-troubleshooting/ - KB Tags: Troubleshooting - KB Categories: Troubleshooting Rollbar applies source maps to exceptions from minified Javascript so you can view the original line and character numbers for debugging. For full details on source maps in Rollbar, check out our Source Maps guide. Do your source maps work locally? Source maps were originally developed to support local debugging of minified Javascript. If you are not able to debug your minified Javascript code via your browser, then it will probably not work in Rollbar either. For instructions on using source maps for local debugging, see this article in Google's Tools for Web Developers. Are your source maps being successfully uploaded/downloaded? Rollbar provides a detailed view of known source maps for each project. You can view it by going to Settings -> Symbol Mapping -> Source Maps in your Rollbar project. This screen shows all attempt to access source maps, both successful and unsuccessful. It includes a search feature that can be used to look for source maps for specific Javascript files. Are your source maps valid? Sometimes source maps can be generated with no content in them, or in an invalid format, e. g. base64. Check the source maps that are being uploaded to make sure they are in a human-readable format. We also have this helpful tool to help check if your source map produces the correct mapping for the line numbers and column numbers from the exception. Are source maps enabled by default for older projects? If your project was created prior to May 16, 2017, then... --- ### Improve your Error Grouping with the help of Rollbar - Published: 2020-09-22 - Modified: 2021-06-14 - URL: https://rollbar.com/knowledge-base/improve-your-error-grouping-with-the-help-of-rollbar/ - KB Tags: Strategies - KB Categories: Working with Rollbar Items Overview Congratulations on setting up your Rollbar projects! You took a step towards more visibility and an easier flow when it comes to debugging. Now, you might as well learn how the incoming errors are examined and grouped together by Rollbar. Let’s see how it happens and what else do we have to offer! With the help of Rollbar’s default grouping algorithm, you will: Keep your items list transparent and organized, Reduce the noise in your notifications, Understand and respond to your errors better. Learn how Rollbar groups your items by default Error grouping means that when you release a code to production, and it crashes hundreds of times, our system groups all of those crashes together in one error item and sends you one notification, instead of notifying you every time, resulting in 100 notifications in your inbox. The 1 item in your items list will include all the details of all the occurrences of your error. The Rollbar grouping algorithm is smart and is being improved constantly, so we can serve our customers. Rollbar tries to group occurrences together with the same root cause in one item so that you: Have visibility over all the occurrences of one error item, which makes you Understand your errors a lot easier, and Speed up the bugfixing process. The occurrence fingerprints are resilient to deploys and code changes, so you can track the history of your occurrences through multiple deploys and code versions. Take your Grouping to the next level It... --- ### Manual merging vs. Custom fingerprints - Published: 2020-09-22 - Modified: 2021-06-14 - URL: https://rollbar.com/knowledge-base/manual-merging-vs-custom-fingerprints/ - KB Tags: Tool Integrations - KB Categories: Working with Rollbar Items Overview Rollbar has a pretty sufficient default grouping algorithm, that automatically analyzes the stack traces of the incoming occurrences and groups them if there is a common pattern. This helps to reduce the noise of incoming occurrences by a great deal! But what happens, if you want to organize your Items list differently? In this article, we will walk you through all the benefits of: Merging items manually, instantly, when you think 2 or more items should go together, Create custom fingerprints for future occurrences and tailor grouping to your own needs. Merge your items instantly You can manually merge items together, thus combining items into one new group for easier management. In this case, all past and future occurrences of those items will be combined automatically, and you will have one unified view on the Item details page of all the occurrences of the error. Manually merging your items comes handy, when the grouping algorithm separates items that you think should rather go together. You can then group them instantly with the merging option. It is also useful when you want to group items together, that do not require their own custom fingerprint. If you want to remove items from a group, because they were mistakenly grouped together or you decided to organize the occurrences separately, you have the chance to un-merge them and from then on they will be handled as separate items. Create custom fingerprints When you manually merge items together, Rollbar will analyze the items and... --- ### Streamline your items workflow - Published: 2020-09-22 - Modified: 2021-06-14 - URL: https://rollbar.com/knowledge-base/streamline-your-items-workflow-2/ - KB Tags: Tool Integrations - KB Categories: Working with Rollbar Items Overview Chances are you have multiple incoming occurrences in your Rollbar projects, grouped into items, appearing in your Item list, one after another. You also start to receive notifications pouring in your inbox. Now, you might as well keep your incoming items organized and clean by Rollbar’s useful options of: Setting up statuses for your items, that determine how they appear and behave, Triaging and rating them based on their severity level. This way you can make sure your item list is transparent, you will not be spammed by irrelevant notifications, provide clear visibility for your teams who manage the same project by appropriately triaging your errors and setting up the relevant severity level and status, to speed up the process of debugging, making sure everyone focuses their attention on the relevant things! Item statuses At Rollbar, we offer the chance to assign 3 statuses for your items: Active, Resolved, Muted. Active items All items start as active. Active means that the error is present and on-going and it requires your attention. It could represent a bug that has not yet been fixed or an intermittent ongoing backend issue. Active items Appear on the Dashboard Trigger notifications on their first occurrence and when thresholds are crossed (according to your notification rules) Count for billing purposes Can be changed to Resolved and Muted Resolved items When you believe your item is fixed or if you want to be notified if the bug re-appears you can mark it as Resolved. If possible... --- ### Auto-upgrading in Rollbar - Published: 2020-09-21 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/auto-upgrading-in-rollbar/ - KB Tags: Billing - KB Categories: Billing and Event Quotas If you have a paid subscription to Rollbar, then you can choose to automatically upgrade your account whenever you reach your monthly event limit. Automatic upgrades are enabled by default, and can be turned on/off by going to Account Settings --> Billing Info. If automatic upgrades are enabled, you will receive several warning emails before your plan is upgraded. We send you emails when your account has reached 70%, 90%, and 100% of your monthly quota, and we'll also notify you if your account was automatically upgraded. If automatic upgrades are disabled and your account reaches its monthly event limit, then your account will not receive any more data until your next monthly cycle begins. We send out notifications throughout the month to notify you if you are likely to hit your event limit, so you have the opportunity to choose to auto-upgrade or to limit the number of events sent to Rollbar. Click here for more information about billing in Rollbar --- ### GDPR & Rollbar - Published: 2020-09-20 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/gdpr-rollbar/ - KB Tags: Knowledge Base - KB Categories: Security Rollbar is compliant with GDPR and can serve as a data processor for customers who control data from individuals in the EU. We provide the following measures to enable our customers to maintain GDPR compliance: Data Processing Agreement Rollbar provides a data processing agreement (DPA) which can be viewed and accepted by going to Account Settings -> Security -> Data Processing Agreement. Data Retention To ensure that you retain your customer's identifiable data no longer than necessary, we've added the option in paid Rollbar accounts to customize your data retention period between 7-180 days. You can update this by going to Account Settings -> Security -> Data Retention. Right to be Forgotten We've added an API for deleting person tracking data. See our API docs for details. Data Subprocessor Explanation If you are required to list Rollbar as a data subprocessor, the following information can be provided: Purpose: Exception reporting Location: USA Questions? Don't hesitate to contact us via privacy@rollbar. com. --- ### Could not compare commits between SHAs ... - Published: 2020-09-17 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/could-not-compare-commits-between-shas/ - KB Tags: Tool Integrations - KB Categories: Troubleshooting Occasionally when using Rollbar's Deploy Tracking feature, you may see a message such as the following: Could not compare commits between SHAs abcdef... . and 123456... . This usually means that one of the SHAs is either invalid or has not been pushed to Github. A common cause of this problem is that your Github OAuth token has expired. Here are steps to see if this is the source of the problem: In Rollbar: In the Rollbar project where you encountered the issue, go to Settings → Source Control . Copy the Repository , Default Branch , and Project Root settings for later use. Click Disconnect where it says Connected to Github as {github-username} . In GitHub: Go to Settings → Applications → Authorized OAuth Apps, find Rollbar, click Revoke, and then confirm that you want to revoke access. In Rollbar: In the Rollbar project where you encountered the issue, go to Settings → Source Control, select Github as the source control provider, then click Connect to Github, and then complete the authorization process. Reconfigure Repository , Default Branch , and Project Root . Check your deploys page. If the SHAs specified in the deploys are valid, then you should no longer see the message. --- ### Get more insights and control over your errors - Published: 2020-09-17 - Modified: 2021-06-14 - URL: https://rollbar.com/knowledge-base/get-more-insights-and-control-over-your-errors/ - KB Tags: Tool Integrations - KB Categories: Core Features and Best Practices Overview In this article, we will walk you through all the perks of integrating GitHub source control with your Rollbar projects. Once you have source control integration set up and a Git repository is connected to your Rollbar projects, you will have more visibility on: where the error was most recently activated, the context of the code line where the bug occurred, and who the last person was to work on the affected code section, thus being able to assign it to the right person to work on it and resolve it faster. Additionally, you won’t even have to leave your Rollbar project. Sounds tempting, right? Let's get to it! Don't have time to read? Watch our short video on GitHub source control integration. Gain more visibility all in one place When a Rollbar project is connected to a Git repo, stack traces will include links to each file in the code version where the error was most recently activated. Another advantage is that the list of commits included in each deploy will include URLs so you can view the difference for each commit as well as the entire deployed code version, thus spotting where the error occurred and fixing it with ease. You will also have the chance to view un-deployed commits. Any commit that has been merged to your master branch but not yet deployed will be highlighted at the top of the Deploys screen. This will provide more visibility for developers who have missed the commits while... --- ### "There was a problem trying to connect to your Asana account." message appears - Published: 2020-09-17 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/there-was-a-problem-trying-to-connect-to-your-asana-account-message-appears/ - KB Tags: Tool Integrations - KB Categories: Troubleshooting This warning message typically appears because the Rollbar app is having problems accessing the Asana API due to an outage or a timeout. This happens intermittently and is a known issue in the Asana API. Asana's platform team are working to improve performance and stability of the API to reduce future occurrences. If you encounter this error, please wait a couple of minutes and try to repeat your action again. If the error persists, please notify Asana via https://asana. com/support as well as Rollbar via support@rollbar. com or the in-app chat. --- ## Press ### SafetyDetectives - Interview with Brian Rue - CEO and Co-founder at Rollbar - Published: 2024-01-22 - Modified: 2024-01-22 - URL: https://rollbar.com/press/safetydetectives-interview-with-brian-rue-ceo-and-co-founder-at-rollbar/ Inter --- ### Rollbar Research Shows Developers Feel Most Productive When Creating Better Quality Code - Published: 2022-07-12 - Modified: 2022-09-28 - URL: https://rollbar.com/press/rollbar-research-shows-developers-feel-most-productive-when-creating-better-quality-code/ SAN FRANCISCO--(BUSINESS WIRE)--New research from Rollbar, provider of real-time error monitoring Software as a Service, indicates that nearly a third (32%) of CTOs, developers, engineers and technical leads feel the most productive when they are creating better quality code – and not just more code. Nearly as many (28%) said that meeting and exceeding their managers’ expectations is what makes them feel the most productive, while more than a quarter (26%) said that productivity means delivering more new product features and services. Meanwhile, just 13% said that they equate productivity with the quantity of code they create. This research is based on a national survey of more than 1,000 CTOs, developers, engineers and technical leads across sectors done on behalf of Rollbar by Propeller Insights in 2022. “Coding is hard, tedious work, and it’s easy for developers to become tired of it, especially amid the uncertainties created by COVID-19 and the changing global business landscape,” said Brian Rue, CEO and co-founder at Rollbar. “But, as our research highlights, developers care deeply about code quality and meeting business objectives, and they equate their productivity to these considerations and to improving product. And 76% of survey participants said that better tools could increase their productivity. So, managers and companies must keep developers engaged with new and challenging tasks, support them with new tools to code better and faster, and create environments that nurture creativity and acknowledge that burnout is real. ” Most organizations are already working on making all of that happen.... --- ### Rollbar Secures $11 Million Series B To Help Engineering Teams Release More Often - Published: 2020-03-03 - Modified: 2021-06-11 - URL: https://rollbar.com/press/rollbar-secures-11-million-series-b-to-help-engineering-teams-release-more-often/ SAN FRANCISCO, CA - March 4, 2020 -- Rollbar, provider of real-time error monitoring Software as a Service, today announces $11 million in Series B funding. The round was led by Runa Capital, an international VC firm headquartered in Silicon Valley that backs early-stage startups in deep tech and cloud business software. Long Light Capital and Blossom Street Ventures also participated in this round, along with existing investors Cota Capital, Bain Capital, and Patagonia Capital. Dmitry Galperin from Runa Capital will take a board seat. As every business becomes a software business, real advantages come from being able to iterate quickly and release continuously. And for that, automated release is not enough anymore, you also need automated response. Automated response includes being able to see, understand, and resolve problems in real-time across the entire software development lifecycle. And that's exactly what Rollbar is building. Rollbar provides an automated error response platform centered around its proprietary, customizable grouping engine. Its solution offers workflow capabilities and integrates seamlessly into the modern development stack. "Traditional monitoring doesn't give developers what they need to understand and respond to massive amounts of machine data. Developers need a better way to see where they're going. We're already working with more than 100,000 developers at over 4,000 customers, such as Twilio, Branch, Salesforce and Instacart to help them iterate faster and with more confidence. We're pleased with the support from Runa Capital as we scale our company," said Brian Rue, CEO and Co-Founder of Rollbar. Rollbar plans... --- ### New UX From Rollbar Takes The Hassle Out Of Monitoring And Debugging Errors In Microservices - Published: 2019-12-15 - Modified: 2021-06-11 - URL: https://rollbar.com/press/new-ux-from-rollbar-takes-the-hassle-out-of-monitoring-and-debugging-errors-in-microservices/ Centralized Realtime View of Errors Helps Companies Deliver Better Customer Experiences SAN FRANCISCO – December 16, 2019 - Rollbar, provider of real-time error monitoring Software as a Service, announced today a new UX and interface that fully supports microservices and provides users with a much richer experience. As complex distributed architecture becomes the norm, Rollbar is working diligently to ensure its core user experience reflects this paradigm shift by adopting powerful multi-project views across the entire user workflow. Rollbar’s new UX allows users to monitor all microservices with one tool in one view and receive real-time alerts on errors across multiple services with its multi-project filter. Developers know exactly where the error occurred, how many times, and why. They can also track deploy version quality across one or every microservice in a single glance. And users can set up their own personal workspace for services or projects they are working on with powerful filters for projects, environments, frameworks, and error severity that persist across different views. “When Rollbar was first introduced, practices such as microservice architecture and continuous delivery weren’t as common,” said Cory Virok, co-founder and CTO of Rollbar. “But most enterprises have or are in the process of migrating to a microservices model, which was the primary driving force behind our new UX. ” With the new UX, Rollbar users can have their own personal workspace for services or projects they care about. Whether looking at the main dashboard, the Items view, or Versions, users only see what... --- ### Rollbar Announces First Error Monitoring Solution For Salesforce Apex Platform - Published: 2019-11-13 - Modified: 2021-06-11 - URL: https://rollbar.com/press/rollbar-announces-first-error-monitoring-solution-for-salesforce-apex-platform/ Four Million Salesforce Developers Can Now Find and Fix Errors in Apex Apps in Real-Time SAN FRANCISCO – November 13, 2019 -- Rollbar, provider of real-time error monitoring Software as a Service, announced today the first error monitoring solution for Salesforce’s Apex platform. Rollbar’s automatic error detection and analysis solution empowers Salesforce customers and partners using its Apex platform with customizable tools and filters that greatly reduce the time it takes to detect and fix errors in code. There are currently more than four million developers on the Salesforce platform and thousands of ISVs that have built apps on Apex. Apex is a strongly typed, object-oriented programming language that allows developers to execute flow and transaction control statements on Salesforce servers in conjunction with calls to the API. Using syntax that looks like Java and acts like database stored procedures, Apex enables developers to add business logic to most system events, including button clicks, related record updates and Visualforce pages. “The idea to develop a Rollbar solution for Apex was really driven by our customers, who are increasingly utilizing this robust platform to develop a wide variety of applications,” said Francesco Crippa, VP of engineering at Rollbar. “Salesforce developers can now monitor Apex applications they’ve created in real-time and see if anything is broken, where it’s broken, does it matter, and how to fix it, which saves time and human resources and gets applications to the market sooner. ” Whether developing apps internally to extend the functionality of Salesforce or... --- ### Rollbar to Offer Its Error-Monitoring Solution on Google Cloud Platform Marketplace - Published: 2019-04-08 - Modified: 2021-06-11 - URL: https://rollbar.com/press/rollbar-to-offer-its-error-monitoring-solution-on-google-cloud-platform-marketplace/ SAN FRANCISCO - April 9, 2019 -- Rollbar, provider of real-time error monitoring Software as a Service, announced today its partnership with Google Cloud and its availability on the Google Cloud Platform (GCP) Marketplace. Rollbar provides automatic error detection and analysis centered around its customizable grouping engine. GCP Marketplace lets users quickly deploy software that runs on Google Cloud Platform and allows customers to easily start up a familiar software package with Google Cloud services, with no manual configuration required. With debugging taking up to 50 percent of software development time, adding Rollbar’s error-monitoring solution to the GCP Marketplace means customers now have instant access to a cutting-edge solution that enables developers and DevOps teams to monitor errors in real-time as new software is built and deployed, notify the right team of an error, and have rich contextual data for debugging the error faster across the development lifecycle. With Rollbar, engineering teams can detect application errors and resolve them quickly - greatly reducing time and human resources spent on traditional debugging. “Availability on the GCP Marketplace empowers development teams to take advantage of Rollbar’s real-time error monitoring solution - enabling them to release their software with confidence by providing visibility into the quality of code throughout their development lifecycle,” said Brian Rue, CEO of Rollbar. GCP Marketplace supports ready-to-go technology stacks to accelerate development. Deploying Rollbar into any GCP environment is fast and easy, and billing is simplified because Rollbar shows up as a line item in the monthly GCP... --- ### Rollbar Acquires Hungary-Based Samebug - Published: 2019-02-24 - Modified: 2022-07-20 - URL: https://rollbar.com/press/rollbar-acquires-hungary-based-samebug/ SAN FRANCISCO and BUDAPEST, February 25, 2019 -- Rollbar, provider of real-time error monitoring Software as a Service, announced today it has acquired Hungary-based Samebug, in a strategic move that further deepens its domain expertise in grouping and allows for integration of proprietary Samebug technology into its error monitoring solution. It also allows Rollbar to quickly grow its engineering team and have greater access to European customers. A study, published in InfoQ, shows debugging takes up to 50 percent of the development cycle, and that it’s twice as hard as writing code in the first place. Rollbar enables developers and DevOps teams to monitor errors in real-time as new software is built and deployed, notify the right team of an error, and provide rich contextual data for debugging the error faster across the development lifecycle. With Rollbar, engineering teams can detect application errors and resolve them quickly - greatly reducing time and human resources spent on traditional debugging, which can better be used elsewhere. Samebug was founded by CEO, Renáta Tamási-Irsai, a recognized entrepreneur and innovator who was the second-place winner at the prestigious CEE Women Startup Competition, along with CTO Árpád Tamási and lead developer Dániel Poroszkai. “We are very excited to be part of the Rollbar family and ready to tackle the challenges associated with this fast-growing market,” said Renáta. “Our goal is to change how developers, in any industry, code and debug, providing solutions to software problems (crashes) automatically whenever it’s needed, in a form it’s needed.... --- ### A Rollbar felvásárolja a Samebugot - Published: 2019-02-24 - Modified: 2021-06-11 - URL: https://rollbar.com/press/rollbar-acquires-hungary-based-samebug-hu/ San Francisco & BUDAPEST, 25 február 2019 -- A szoftverhibák valós idejű monitorozását végző szoftvercég, a Rollbar felvásárolja a magyarországi székhelyű Samebugot. A stratégiai lépés célja a szoftverfejlesztés során felmerülő hibák csoportosításában szerzett eddig tudás mélyítése, valamint a Samebug technológiájának integrálása a jelenlegi szolgáltatásba. Egyben remek lehetőség ez arra is, hogy a Rollbar gyorsan növelje fejlesztői létszámát és könnyebben elérjék az európai ügyfeleiket. Egy InfoQ-ban megjelent tanulmány szerint a fejlesztők idejének nagyjából ötven százaléka telik hibakereséssel, vagyis debugginggal és javítással, ráadásul hibákat keresni kétszer olyan nehéz, mint kódot írni. A Rollbar megoldásával a fejlesztőcsapatok valós időben, a szoftverek megírásával egyidőben követhetik nyomon a hibákat és azonnal értesíthetik a megfelelő csapatot, hogy azok javítsák a problémát. Ezzel kellő mennyiségű adatot szolgáltatnak és maga a hibakeresés folyamata is felgyorsul - az így felszabaduló erőforrást új célok elérésére tudják használni. A Samebugot hárman alapították, Tamási-Irsai Renáta cégvezető, Tamási Árpád technológiai vezető és Poroszkai Dániel vezető fejlesztő. "Büszkék vagyunk arra, hogy a kaliforniai Rollbar csapat tagjaivá válunk és együtt nézünk szembe a gyorsan növekvő piac kihívásaival", mondta Tamási-Irsai Renáta. "Célunk, hogy megváltoztassuk ahogyan a fejlesztők kódolnak és hibákat javítanak azzal, hogy automatikus megoldásokat nyújtunk a szoftveres problémákra olyan formában és ott, ahol azokra szükség van. ” "Ez a felvásárlás megszilárdítja a Rollbar vezető pozícióját az ágazatban", ezt Salil Deshpande, a Palo Alto-i Bain Capital Ventures igazgatója mondta, cége hatmillió dollárt fektetett a Rollbarba. "A valós idejű hibakeresés gyorsan válik minden fejlesztő eszköztárának meghatározó részévé, a Samebug technológiájának és szakértelmének integrációjával a Rollbar elsődleges választása... --- ### Series A Funding - Published: 2017-10-22 - Modified: 2021-06-11 - URL: https://rollbar.com/press/series-a-funding/ --- ## Testimonials ### Anonymous ThredUP (Results) - Published: 2021-10-18 - Modified: 2021-10-18 - URL: https://rollbar.com/?testimonial=anonymous-thredup-results --- ### Anonymous ThredUP (Strategy #2) - Published: 2021-10-18 - Modified: 2021-10-18 - URL: https://rollbar.com/?testimonial=anonymous-thredup-strategy-2 --- ### Anonymous ThredUP (Strategy #1) - Published: 2021-10-18 - Modified: 2021-10-18 - URL: https://rollbar.com/?testimonial=anonymous-thredup-strategy-1 --- ### Persona: Platform/Ops > Unlike infrastructure monitoring tools which take a certain numbers of failures before reporting errors, Rollbar has no threshold and reports them instantly. - Published: 2021-05-05 - Modified: 2023-03-24 - URL: https://rollbar.com/solutions/platform-ops/ --- ### Plexus (Goal) - Published: 2021-09-17 - Modified: 2021-09-21 - URL: https://rollbar.com/?testimonial=plexus-goal --- ### Persona: QA/Testing > Get all the information you need to know which tests to prioritize fixing. Directly create an issue to developers and reduce the back-and-forth between teams. - Published: 2021-05-05 - Modified: 2023-03-24 - URL: https://rollbar.com/solutions/qa-testing/ --- ### Plexus (Strategy) - Published: 2021-09-17 - Modified: 2021-09-21 - URL: https://rollbar.com/?testimonial=plexus-strategy --- ### Persona: Eng Management > Rollbar provides automation-grade grouping, intelligent real-time alerts, and automated workflows so that fixing bugs take minutes instead of days. - Published: 2021-05-05 - Modified: 2023-03-24 - URL: https://rollbar.com/solutions/engineering-management/ --- ### Plexus (Results) - Published: 2021-09-17 - Modified: 2021-09-21 - URL: https://rollbar.com/?testimonial=plexus-results --- ### W. Habib - Everplans (light) As an agile - Published: 2021-07-28 - Modified: 2021-07-28 - URL: https://rollbar.com/?testimonial=w-habib-everplans-light-as-an-agile --- ### Persona: Software Development > Prioritize development and let us do the heavy lifting. We'll provide all the info regarding which errors are affecting customers, what IPs are affected, and more. - Published: 2021-05-05 - Modified: 2023-03-24 - URL: https://rollbar.com/solutions/software-development/ --- ### A. Childs - Clubhouse (dark) Rollbar lets us - Published: 2021-07-28 - Modified: 2021-07-28 - URL: https://rollbar.com/?testimonial=a-childs-clubhouse-light-rollbar-lets-us --- ### Fintech (dark) The more you - Published: 2021-07-28 - Modified: 2021-07-28 - URL: https://rollbar.com/?testimonial=fintech-dark-the-more-you --- ### Enterprise > Adopt Rollbar for your enterprise to boost developer productivity, deliver value to users faster, maintain app quality, and resolve customer tickets quickly. - Published: 2021-05-03 - Modified: 2024-01-12 - URL: https://rollbar.com/enterprise/ --- ### J. Bazemore - Greenhouse (light) When you move - Published: 2021-07-28 - Modified: 2021-07-28 - URL: https://rollbar.com/?testimonial=j-bazemore --- ### Press - Published: 2021-04-29 - Modified: 2021-06-11 - URL: https://rollbar.com/press/ --- ### R. Zuber - CircleCI (light) If you don't - Published: 2021-07-28 - Modified: 2021-07-28 - URL: https://rollbar.com/?testimonial=r-zuber-circleci-light-if-you-dont --- ### Events > Stay in tune with the latest developments in the software industry by hearing from industry experts and Rollbar customers on our webinars, podcasts, workshops, and shows. - Published: 2021-04-29 - Modified: 2023-02-09 - URL: https://rollbar.com/events/ --- ### D. Rohov - CVENT (light) Rollbar has been - Published: 2021-07-28 - Modified: 2021-07-28 - URL: https://rollbar.com/?testimonial=d-rohov-cvent-light-rollbar-has-been --- ### Newsroom > Follow and stay up to date with the latest mentions and coverage of Rollbar, from press releases to news articles, and download our press kit. - Published: 2021-04-29 - Modified: 2021-06-17 - URL: https://rollbar.com/news/ --- ### D Rohov - CVENT (light) You could have - Published: 2021-07-28 - Modified: 2021-07-28 - URL: https://rollbar.com/?testimonial=d-rohov-cvent-light-you-could-have --- ### D. Rohov - CVENT (light) The out of the - Published: 2021-07-28 - Modified: 2021-07-28 - URL: https://rollbar.com/?testimonial=d-rohov-cvent-light-the-out-of-the --- ### H. Villafuerte – Duolingo – light – I really can't imagine... - Published: 2021-07-28 - Modified: 2021-07-28 - URL: https://rollbar.com/?testimonial=h-villafuerte-duolingo-light-i-really-cant-imagine --- ### Home > Rollbar provides real-time error tracking & debugging tools for developers. ✓ JavaScript ✓PHP ✓Ruby ✓Python ✓Java ✓Android ✓iOS ✓.NET & more. - Published: 2021-03-30 - Modified: 2024-04-10 - URL: https://rollbar.com/ --- ### Tyler Wells - Twilio (light) if a tool - Published: 2021-07-28 - Modified: 2021-07-28 - URL: https://rollbar.com/?testimonial=tyler-wells-twilio-light-if-a-tool --- ### Security - Published: 2021-02-17 - Modified: 2022-08-09 - URL: https://rollbar.com/security/ Who we are Our website address is: https://rollbar. wpengine. com. What personal data we collect and why we collect it Comments When visitors leave comments on the site we collect the data shown in the comments form, and also the visitor’s IP address and browser user agent string to help spam detection. An anonymized string created from your email address (also called a hash) may be provided to the Gravatar service to see if you are using it. The Gravatar service privacy policy is available here: https://automattic. com/privacy/. After approval of your comment, your profile picture is visible to the public in the context of your comment. Media If you upload images to the website, you should avoid uploading images with embedded location data (EXIF GPS) included. Visitors to the website can download and extract any location data from images on the website. Contact forms Cookies If you leave a comment on our site you may opt-in to saving your name, email address and website in cookies. These are for your convenience so that you do not have to fill in your details again when you leave another comment. These cookies will last for one year. If you visit our login page, we will set a temporary cookie to determine if your browser accepts cookies. This cookie contains no personal data and is discarded when you close your browser. When you log in, we will also set up several cookies to save your login information and your screen display choices.... --- ## Posts ### H. Villafuerte - Duolingo - light - Rollbar helps make... - Published: 2021-07-28 - Modified: 2021-07-28 - URL: https://rollbar.com/?testimonial=h-villafuerte-duolingo-light-rollbar-helps-make --- ### R. Zuber (circle - dark) - Published: 2021-06-02 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=r-zuber-circle-dark --- ### T. Wells (circle - dark) - Published: 2021-06-02 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=t-wells-circle-dark --- ### S. Hacker (circle - dark) - Published: 2021-06-02 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=s-hacker-circle --- ### Duolingo - Hacker (light) - Published: 2021-05-26 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=duolingo-hacker-light --- ### D. Rohov - CVENT (dark) - Published: 2021-05-26 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=d-rohov-cvent-dark --- ### R. Zuber - CircleCI (dark) - Published: 2021-05-26 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=r-zuber-circleci-dark --- ### T. Wells - Twilio (dark) - Published: 2021-05-26 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=t-wells-twilio-dark --- ### M. Blaze - Duolingo (dark) - Published: 2021-05-26 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=m-blaze-duolingo-dark --- ### C. Amadieh - Cvent (dark) - Published: 2021-05-26 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=c-amadieh-cvent-dark --- ### M. Blaze - Duolingo (light) - Published: 2021-05-13 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=m-blaze-duolingo --- ### C. Amadieh - Cvent (Light) Anytime you fix - Published: 2021-05-13 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=c-amadieh --- ### T. Wells - Twilio (light) - Published: 2021-05-13 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=t-wells-twilio --- ### R. Zuber - CircleCI (light) - Published: 2021-05-13 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=r-zuber-circleci --- ### D. Rohov - CVENT (light) - Published: 2021-05-12 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=d-rohov-cvent --- ### Duolingo - Hacker (dark) - Published: 2021-04-05 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=duolingo-hacker --- ## Employees ### Anler Hernandez Peral - Published: 2023-02-16 - Modified: 2023-02-16 - URL: https://rollbar.com/?employee=anler-hernandez-peral --- ### Cyrus Radfar - Published: 2022-06-30 - Modified: 2022-06-30 - URL: https://rollbar.com/?employee=cyrus-radfar --- ### Nick Hodges - Published: 2022-03-10 - Modified: 2022-06-30 - URL: https://rollbar.com/?employee=nick-hodges --- ### - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=1139 --- ### Juanjo Marrón - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=juanjo-marron --- ### Maggie Liu - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=maggie-liu --- ### Drew Meyers - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=drew-meyers --- ### Diego Veralli Bortheiry - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=diego-veralli-bortheiry --- ### Owen Linderholm - Published: 2021-05-05 - Modified: 2022-06-30 - URL: https://rollbar.com/?employee=owen-linderholm --- ### Rafael Moore Cid - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=rafael-moore-cid --- ### David Hackett - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=david-hackett --- ### How to Wrap and Unwrap Errors in Golang > In Golang, wrapping errors entails giving them more context and in order to see what context has been introduced they must be unwrapped. Learn more. - Published: 2022-10-31 - Modified: 2022-11-09 - URL: https://rollbar.com/blog/golang-wrap-and-unwrap-error/ - Categories: Code Tutorials, GoLang - Tags: golang In Golang, wrapping errors means adding more contextual information to the error which has been returned. For example, the additional information could be the type of error, the cause of the error, or the name of the function where the error is raised. Wrapping is very useful for debugging since you can precisely and quickly locate the source of the problem. Golang supports wrapping and unwrapping errors as part of the standard library errors by using the errors. Unwrap and fmt. Errorf functions with the %w verb. Syntax for wrapping an error in Golang First we need to create a new error using errors. New followed by fmt. Errorf with the %w verb to wrap the error. var criticalError = errors. New("Serious error") ... . . wrap = fmt. Errorf("... %w... ",criticalError,... ) The wrapped error can be unwrapped using the errors. Unwrap function. func Unwrap(err error) error Example 1: How to Wrap An Error In the below code, we have added a function validationswhich takes a number and runs validations based on some conditions by again calling the check function. Whenever an error is encountered, it will wrap the error using fmt. Errorf and the %w verb to show that “run error” has occurred. The new error is then returned. package main import ( "errors" "fmt" ) var ( errUhOh = errors. New("oh critical error! ! ") ) func check(num int) error { if num == 1 { return fmt. Errorf("it's odd") } else if num == 2 {... --- ### Christian Fitzgerald - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=christian-fitzgerald --- ### Jennifer Vannoy - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=jennifer-vannoy --- ### PHP's ErrorException Explained (with Example) > The PHP ErrorException class is meant to be thrown explicitly to catch and handle errors that would otherwise be ignored. Learn more about it here. - Published: 2022-10-26 - Modified: 2022-12-12 - URL: https://rollbar.com/blog/php-errorexception/ - Categories: Code Tutorials, PHP - Tags: PHP The PHP ErrorException class is meant to be thrown explicitly to catch and handle errors that would otherwise be ignored, such as Notices or Warnings. ErrorException Class Hierarchy The PHP Exception class implements the Throwable interface. The ErrorException class extends the Exception class. Throwable └── Exception └── ErrorException When to Use ErrorException The ErrorException class can be used when an exception needs to be thrown and handled like a regular object inherited from the Exception class. An example is when PHP issues a Warning. Depending on how the code is configured, warnings are ignored in PHP and execution continues as normal. In cases where a Warning indicates a failure that should redirect (or halt) script execution, the ErrorException class can be used. PHP ErrorException Example Here's an example of using the PHP ErrorException to produce an exception instead of a Warning: A file is attempted to be accessed using the file_get_contents function: When the above script is executed, a Warning is generated if the file could be found: Warning: file_get_contents(myfile. txt): failed to open stream: No such file or directory If throwing an exception is more desirable than a Warning for such a case, the ErrorException class can be used to do so. The above example can be modified to use an error handler function to throw an ErrorException: When the above script is executed, the errorHandler function throws an ErrorException instead of a Warning if the file is not found: Error: No such file or directory Here, the ErrorException... --- ### Justin Hochsprung - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=justin-hochsprung --- ### Krisztián Griz - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=krisztian-griz --- ### Nitin Bhasin - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=nitin-bhasin --- ### Announcing Rollbar Live In-App Chat Support - Published: 2022-10-18 - Modified: 2022-10-20 - URL: https://rollbar.com/blog/announcing-rollbar-live-in-app-chat-support/ - Categories: company, product What’s better than great support? Live in-app support with a real person when you need it During the last two months we have been rolling out our live chat capability for all Rollbar users regardless of the plan you are on. That's right; you can now speak to a real person from our customer engineering team to help answer your product related question from within the Rollbar application. Our goal is to provide more support channels when you need it without having to wait for an answer. Once you have logged on to your Rollbar. com account you will see a chat bubble at the bottom right of your screen. When you need support click to start a conversation. How to start a conversion: Click Chat bubble. Enter your details: Ensures we can follow up with you. Have a great conversation with a real person. Whether you’re new to Rollbar or a seasoned user, I hope that you’ll find this new channel valuable when you need it most. --- ### Maria Stanley - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=maria-stanley --- ### Daniel McCoy - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=daniel-mccoy --- ### Rollbar Editorial Team - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=rollbar-editorial-team --- ### How to Fix AttributeError in Python > The Python AttributeError is an exception that occurs when an attribute reference or assignment fails. Learn how to fix it. - Published: 2022-10-17 - Modified: 2022-10-17 - URL: https://rollbar.com/blog/python-attributeerror/ - Categories: Code Tutorials, Python - Tags: Python The Python AttributeError is an exception that occurs when an attribute reference or assignment fails. This can occur when an attempt is made to reference an attribute on a value that does not support the attribute. What Causes AttributeError The Python AttributeError is raised when an invalid attribute reference is made. This can happen if an attribute or function not associated with a data type is referenced on it. For example, if a method is called on an integer value, an AttributeError is raised. Python AttributeError Example Here’s an example of a Python AttributeError raised when trying call a method on an integer: i = 1 i. append(2) In the above example, a method is attempted to be called on an integer. Since integers in Python do not support any methods, running the above code raises a AttributeError: Traceback (most recent call last): File "test. py", line 2, in i. append(2) AttributeError: 'int' object has no attribute 'append' How to Fix AttributeError in Python To avoid the AttributeError in Python code, a check should be performed before referencing an attribute on an object to ensure that it exists. The Python help function can be used to find out all attributes and methods related to the object. To resolve the AttributeError, a try-except block can be used. The lines of code that can throw the AttributeError should be placed in the try block, and the except block can catch and handle the error. Using the above approach, the previous example can... --- ### Pawel Szczodruch - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=pawel-szczodruch --- ### Patrick Bonner - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=patrick-bonner --- ### Nico Kruger - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=nico-kruger --- ### The Ultimate Guide to Error Logging in Go > Logging can be a life-saver when it comes to fixing faults in your Go code. Learn how to log ✓ to the console ✓ to a file ✓ using a logging framework. - Published: 2022-10-02 - Modified: 2022-10-02 - URL: https://rollbar.com/blog/golang-error-logging-guide/ - Categories: Code Tutorials - Tags: golang Logging can be a life-saver when it comes to discovering bugs or faults in your Go (Golang) code. The three most popular ways to log errors in Golang are: Output the errors to the console Log the errors to a file Use a logging framework This article will walk you through how to log errors using each method, when and why you’d want to use each, along with examples. Basic Logging in Golang Golang comes with an in-built standard log package which provides basic error logging features. Though it doesn't provide any log levels like debug, warning, or error, it still has many features to get started with basic logging. Let’s look at an example to understand it better. package main import "log" func main { log. Println("We are logging in Golang! ") } When the above code is executed, the log package prints the output to the standard error (stderr) stream and automatically appends a timestamp to each log message. 2022/09/30 02:44:31 We are logging in Golang! Logging to a File in Golang Despite the fact that the log package's default output is to the stderr stream, it may be adjusted to write to any local file or to any other location that accepts the io. Writer interface. You must either create a new file or open an existing one and set it up as the log's output path in order to save log messages in a file. Example package main import ( "log" "os" ) func main {... --- ### Jack Delahunt - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=jack-delahunt --- ### Nia Hampton - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=nia-hampton --- ### Queen Lee - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=queen-lee --- ### Gaurav Anand - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=gaurav-anand --- ### How to Fix TypeError Exceptions in Python > The Python TypeError is an exception that occurs when the data type of an object in an operation is inappropriate. Learn how to fix it. - Published: 2022-10-01 - Modified: 2022-10-01 - URL: https://rollbar.com/blog/python-typeerror/ - Categories: Code Tutorials, Python - Tags: Python The Python TypeError is an exception that occurs when the data type of an object in an operation is inappropriate. This can happen when an operation is performed on an object of an incorrect type, or it is not supported for the object. For example, if a string is attempted to be multiplied with an integer, a TypeError is generated. What Causes TypeError Some of the most common causes for TypeError in Python are: Performing an operation between two incompatible data types e. g. adding a string and an integer. Passing an incorrect type to a built-in function e. g. passing a list to the built-in add function. Calling a non-callable object e. g. calling an integer. Incorrect list index type e. g. using a string as a list index value instead of an integer. Iterating on a non-iterative value e. g. trying to iterate on an integer. Python TypeError Example Here’s an example of a Python TypeError thrown when trying to add a string and an integer: my_integer = 1 my_string = "Hello World" my_result = my_integer + my_string In the above example, the string my_string is attempted to be added to an integer my_integer. Since addition cannot be performed between these two types, a TypeError is raised: File "test. py", line 3, in my_result = my_integer + my_string TypeError: unsupported operand type(s) for +: 'int' and 'str' How to Fix TypeError in Python To avoid type errors in Python, the type of an object should be checked before... --- ### Hayden Kempton - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=hayden-kempton --- ### Ian Flanagan - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=ian-flanagan --- ### How to Fix ImportError: Cannot Import Name in Python > The Python ImportError: cannot import name error occurs when an imported class is not accessible or is in a circular dependency. Learn how to fix it. - Published: 2022-09-24 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/python-importerror-cannot-import-name/ - Categories: Code Tutorials, Python - Tags: Python The Python ImportError: cannot import name error occurs when an imported class is not accessible or is in a circular dependency.   What Causes ImportError: Cannot Import Name This error generally occurs when a class cannot be imported due to one of the following reasons: The imported class is in a circular dependency. The imported class is unavailable or was not created. The imported class name is misspelled. The imported class from a module is misplaced. The imported class is unavailable in the Python library. Python ImportError: Cannot Import Name Example Here’s an example of a Python ImportError: cannot import name thrown due to a circular dependency. Two python modules test1. py and test2. py are created to achieve this: test1. py: from test2 import Class2 class Class1:     obj = Class2 test2. py: from test1 import Class1 class Class2:     obj = Class1 In the above example, the initialization of obj in test1 depends on test2, and obj in test2 depends on test1. This is a circular dependency since both files attempt to load each other. Therefore, running test1. py (or test2. py) causes an ImportError: cannot import name error: Traceback (most recent call last):   File "test1. py", line 1, in     from test2 import Class2   File "test2. py", line 1, in     from test1 import Class1   File "test1. py", line 1, in     from test2 import Class2 ImportError: cannot import name 'Class2' from partially initialized module 'test2' (most likely due to a circular import) (test2. py) How to Fix ImportError: Cannot Import Name... --- ### Israel Perez - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=israel-perez --- ### Matheas Hutcherson - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=matheas-hutcherson --- ### How to Handle the MemoryError in Python > A MemoryError is an error encountered in Python when there is no memory available for allocation. Learn two ways to solve this. - Published: 2022-09-05 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/python-memoryerror/ - Categories: Code Tutorials, Python - Tags: Python A MemoryError means that the interpreter has run out of memory to allocate to your Python program. This may be due to an issue in the setup of the Python environment or it may be a concern with the code itself loading too much data at the same time.   An Example of MemoryError To have a look at this error in action, let’s start with a particularly greedy piece of code. In the code below, we start with an empty array and use nested arrays to add strings to it. In this case, we use three levels of nested arrays, each with a thousand iterations. This means at the end of the program, the array s has 1,000,000,000 copies of the string "More. " s = for i in range(1000): for j in range(1000): for k in range(1000): s. append("More") Output As you might expect, these million strings are a bit much for, let’s say, a laptop to handle. The following error is printed out: C:\code\Python\MemErr\venv\3K\Scripts\python. exe C:/code/python/MemErr/main. py Traceback (most recent call last): File "C:/code/python/MemErr/main. py", line 6, in s. append("More") MemoryError In this case, the traceback is relatively simple as there are no libraries involved in this short program. After the traceback showing the exact function call which caused the issue, we see the simple but direct MemoryError.   Two Ways to Handle A MemoryError in Python Appropriate Python Set-up This simplest but possibly least intuitive solution to a MemoryError actually has to do with a potential... --- ### Abby Dugan - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=abby-dugan --- ### Martin Malloy - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=martin-malloy --- ### András Tarsoly - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=andras-tarsoly --- ### How to Fix TypeError: Cannot Read Property Length of Undefined in JavaScript > The JavaScript TypeError: Cannot read property 'length' of undefined occurs when the length property is read on an undefined variable. - Published: 2022-09-01 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/javascript-typeerror-cannot-read-property-length-of-undefined-in-javascript/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript The TypeError: Cannot read property 'length' of undefined is one of the most common type errors in JavaScript. It occurs when the length property is read on an undefined variable. Error message: TypeError: Cannot read properties of undefined (reading 'length') Error Type: TypeError   What Causes TypeError: Cannot Read Property Length of Undefined Undefined means that a variable has been declared but has not been assigned a value. In JavaScript, properties and functions can only belong to objects. Since undefined is not an object type, calling a function or a property on such a variable causes the TypeError: Cannot read property 'length' of undefined.   TypeError: Cannot Read Property Length of Undefined Example Here’s an example of a JavaScript TypeError: Cannot read property 'length' of undefined thrown when the length property is attempted to be read on an undefined variable: function myFunc(a) { console. log(a. length); } var myVar; myFunc(myVar); Since the variable myVar is declared but not initialized, it is undefined. When it is passed to the myFunc function, the property length is attempted to be accessed. Since a is undefined at that point, running the code causes the following error: Uncaught TypeError: Cannot read properties of undefined (reading 'length')   How to Avoid TypeError: Cannot Read Property Length of Undefined When such an error is encountered, it should be ensured that the variable causing the error is assigned a value. The length property is supported by data types such as arrays and strings. Custom objects can also have... --- ### Dean Rizzo - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=dean-rizzo --- ### Jeffrey Hoffer - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=jeffrey-hoffer --- ### How to Fix TypeError: Null is Not an Object in JavaScript > The JavaScript error TypeError: null is not an object occurs when a property is accessed or a method is called on a null value within Safari. - Published: 2022-09-01 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/javascript-typeerror-null-is-not-an-object/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript The JavaScript error TypeError: null is not an object occurs when a property is accessed or a method is called on a null value. This specific error message is shown only on Safari. Other browsers display a different message for this error. Error message: TypeError: null is not an object (evaluating 'x. y') - Safari TypeError: Cannot read properties of null (reading 'x') - Chrome TypeError: x is null - Firefox Error Type: TypeError   What Causes TypeError: Null is Not an Object The TypeError: null is not an object occurs when a property is read (or set) or a method is called on a null value. An object was expected in code but was not provided. Since null is not an object in JavaScript, using a null value when an object is expected does not work. A proper object must be provided in such situations.   TypeError: Null is Not an Object Example Here’s an example of a TypeError: null is not an object thrown when trying to read a property of a null value: var a = null; console. log(a. b); In the above code, the variable a has a null value. When the property b is attempted to be read on it, a TypeError: null is not an object is thrown: TypeError: null is not an object (evaluating 'a. b')   How to Fix TypeError: Null is Not an Object When such an error occurs, it means that a null value was provided where an object was... --- ### Alex Tkach - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=alex-tkach --- ### Nathan Sweet - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=nathan-sweet --- ### How to Fix The Format Flags Conversion Mismatch Exception in Java > The FormatFlagsConversionMismatchException in Java is thrown when a conversion and a flag are incompatible in the source code. - Published: 2022-08-31 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-formatflagsconversionmismatchexception/ - Categories: Code Tutorials, Java - Tags: java A FormatFlagsConversionMismatchException is an unchecked runtime exception which is thrown when a conversion and a flag are incompatible in the source code. This is a very common exception encountered when the programmer tries to format the string. Unless otherwise specified, passing a null argument to any method or constructor in this class will cause a NullPointerException to be thrown.   Here is the syntax of a FormatFlagsConversionMismatchException: public class FormatFlagsConversionMismatchException: IllegalFormatException Here is the hierarchy of the FormatFlagsConversionMismatchException class: Object -> Throwable -> Exception -> RuntimeException -> IllegalArgumentException -> IllegalFormatException -> FormatFlagsConversionMismatchException   When does FormatFlagsConversionMismatchException occur in Java? The FormatFlagsConversionMismatchException class has a constructor that constructs an instance of this class with the specified flag ( f ) and conversion ( c ). So whenever there is an incompatibility between the flag and the conversion, this exception is thrown. public FormatFlagsConversionMismatchException(String f, char c) Example one: Formatting the String Using String. format A common scenario where many programmers encounter this exception is while formatting the string using the String. format method. public class Demo { public static void main(String args) { int n = 3; String str = "Tony stark"; int noOfSpaces = n * 2; noOfSpaces = str. length + noOfSpaces; String output = String. format("%1$#" + noOfSpaces + "s", str); System. out. println(output); } } The flag # can only be applied to %o, %x, %f, and %e format specifiers only, but here it is %s. And as the # flag and the given argument are not... --- ### Oluwarotimi Joseph Olorunyomi - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=oluwarotimi-joseph-olorunyomi --- ### Yoz Grahame - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=yoz-grahame --- ### Ami Felson - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=ami-felson --- ### How to Fix The Service Configuration Error in Java > The ServiceConfigurationError occurs in Java when there is a failure in loading or locating a service provider. - Published: 2022-08-31 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-serviceconfigurationerror/ - Categories: Code Tutorials, Java - Tags: java A ServiceConfigurationError is thrown in Java when a service provider cannot be loaded successfully. For instance, the format of the provider-configuration file appears to violate some aspect of the specification.   Syntax of ServiceConfigurationError: public class ServiceConfigurationError extends Error The ServiceConfigurationError class belongs to the Error class, which itself is an extension of the Throwable class, which is an extension of the Object class. Additionally, the Serializable interface is implemented. Object -> Throwable -> Error -> ServiceConfigurationError   When does the ServiceConfigurationError occur? The ServiceConfigurationError exception occurs when something goes wrong while loading service providers like Javax Servlet, Hibernate or Java Swing in your application. However, below are some other related scenarios where this error also can occur: On violation of the specification of the provider-configuration file. An IOException occurs when reading the provider-configuration file. When a concrete provider class named in provider-configuration cannot be found while working. When the concrete provider class is not a subclass of the service class. When the concrete provider class cannot be instantiated or some other kind of error occurs.   Example: Writing an Image to a New File Path import java. awt. image. BufferedImage; import java. io. *; import javax. imageio. ImageIO; public class Demo { public static void createImage2 { try { BufferedImage bImage = ImageIO. read(new File("/Users/demo/Documents/Images/download. jpg")); ByteArrayOutputStream bos = new ByteArrayOutputStream; ImageIO. write(bImage, "jpg", bos); byte data = bos. toByteArray; ByteArrayInputStream bis = new ByteArrayInputStream(data); BufferedImage bImage2 = ImageIO. read(bis); ImageIO. write(bImage2, "jpg", new File("output. jpg")); } catch (IOException... --- ### Tamsin Guy - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=tamsin-guy --- ### Omar Powell Guaglione - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=omar-powell-guaglione --- ### Árpád Fülöp - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=arpad-fulop --- ### How to Handle the Argument Null Exception in C# > The ArgumentNullException occurs in C# when null arguments are passed to a method in that expects non-null values. - Published: 2022-08-31 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/csharp-argumentnullexception/ - Categories: C#, Code Tutorials - Tags: csharp A System. ArgumentNullException occurs when an invalid argument is passed to a method in C#. In this case, it refers to the passing of a null object when the method expects a non-null object or a value. Similar to other exceptions raised as a result of arguments, System. ArgumentNullException is not generally raised by the . NET framework itself or the Common Language Runtime (CLR). Instead, it is thrown by an application or a library as an indication of improper null arguments.   Syntax of ArgumentNullException Similar to any class or method, exceptions also have their own syntax. Below is the syntax for ArgumentNullException: public class ArgumentNullException : ArgumentException The ArgumentNullException comes under the class of ArgumentException, which is inherited from the SystemException class. The SystemException class is in turn inherited from the Exception class, which is inherited from the Object class. Object -> Exception -> SystemException -> IOException -> FileNotFoundException   When does the ArgumentNullException occur in C#? Generally, there are two major circumstances when an ArgumentNullException is thrown, both of which reflect developer errors: An object returned from a method call is then passed as an argument to a second method, but the value of the original returned object is null. To prevent the error, check for a return value that is null and call the second method only if the return value is not null. An uninstantiated object is passed to a method. To prevent the error, instantiate the object.   Example One: Working with an Inbuilt... --- ### Michael Ng - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=michael-ng --- ### Syed Ahmed - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=syed-ahmed --- ### Resolving the Boto3 NoCredentialsError in Python > NoCredentialsError is raised while using Boto3 to access AWS in Python, when a credentials file is invalid or cannot be located. - Published: 2022-08-25 - Modified: 2022-10-02 - URL: https://rollbar.com/blog/python-boto3-nocredentialserror/ - Categories: Code Tutorials, Python - Tags: Python The NoCredentialsError is an error encountered when using the Boto3 library to interface with Amazon Web Services (AWS). Specifically, this error is encountered when your AWS credentials are missing, invalid, or cannot be located by your Python script. These credentials are stored by default at ~/. aws/credentials which contains your access key and secret access key for using AWS services, along with other configuration details such as your region code. Think of this file as your login and password for the service. Attempting a Connection A NoCredentialsError is encountered while creating a connection to AWS, which is the first step for any program using these web services. Let’s have a look at a piece of code which connects to a Boto3 resource and attempts to print out the resource's name. import boto3 s3 = boto3. resource('s3') for bucket in s3. buckets. all: print(bucket. name) It’s important to note that there is no issue with this code itself. The issue is that when Boto3 attempts to make a connection to this resource, it attempts to reference the credentials file to make sure you are authorized to access said resource. If the credentials are valid, the program proceeds without issue. However, if there is a problem, the developer will encounter an error. An Issue Is Found Let’s say the above script is run and there is an issue with the credentials, the console will print out the following error: Traceback (most recent call last): File "C:/code/Python/NoCred/main. py", line 5, in for bucket... --- ### Daniel Day - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=daniel-day --- ### Charles Roberts - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=charles-roberts --- ### How to Fix the OperationalError in Python > The OperationalError in Python is encountered when using the Psycopg library to indicate that incorrect database information was provided - Published: 2022-08-16 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/python-operationalerror/ - Categories: Code Tutorials, Python - Tags: Python OperationalError is a class of error encountered while working with the psycopg library in Python. Operational errors are closely linked with the connect method within psycopg and typically occur when parameters passed to this method are incorrect or invalid. This may mean that a parameter, such as a database name, is spelled incorrectly, has changed, or that the database server itself is experiencing a problem.   Example 1: Database Connection Request Let's try connecting to a database to identify the sources of these errors. For this example, assume the database and user are named postgres, the host is localhost and the password is pa55w0rd. conn = psycopg2. connect("dbname='postgres' user='postgres' host='foreignhost' password='pa55w0rd'") cur = conn. cursor   An Output of Example 1 Notice here that the hostname is entered as foreignhost rather than the correct value of localhost. This results in the method being unable to connect to the database server and producing the following console output. C:\code\Python\PostreSQL\venv\3K\Scripts\py C:/code/python/PostreSQL/unique_violation Traceback (most recent call last): File "C:/code/python/PostreSQL/unique_violation", line 12, in conn = psycopg2. connect("dbname='postgres' user='postgres' host='foreignhost' password='pa55w0rd'") File "C:\code\Python\PostreSQL\venv\3K\lib\site-packages\psycopg2\__init__. py", line 122, in connect conn = _connect(dsn, connection_factory=connection_factory, **kwasync) psycopg2. OperationalError: could not translate host name "foreignhost" to address: Unknown host Notice the final line of this error message calls out the hostname directly saying, “Could not translate host name "foreignhost" to address: Unknown host. ” This shows us exactly which credential is causing the issue.   Example 2: Database Connection Request Alternatively, a correct hostname and an incorrect password is entered.... --- ### Sachin Goyal - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=sachin-goyal --- ### Mrunal Kapade - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=mrunal-kapade --- ### Ryan Clark - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=ryan-clark --- ### How to Fix ReferenceError: Event is Not Defined in JavaScript > JavaScript's ReferenceError: Event is Not Defined occurs if the event parameter is not declared correctly when using an event handler. - Published: 2022-08-04 - Modified: 2022-12-12 - URL: https://rollbar.com/blog/javascript-referenceerror-event-is-not-defined/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript The Javascript ReferenceError occurs when referencing a variable that does not exist or has not yet been initialized in the current scope. The ReferenceError: event is not defined usually occurs while using an event handler if the event parameter is either not declared or declared incorrectly. For example, if on an onclick event, the handler does not declare the event parameter, this error is thrown.   What Causes Javascript ReferenceError: Event is Not Defined The Javascript ReferenceError is thrown when an attempt is made to reference a non-existing or out of scope variable. Not defining a variable or parameter before referencing it is one of the most common triggers for reference errors. When using event handlers in Javascript, the handler expects a parameter to be declared for the event object. This parameter is usually named e or event. If this parameter is not declared in the handler, or declared incorrectly, and is used later on in the handler, the ReferenceError: event is not defined is thrown. The Javascript Window object has a property called event, which is only supported by certain browsers. In case an event parameter is not declared explicitly in event handlers, this property might instead be used. Therefore, this error only occurs in browsers that do not support the Window. event property.   ReferenceError: Event is Not Defined Example Here’s an example of a Javascript ReferenceError: event is not defined thrown when the event parameter is not declared in an event handler: function myFunction { console. log(event);... --- ### How to Handle the Psycopg2 UniqueViolation Error in Python > Thrown by the psycopg2 library when a user attempts to insert a duplicate key value in a SQL or SQL-like library. - Published: 2022-08-04 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/python-psycopg2-errors-uniqueviolation/ - Categories: Code Tutorials, Python - Tags: Python The psycopg2. errors. UniqueViolation is an error thrown by the when a user attempts to insert a duplicate key value. In an SQL or SQL-like database a key value is defined when a table is created. This key value is then used to reference specific rows of the table. In order to make calls to these rows unambiguous, this key value must be unique for every row. Any attempt to insert a new row which has a value in the key field that already exists in the table cannot be completed. This will result in a UniqueViolation error.   An Example of psycopg2. errors. UniqueViolation In the below example, we are attempting to create a new table and populate it with data. However, our code will cause a UniqueViolation error to be thrown. import psycopg2 def create_tables(cur): cur. execute("create table student2(name char(30), gender char(30), birthday char(30), primary key(name));") def fill_tables(cur): cur. execute("insert into student2 (name, gender, birthday) values ('Tom', 'male', '11-21-2000');") cur. execute("insert into student2 (name, gender, birthday) values ('Tom', 'male', '03-31-2001');") try: conn = psycopg2. connect("dbname='postgres' user='postgres' host='localhost' password='pa55w0rd'") cur = conn. cursor except: print("I am unable to connect to the database") if __name__ == '__main__': create_tables(cur) fill_tables(cur) In the above example, a new table is created using the create_tables function. This table stores the name, gender, and birthday for each entry. Notice that the name is being used as the primary key, which means this value cannot be duplicated. Any other values can be duplicated as needed. For... --- ### Sami Atiq - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=sami-atiq --- ### Hardik "HK" Parekh - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=hardik-hk-parekh --- ### Angeline Junaedy - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=angeline-junaedy --- ### How to Handle the FileNotFoundException in C# > The FileNotFoundException occurs in C# when the system is unable to locate a file when the program is executed. Learn how to handle it here. - Published: 2022-07-25 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/csharp-filenotfoundexception/ - Categories: C#, Code Tutorials - Tags: csharp One of the most commonly occurring errors in C#, FileNotFoundException is raised when the developer tries to access a file in the program that either doesn't exist or has been deleted. The following are some of the reasons the system is unable to locate the file: There might be a mismatch in the file name. For instance, instead of "demo. txt", the developer has written "Demo. txt". The file location may have changed. The file might have been deleted. The location or path the developer has passed might be wrong.   Syntax of FileNotFoundException Similar to any class or a method, exceptions also have their own syntax. Below is the syntax for FileNotFoundException: public class FileNotFoundException :System. IO. IOException The FileNotFoundException comes under the class of IOExceptions, which is inherited from the SystemException. SystemException, which is inherited from the Exception class, which is in turn inherited from the Object class. Object -> Exception -> SystemException -> IOException -> FileNotFoundException   An Example of FileNotFoundException In the below code, System. IO is imported, which is necessary for doing input and output operations on a file. Then within the main method, a try-catch block is placed to catch the exceptions, and within the try block we have our StreamReader class object. The StreamReader class is used to read text files. An object of StreamReader, the path of file "demo. txt" is passed. This file doesn't exist in its constructor. Then the ReadToEnd method is used to read the file till the end... --- ### Finbar Fleming - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=finbar-fleming --- ### Eva Zhang - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=eva-zhang --- ### How to Fix the FileNotFoundException in Java.io > The FileNotFoundException is a checked exception in Java that occurs when an attempt to open a file denoted by a specified pathname fails. - Published: 2022-07-18 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-filenotfoundexception/ - Categories: Code Tutorials, Java - Tags: java The java. io. FileNotFoundException is a checked exception in Java that occurs when an attempt to open a file denoted by a specified pathname fails. This exception is thrown by the FileInputStream, FileOutputStream, and RandomAccessFile constructors when a file with the specified pathname either does not exist or is inaccessible. Since FileNotFoundException is a checked exception, it must be explicitly handled in methods which can throw this exception - either by using a try-catch block or by throwing it using the throws clause.   What Causes FileNotFoundException There are two main scenarios when the FileNotFoundException occurs: If a file with the specified pathname does not exist. If a file with the specified pathname is inaccessible, for example, if the file is read-only and is attempted to be opened for writing.   FileNotFoundException Example Here's an example of a FileNotFoundException thrown when trying to access a file that does not exist in the system: public class FileNotFoundExceptionExample { public static void main(String args) { BufferedReader br = null; try { br = new BufferedReader(new FileReader("myfile. txt")); String data = null; while ((data = br. readLine) ! = null) { System. out. println(data); } } catch (IOException ioe) { ioe. printStackTrace; } finally { try { if (br ! = null) { br. close; } } catch (IOException ioe) { ioe. printStackTrace; } } } } In the above example, a file with the name myfile. txt is attempted to be accessed. However, since no such file exists in the system, a... --- ### Zoltán Bődi - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=zoltan-bodi --- ### Phillip Ramirez - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=phillip-ramirez --- ### How to Fix the No Such Element Exception in Java > The NoSuchElementException in Java can be thrown by various accessor methods to indicate that the element being requested does not exist. - Published: 2022-07-06 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-nosuchelementexception/ - Categories: Code Tutorials, Java - Tags: java The NoSuchElementException is an unchecked exception in Java that can be thrown by various accessor methods to indicate that the element being requested does not exist. Since the NoSuchElementException is thrown at runtime, it does not need to be declared in the throws clause of a method or constructor.   What Causes NoSuchElementException The NoSuchElementException can be thrown by various classes or interfaces in Java such as Iterator, Enumerator, Scanner or StringTokenizer. If an element is requested using the accessor methods of these classes or interfaces, and the underlying data structure does not contain the element, the NoSuchElementException is thrown. This can occur if the data structure is empty or if its next element is requested after reaching the end of the structure.   NoSuchElementException Example Here is an example of a NoSuchElementException thrown when trying to access an element of an empty ArrayList using an accessor method of the Iterator interface: public class NoSuchElementExceptionExample { public static void main(String args) { List list = new ArrayList; Iterator it = list. iterator; System. out. println(it. next); } } In the above example, an element of the ArrayList list is requested using the Iterator. next accessor method. However, since list is empty, the element requested does not exist and the operation throws a NoSuchElementException: Exception in thread "main" java. util. NoSuchElementException at java. base/java. util. ArrayList$Itr. next(ArrayList. java:970) at NoSuchElementExceptionExample. main(NoSuchElementExceptionExample. java:9)   How to Fix NoSuchElementException To fix the NoSuchElementException, it should be ensured that the underlying object contains more... --- ### Christopher Seaman - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=christopher-seaman --- ### Julian Simpson - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=julian-simpson --- ### Move Faster with Rollbar Improve - Published: 2022-06-30 - Modified: 2022-12-14 - URL: https://rollbar.com/blog/rollbar-improve-alpha/ - Categories: product - Tags: improve Building software is complex and, at Rollbar, we believe it’s better to move quickly and manage risk intelligently rather than try to build perfect code. For the past decade, Rollbar has provided peace of mind to hundreds of thousands of developers by monitoring production environments for errors. The tool has been leveraged to find and fix bugs in a fraction of the time and is trusted by the individual developers to at-scale enterprises. We realized that we can leverage our unique understanding of quality in production to provide teams actionable insights into their planning, development, release, triage & bug fixing processes. Over the coming months we'll be sharing a new product that will help Rollbar and its customers transcend their competitors. The product we've been purposefully designing in collaboration with several of our customers is called Improve. With Improve, we will help teams and organizations prioritize where they focus their limited time better. We'll help teams understand ownership, expertise, and manage risk within their process with every pull request. Moreover, Improve will coach on how software teams can move their metrics in the right direction. In the end, we're going to help our customers learn from their failures. We're excited to share that we're opening up a limited Alpha (𝝰) for Improve which gives a nibble of what's to come. Rollbar: Improve is now available on selected plans. View the plans on our pricing page. Learn more in our docs. --- ### An Nguyen - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=an-nguyen --- ### Renee Wells-Wood - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=renee-wells-wood --- ### How to Fix the Missing Resource Exception in Java > The MissingResourceException occurs when a resource required by a Java program is not found within the specified filepath. - Published: 2022-06-30 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-missingresourceexception/ - Categories: Code Tutorials, Java - Tags: java The MissingResourceException is an unchecked exception in Java that occurs when a resource is missing. Since the MissingResourceException is thrown at runtime, it does not need to be declared in the throws clause of a method or constructor.   What Causes MissingResourceException The MissingResourceException occurs when a resource required by a Java program is not found. Common causes for this include the following: If a resource file with the specified name does not exist or could not be found. Attempting to retrieve a value associated with a key in a resource file when no value was defined in the file with the specified key. Attempting to retrieve the country or language of a Locale if no three-letter abbreviation could be found for the country or language of that Locale.   MissingResourceException Example Here is an example of an MissingResourceException thrown when a resource file could not be found: public class MissingResourceExceptionExample { public static void main(String args) { ResourceBundle myResources = ResourceBundle. getBundle("resources"); } } In the above example, a resource file with the name resources. properties is attempted to be retrieved. Since no file with this name exists, running the above code throws the MissingResourceException: Exception in thread "main" java. util. MissingResourceException: Can't find bundle for base name resources, locale en_GB at java. base/java. util. ResourceBundle. throwMissingResourceException(ResourceBundle. java:2055) at java. base/java. util. ResourceBundle. getBundleImpl(ResourceBundle. java:1689) at java. base/java. util. ResourceBundle. getBundleImpl(ResourceBundle. java:1593) at java. base/java. util. ResourceBundle. getBundleImpl(ResourceBundle. java:1556) at java. base/java. util. ResourceBundle. getBundle(ResourceBundle. java:857) at MissingResourceExceptionExample. main(MissingResourceExceptionExample.... --- ### Jonathan Lilienthal - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=jonathan-lilienthal --- ### How to Fix the Unknown Format Conversion Exception in Java > The UnknownFormatConversionException in Java is thrown when an unknown conversion occurs while formatting data. - Published: 2022-06-27 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-unknownformatconversionexception/ - Categories: Code Tutorials, Java - Tags: java The UnknownFormatConversionException is an unchecked exception in Java that occurs when an unknown conversion is given. Since the UnknownFormatConversionException is thrown at runtime, it does not need to be declared in the throws clause of a method or constructor.   What Causes UnknownFormatConversionException The UnknownFormatConversionException is thrown when an unknown conversion occurs while formatting data. This can happen when using a format specifier that has an unknown parameter value. For example, using the value %i as a format specifier will throw an UnknownFormatConversionException, since this is an unknown parameter value.   UnknownFormatConversionException Example Here is an example of an UnknownFormatConversionException thrown when using a format specifier that has an unknown parameter value: public class UnknownFormatConversionExceptionExample { public static void main(String args) { String str = "Hello World"; System. out. printf("%w", str); } } Since %w is an unknown value for a format specifier, using it throws an UnknownFormatConversionException: Exception in thread "main" java. util. UnknownFormatConversionException: Conversion = 'w' at java. base/java. util. Formatter$FormatSpecifier. conversion(Formatter. java:2839) at java. base/java. util. Formatter$FormatSpecifier. (Formatter. java:2865) at java. base/java. util. Formatter. parse(Formatter. java:2713) at java. base/java. util. Formatter. format(Formatter. java:2655) at java. base/java. io. PrintStream. format(PrintStream. java:1209) at java. base/java. io. PrintStream. printf(PrintStream. java:1105) at UnknownFormatConversionExceptionExample. main(UnknownFormatConversionExceptionExample. java:4)   How to Fix UnknownFormatConversionException To avoid the UnknownFormatConversionException, it should be ensured that format specifiers used in code have a known value. In the above example, the exception can be resolved by replacing %w with %s which is the correct format specifier for string values.... --- ### David Woller - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=david-woller --- ### Tin Nguyen - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=tin-nguyen --- ### How to Fix the Missing Format Argument Exception in Java? > Java's MissingFormatArgumentException occurs if a format specifier does not have an argument/argument index points to a nonexistant argument. - Published: 2022-06-17 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-missingformatargument/ - Categories: Code Tutorials, Java - Tags: java The MissingFormatArgumentException is an unchecked exception in Java that occurs when a format specifier does not have a corresponding argument or if an argument index points to an argument that does not exist. Since the MissingFormatArgumentException is thrown at runtime, it does not need to be declared in the throws clause of a method or constructor.   What Causes MissingFormatArgumentException The MissingFormatArgumentException is thrown when using a format specifier that does not have a corresponding argument or if an argument index refers to an argument that does not exist. For example, the %d format specifier requires an integer to be passed to it, and if no argument is passed, a MissingFormatArgumentException is thrown.   MissingFormatArgumentException Example Here is an example of an MissingFormatArgumentException thrown when using a format specifier that does not have a corresponding argument: public class MissingFormatArgumentExceptionExample { public static void main(String args) { String str = "Hello World"; System. out. printf("%s" + str); } } Since the %s format specifier expects a corresponding string argument but no such argument exists, running the above code throws the MissingFormatArgumentException: Exception in thread "main" java. util. MissingFormatArgumentException: Format specifier '%s' at java. base/java. util. Formatter. format(Formatter. java:2672) at java. base/java. io. PrintStream. format(PrintStream. java:1209) at java. base/java. io. PrintStream. printf(PrintStream. java:1105) at MissingFormatArgumentExceptionExample. main(MissingFormatArgumentExceptionExample. java:4)   How to Fix MissingFormatArgumentException To avoid the MissingFormatArgumentException, it should be ensured that format specifiers used in code should have corresponding arguments and that the arguments exist at the correct argument index. In the... --- ### How to Fix the Input Mismatch Exception in Java? > Thrown by a Scanner to indicate that a retrieved token does not match the pattern for the expected type, or that the token is out of range. - Published: 2022-06-09 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-inputmismatchexception/ - Categories: Code Tutorials, Java - Tags: java p>The InputMismatchException is a runtime exception in Java that is thrown by a Scanner object to indicate that a retrieved token does not match the pattern for the expected type, or that the token is out of range for the expected type. Since InputMismatchException is an unchecked exception, it does not need to be declared in the throws clause of a method or constructor.   What Causes InputMismatchException The InputMismatchException generally occurs when working with Java programs that prompt users for input using the Scanner class. The exception can occur when the input is invalid for the expected type. The input either does not match the pattern for the expected type, or is out of range. For example, if a program expects an Integer value for an input but the user enters a String value instead, an InputMismatchException is thrown.   InputMismatchException Example Here is an example of an InputMismatchException thrown when a String is entered as input to a Scanner that expects an integer: import java. util. Scanner; public class InputMismatchExceptionExample { public static void main(String args) { Scanner scanner = new Scanner(System. in); System. out. println("Enter an integer: "); int integer = scanner. nextInt; scanner. close; System. out. println("You entered: " + integer); } } In the above code, the user is prompted for an integer as input. The Scanner. nextInt method is used to retrieve the value, which expects an integer as input. If the user enters a String value instead of an integer, an InputMismatchException is... --- ### Java Guide: What is Heap Space & Dynamic Memory Allocation? > The heap space in Java is used for the dynamic memory allocation of Java objects and classes at runtime, i.e on the creation of a new object. - Published: 2022-06-09 - Modified: 2022-06-09 - URL: https://rollbar.com/blog/java-heap-space/ - Categories: topics - Tags: java To run Java applications optimally, the JVM divides memory into stack and heap memory. Whenever new variables and objects are declared, new methods are called or other similar operations are performed, the JVM designates memory to these operations from either the Stack Memory or Heap Space. Heap space is used for the dynamic memory allocation of Java objects and classes at runtime. New objects are always created in the heap space, and references to these objects are stored in the stack memory.   Java Heap Space and Generations The heap space is created by the JVM when it starts. The heap is used as long as the application is running. It can be broken down into smaller parts called generations, which are: Young Generation - All new objects are allocated and aged here. A minor garbage collection occurs when this fills up. Old or Tenured Generation - Long surviving objects are stored here. When objects are stored in the Young Generation, a threshold for the object's age is set. When this threshold is reached, the object is moved to the Old Generation. Garbage collection is usually performed in the Old Generation when it's full. This is called Major GC and it usually takes longer. Permanent Generation (replaced by Metaspace since Java 8) - Consists of JVM metadata for runtime classes and application methods.   Java Heap Space Features Some features of the heap space are: It is accessed via complex management techniques that include the Young, Old and Permanent Generations.... --- ### How to Handle the Headless Exception in Java > This exception is thrown when code that depends on a keyboard, display or mouse is called in an environment that does not support any of these - Published: 2022-06-09 - Modified: 2022-06-09 - URL: https://rollbar.com/blog/java-headlessexception/ - Categories: topics - Tags: java The java. awt. HeadlessException is a runtime exception in Java that occurs when code that is dependent on a keyboard, display or mouse is called in an environment that does not support a keyboard, display or mouse. Since HeadlessException is an unchecked exception, it does not need to be declared in the throws clause of a method or constructor.   What Causes HeadlessException The HeadlessException is thrown when Java code that depends on a display device, keyboard, or mouse is called in an environment that does not support any of these. This typically occurs in the Java headless mode, which is a system configuration in which the display device, keyboard, or mouse is lacking. Certain Java AWT components require peripheral devices and will not work in the headless mode. As a rule of thumb, top-level AWT components such as Frame and Button always need an interactive environment. If these components are used in a non-interactive (headless) environment, a HeadlessException is thrown.   HeadlessException Example Here’s an example of a HeadlessException thrown when using a JFrame object in the Java headless mode: import javax. swing. JFrame; public class HeadlessExceptionExample { public static void main(String args) { JFrame frame = new JFrame("test"); frame. setVisible(true); } } When the above code is executed in the Java headless mode using the following command line argument: -Djava. awt. headless=true The HeadlessException is thrown: Exception in thread "main" java. awt. HeadlessException at java. desktop/java. awt. GraphicsEnvironment. checkHeadless(GraphicsEnvironment. java:165) at java. desktop/java. awt. Window. (Window. java:540) at... --- ### Atsuko Nishiguchi - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=atsuko-nishiguchi --- ### Mani Askari - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=mani-askari --- ### Java: List of Checked & Unchecked Exceptions > List of checked & unchecked Java exceptions with links to their corresponding guide. 1.InvocationTargetException 2.NoSuchMethodException.... - Published: 2022-06-08 - Modified: 2024-05-07 - URL: https://rollbar.com/blog/java-list-of-all-checked-unchecked-exceptions/ - Categories: topics - Tags: java Like most modern programming languages, Java includes the concept of exceptions to handle both errors and "exceptional events. " When an exception occurs in your code, it disrupts the normal instruction logic and abnormally terminates the process. However, with a little foresight and code, you can often handle these exceptions gracefully, allowing your code to continue running and providing insight for tracking down the root cause of the unexpected result. Below we have compiled a list of Checked and UncheckedJava exceptions you would likely encounter, with links to their corresponding guide on how best to implement them.   Exceptions under the parent class java. lang. Throwable Checked exceptions are denoted by the ✓ mark Exception CloneNotSupportedException ✓ InterruptedException ✓ ReflectiveOperationException ClassNotFoundException ✓ IllegalAccessException ✓ InstantiationException ✓ NoSuchFieldException ✓ NoSuchMethodException ✓ RuntimeException ArithmeticException ArrayStoreException ClassCastException EnumConstantNotPresentException IllegalArgumentException llegalThreadStateException NumberFormatException IllegalCallerException IllegalMonitorStateException IllegalStateException IndexOutOfBoundsException ArrayIndexOutOfBoundsException StringIndexOutOfBoundsException LayerInstantiationException NegativeArraySizeException NullPointerException SecurityException TypeNotPresentException UnsupportedOperationException   Track, Analyze and Manage Errors With Rollbar Managing errors and exceptions in your code is challenging. It can make deploying production code an unnerving experience. Being able to track, analyse, and manage errors in real-time can help you proceed with more confidence. Rollbar automates error monitoring and triaging, making fixing Java errors easier than ever. Sign Up Today! --- ### Patrick Smyth - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=patrick-smyth --- ### Michael Mukhin - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=michael-mukhin --- ### What is a Java Stack Trace? How to Read & Analyze Traces > Displayed when an error/exception occurs, stack traces in Java can be used to debug or troubleshoot issues encountered in code. - Published: 2022-05-30 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-stack-trace/ - Categories: Code Tutorials, Java - Tags: java A Java stack trace is displayed when an error or exception occurs. The stack trace, also called a backtrace, consists of a collection of stack records, which store an application's movement during its execution. The stack trace includes information about program subroutines and can be used to debug or troubleshoot and is often used to create log files. These exceptions could be custom (defined by the user) or built-in. Examples include RuntimeException,NullPointerException, andArrayIndexOutofBoundsException. Now that you know what a stack trace is, let’s take a look at some examples, how to analyze stack traces, and how you can avoid a stack trace altogether with error handling.   Examples of Java Stack Traces Example 1 - Temperature Conversion from Celsius to Fahrenheit Let's look at an example of converting temperatures from Celsius to Fahrenheit. Only an integer or float input is valid here. But if we try to provide another data type, such as a string, the compiler will throw an exception and print the stack trace. import java. util. Scanner; public class hello{ public static void main(String args) { Scanner scanner = new Scanner(System. in); System. out. print("Enter value in Celsius to convert in fahrenheit:"); double Celsius = scanner. nextFloat; double fahrenheit = (Celsius * 1. 8)+32; System. out. printf("%. 1f degrees Celsuis is %. 1f degrees in Fahrenheit ",Celsius,fahrenheit); } } When we run the above code and enter some invalid value, let’s say the string "hero," we get the following output: Enter value in Celsius to convert in... --- ### Colin Flynn - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=colin-flynn --- ### Ramon Niebla - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=ramon-niebla --- ### Gianina Borcean - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=gianina-borcean --- ### How to Resolve an Uncaught Reference Error in Javascript > The ReferenceError occurs when referencing a variable that does not exist or has not been initialized in the current scope. Learn how to solve it. - Published: 2022-05-24 - Modified: 2022-11-28 - URL: https://rollbar.com/blog/javascript-referenceerror/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript The Javascript ReferenceError occurs when referencing a variable that does not exist or has not yet been initialized in the current scope. Reference errors in Javascript are of a few different types, with variations of each, that may get triggered in code. Some of these are discussed below.   What Causes Javascript ReferenceError The Javascript ReferenceError is thrown when an attempt is made to reference a non-existing or out of scope variable. There are a few types of reference errors in Javascript with different variations of each. Some of these are: Undefined variables - Not defining a variable before referencing it is one of the most common triggers for reference errors in Javascript. Out of scope variables - Variables defined inside a function's scope cannot be accessed outside of it. If an attempt is made to reference an out of scope variable, a ReferenceError is thrown. Strict mode - Using strict mode in Javascript can throw a ReferenceError if a variable is not defined using the var, let or const keywords. Here’s an example of such a declaration: foo = true; Referencing the variable foo in code would result in a ReferenceError being thrown if using strict mode. The error would not occur if not using strict mode. Variable redeclarations - Redeclaring variables using the wrong keywords can also throw a ReferenceError. For example, initially declaring a variable using let, and subsequently redeclaring using let again throws a ReferenceError.   ReferenceError Example Here’s an example of a Javascript ReferenceError thrown... --- ### Austen Lacy - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=austen-lacy --- ### Marcelo Oliveira - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=marcelo-oliveira --- ### PHP Nested Try-Catch > In PHP, Try-catch blocks can be nested up to any desired levels and are handled in reverse order of appearance. Learn more now! - Published: 2022-05-24 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/php-nested-try-catch/ - Categories: Code Tutorials, PHP - Tags: PHP Try-catch blocks in PHP can be nested up to any desired levels and are handled in reverse order of appearance i. e. innermost exceptions are handled first. Nested blocks can be useful in case a block of code causes an exception, which can be handled within that block and program execution can continue in the outer block. They can also be useful in case the handling of an exception causes another exception. Here is an example of a nested try-catch block: try{ try{ if(file_exists("myfile. json")){ //upload file } else { throw new Exception( 'File not found'); } } catch (Exception $e){ throw new Exception( 'Unable to upload file',0,$e); } //continue outer try block code } catch (Exception $e){ echo $e->getMessage . ""; while($e = $e->getPrevious) { echo 'Previous exception: '. $e->getMessage . ""; } } In this example, a file is uploaded and it is checked whether the file exists or not prior to the upload operation. If it does not exist, an exception is thrown. This code that checks whether the file exists or not is placed within a try-catch block, which is nested within another try-catch block. In case the file is not found, the inner block throws an 'Unable to upload file' exception, which is caught and handled by the outer block, leading to the following output: Unable to upload file Previous exception: File not found   Track, Analyze and Manage Errors With Rollbar Managing errors and exceptions in your code is challenging. It can make deploying... --- ### Imran Rizvi - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=imran-rizvi --- ### Dmitry Mazin - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=dmitry-mazin --- ### How to Handle the Syntax Error in Javascript > The Javascript SyntaxError is thrown when the engine comes across tokens or token orders with incorrect syntax when parsing code. - Published: 2022-05-12 - Modified: 2024-10-09 - URL: https://rollbar.com/blog/javascript-syntaxerror/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript The Javascript SyntaxError occurs when trying to interpret code that is not syntactically valid. It is thrown when the Javascript engine comes across tokens or token order that does not conform to Javascript syntax when parsing code.   What Causes Javascript SyntaxError The Javascript SyntaxError is caused by the incorrect use of a pre-defined syntax. Syntax errors are detected while interpreting or parsing source code. For example, a SyntaxError can occur if a closing brace (}) is left off when defining a Javascript function. Browser development tools such as Chrome DevTools display Javascript syntax errors in the console.   SyntaxError Example Here’s an example of a Javascript SyntaxError thrown when missing a closing quotation mark (") in a line of code: console. log("Hello World); Since the above line of code has a missing closing quote, running it throws a SyntaxError: Uncaught SyntaxError: Invalid or unexpected token   How to Handle SyntaxError Syntax errors in Javascript cannot be handled by using try-catch blocks as they are thrown while the code is being parsed. The window. onerror function can be used instead to figure out that there is a syntax error. To achieve this, the onerror function must be defined in a separate script tag and not in the tag where the error may occur. The earlier code can be updated to use window. onerror: In the above code, the syntax error in the second script tag is logged by the console. log statement in the first script tag: Error: Uncaught SyntaxError:... --- ### Chris Maki - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=chris-maki --- ### Nicholas Vincent-Hill - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=nicholas-vincent-hill --- ### How to Handle the Socket Exception in Java > The SocketException in Java is thrown to indicate that an error was encountered while creating or accessing a Socket. - Published: 2022-05-05 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-socketexception/ - Categories: Code Tutorials, Java - Tags: java The SocketException is an exception in Java that is thrown to indicate that an error was encountered while creating or accessing a Socket. Since the SocketException is a checked exception, it either needs to be thrown or surrounded by a try-catch block in code.   What Causes SocketException SocketException is a subclass of IOException and is the most general exception that indicates a problem when trying to open or access a socket. Some common causes for the SocketException are: Closed socket connection - The most common cause of SocketException is reading or writing from or to a closed socket connection. It can also occur when the connection is closed before all the data is read in the socket buffer. Slow network - A poor network connection might also cause a SocketException. Setting a higher connection timeout can decrease the rate of SocketException for slow connections. Network firewall - A network firewall can close socket connections. A network monitoring tool like Wireshark can be used to check firewall activities. Idle connection - Long idle connections might also cause a SocketException. If a connection needs to be used for a long time, heartbeat messages can be sent to prevent the idle state. Errors in code - A SocketException can also occur because of issues or bugs in code. For example, if a client sends a message to the server after the socket connection is closed.   SocketException Example The following is an example of a SocketException thrown when trying to write to... --- ### Gabriella Papp - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=gabriella-papp --- ### Lubos Parobek - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=lubos-parobek --- ### How to Handle the Unknown Host Exception in Java > The UnknownHostException occurs when trying to connect to a remote host, but the IP address of the host could not be determined. - Published: 2022-05-05 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-unknownhostexception/ - Categories: Code Tutorials, Java - Tags: java The UnknownHostException is an exception in Java that is thrown to indicate that the IP address of a host could not be determined. Since the UnknownHostException is a checked exception, it either needs to be thrown or surrounded by a try-catch block in code.   What Causes UnknownHostException The UnknownHostException occurs when trying to connect to a remote host using its hostname, but the IP address of the host could not be determined. This usually happens because of a typo in the hostname, or because of a DNS misconfiguration or propagation delay.   UnknownHostException Example Here is an example of an UnknownHostException thrown when trying to connect to an unknown host: public class UnknownHostExceptionExample { public static void main(String args) { String host = "https://rollbar. co"; URL url = null; try { url = new URL(host); HttpURLConnection con = (HttpURLConnection) url. openConnection; System. out. println(con. getResponseCode); } catch (MalformedURLException mue) { mue. printStackTrace; } catch (IOException ioe) { ioe. printStackTrace; } } } The above code attempts to connect to a remote host, but has a typo in the hostname. Therefore, running the code throws an UnknownHostException exception: java. net. UnknownHostException: rollbar. co at java. base/sun. nio. ch. NioSocketImpl. connect(NioSocketImpl. java:567) at java. base/java. net. SocksSocketImpl. connect(SocksSocketImpl. java:333) at java. base/java. net. Socket. connect(Socket. java:648) at java. base/sun. security. ssl. SSLSocketImpl. connect(SSLSocketImpl. java:290) at java. base/sun. security. ssl. BaseSSLSocketImpl. connect(BaseSSLSocketImpl. java:173) at java. base/sun. net. NetworkClient. doConnect(NetworkClient. java:182) at java. base/sun. net. www. http. HttpClient. openServer(HttpClient. java:474) at java. base/sun.... --- ### Mike French - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=mike-french --- ### Rachel Foster - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=rachel-foster --- ### How to Implement Custom Exceptions in C++ > Custom exceptions in C++ provide relevant information about an error to the exception handling mechanism and customize the error message. - Published: 2022-04-21 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/cpp-custom-exceptions/ - Categories: C++, Code Tutorials - Tags: c++ Under certain conditions, custom exceptions that are not predefined in C++ may be useful to generate. In C++, any type can be caught or thrown that matches some requirements. These are that the type should have a valid copy constructor and destructor. Custom exceptions provide relevant information about an error to the exception handling mechanism. They can be generated by creating a new class containing the attributes needed and throwing an instance of such a class, or by inheriting from std::exception and overriding the what function.   Custom C++ Exceptions Example Here’s an example on how to create and throw a custom exception in C++: #include using namespace std; class MyCustomException : public std::exception { public: char * what { return "Custom C++ Exception"; } }; int main { try { throw MyCustomException; } catch (MyCustomException mce) { cout --- ### Erwin Tung - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=erwin-tung --- ### How to Fix the Unsupported Operation Exception in Java > The UnsupportedOperationException occurs when attempting operations that aren't supported, primarily when trying to modify immutable collections. - Published: 2025-04-20 - Modified: 2025-04-20 - URL: https://rollbar.com/blog/fixing-unsupportedoperationexception-in-java/ - Categories: Code Tutorials, Java - Tags: error-handling, java Java throws an UnsupportedOperationException when you attempt to modify an object that was designed to be viewed but not changed. Think of UnsupportedOperationException as trying to open a door with the wrong key. The door exists and looks like any other door, but your particular key (or operation) simply isn't compatible with its lock. This runtime exception is Java's way of telling you that while the method you're calling appears to exist, this specific implementation doesn't support that operation - usually because you're dealing with an unmodifiable or fixed-size collection. For example, if an unmodifiable List is attempted to be modified by adding or removing elements, an UnsupportedOperationException is thrown. This is one of the common exceptions that occur when working with Java collections such as List, Queue, Set and Map. Since it's an unchecked exception, it doesn't need to be declared in the throws clause of a method or constructor, making it even more frustrating when it appears unexpectedly in your logs. What Causes UnsupportedOperationException The UnsupportedOperationException is thrown when a requested operation cannot be performed because it's not supported for that particular class. Here are the most common causes: 1. Fixed-Size Lists from Arrays. asList One of the most frequent causes is using the asList method of the java. util. Arrays class. This method returns a fixed-size, unmodifiable List, so operations like add or remove will throw the exception. 2. Immutable Collections Trying to modify collections returned by factory methods like List. of, Set. of, or Collections. unmodifiableList... --- ### Paul Moriarty - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=paul-moriarty --- ### How to Handle the Clone Not Supported Exception in Java > Thrown to indicate that Object.clone() was called to clone an object, but that object's class does not implement the Cloneable interface. - Published: 2022-04-07 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-clonenotsupportedexception/ - Categories: Code Tutorials, Java - Tags: java The CloneNotSupportedException is an exception in Java that is thrown to indicate that the clone method in class Object was called to clone an object, but that object's class does not implement the Cloneable interface. Applications that override the clone method can also throw this exception to indicate that an object could not or should not be cloned.   What Causes CloneNotSupportedException A class implements the Cloneable interface to indicate to the Object. clone method that it is legal to create a clone of that class. Invoking Object. clone on an instance that does not implement the Cloneable interface results in the CloneNotSupportedException being thrown. By convention, classes that implement the Cloneable marker interface should override the protected Object. clone method with a public method.   CloneNotSupportedException Example Here is an example of an CloneNotSupportedException thrown when an object is cloned, and the object’s class does not implement the Cloneable interface: class Person { private String name; public Person(String name) { super; this. name = name; } @Override protected Object clone throws CloneNotSupportedException { return super. clone; } } public class CloneNotSupportedExceptionExample { public static void main(String args) { Person p = new Person("John"); try { p. clone; } catch (CloneNotSupportedException cnse) { cnse. printStackTrace; } } } Since the Person class does not implement the Cloneable interface, it is not legal to create a clone of that class using Object. clone. Therefore, running the above code throws the CloneNotSupportedException exception: java. lang. CloneNotSupportedException: Person at java. base/java. lang. Object.... --- ### Steve Beane - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=steve-beane --- ### How to Resolve the Instantiation Exception in Java > The InstantiationException in Java is thrown when the JVM cannot instantiate a Java type at runtime using the Class.newInstance() method. - Published: 2022-04-04 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/how-to-resolve-the-instantiation-exception-in-java/ - Categories: Code Tutorials, Java - Tags: java The InstantiationException is a runtime exception in Java that occurs when an application attempts to create an instance of a class using the Class. newInstance method, but the specified class object cannot be instantiated. Since the InstantiationException is an unchecked exception, it does not need to be declared in the throws clause of a method or constructor.   What Causes InstantiationException The InstantiationException is thrown when the JVM cannot instantiate a type at runtime. This can happen for a variety of reasons, including the following: The class object represents an abstract class, interface, array class, primitive or void. The class has no nullary constructor. Such a constructor is required when a parameterized constructor is defined for the class.   InstantiationException Example Here is an example of an InstantiationException thrown when the Class. newInstance method is used to create an instance of a boolean: public class InstantiationExceptionExample { public static void main(String args) { try { Class clazz = boolean. class; clazz. newInstance; } catch (InstantiationException ie) { ie. printStackTrace; } catch (IllegalAccessException iae) { iae. printStackTrace; } } } Since boolean is a primitive data type, a new instance of it cannot be created using the Class. newInstance method, which can only construct objects for concrete classes. Running the above code throws the following exception: java. lang. InstantiationException: boolean at java. base/java. lang. Class. newInstance(Class. java:598) at InstantiationExceptionExample. main(InstantiationExceptionExample. java:5) Caused by: java. lang. NoSuchMethodException: boolean. at java. base/java. lang. Class. getConstructor0(Class. java:3427) at java. base/java. lang. Class. newInstance(Class. java:585)... --- ### The 8 Best Application Performance Monitoring (APM) Tools in 2025 > Learn what makes each tool stand out, their pros and cons, who they’re ideal for, and how they’re priced (including free plans or trials where available). - Published: 2025-04-17 - Modified: 2025-04-22 - URL: https://rollbar.com/blog/best-apm-tools/ - Categories: topics - Tags: APM Application Performance Monitoring (APM) tools are software platforms that help developers, DevOps engineers, and technical managers track the performance and health of their apps and infrastructure in real time. They collect telemetry data like response times, error rates, resource usage, and user behavior, visualize this data, and make it easier to detect performance issues, pinpoint root causes, and ensure a smooth user experience. ​ In short, they help teams be proactive rather than reactive. In this roundup, we’ll review eight of the best APM tools available today, covering a mix of SaaS platforms and open-source solutions. We’ll look at what makes each tool stand out, their pros and cons, who they’re ideal for, and how they’re priced (including free plans or trials where available). But first, let’s talk about how we evaluated these tools – in other words, what makes a great APM tool in the first place. What Makes a Great APM Tool? Not all monitoring tools are created equal. Here are some key criteria and features that distinguish a great APM tool from the rest of the pack: Comprehensive Monitoring: Full-stack visibility across application metrics, infrastructure health, and user experience User-Friendly Setup: Easy deployment with out-of-the-box instrumentation and intuitive interface Strong Integrations: Compatibility with your tech stack and other tools in your workflow Effective Alerting: Real-time monitoring with customizable alerts and root cause analysis Scalability: Ability to handle large systems without performance degradation Reliable Support: Strong community or vendor backing with regular updates Cost-Effective: Pricing model that provides... --- ### Michael "MC" McCullough - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=michael-mc-mccullough --- ### How to Fix the Empty Stack Exception in Java > The EmptyStackException is a runtime exception in Java that is thrown by methods in the Stack class to indicate that the stack is empty. - Published: 2022-03-28 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-emptystackexception/ - Categories: Code Tutorials, Java - Tags: java The EmptyStackException is a runtime exception in Java that is thrown by methods in the Stack class to indicate that the stack is empty. Since the EmptyStackException is an unchecked exception, it does not need to be declared in the throws clause of a method or constructor.   What Causes EmptyStackException The EmptyStackException is thrown when attempting to access elements in an empty stack in Java. For example, if the Stack. pop method is used to remove an object at the top of an empty stack, an EmptyStackException is thrown.   EmptyStackException Example Here is an example of an EmptyStackException thrown when an element is attempted to be popped from an empty stack: import java. util. Stack; public class EmptyStackExceptionExample { public static void main(String args) { Stack s = new Stack; s. pop; } } The Stack. pop method removes the element at the top of a stack. Since the above code attempts to use this method on an empty stack, it throws an EmptyStackException: Exception in thread "main" java. util. EmptyStackException at java. base/java. util. Stack. peek(Stack. java:101) at java. base/java. util. Stack. pop(Stack. java:83) at EmptyStackExceptionExample. main(EmptyStackExceptionExample. java:6)   How to Fix EmptyStackException The EmptyStackException can be avoided using a check to make sure that the stack is not empty before using methods such as Stack. pop or Stack. peek which could throw an EmptyStackException. The code in the earlier example can be updated to include this check: import java. util. Stack; public class EmptyStackExceptionExample { public... --- ### David Basoco - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=david-basoco --- ### Viniou's Story with Rollbar > We use Rollbar for all our error reporting. It's used by our engineering team to notify us of issues that arise and to help us debug them. It's really helpful in cutting through the noise and letting us know only the errors that we need to care about. - Published: 2025-04-16 - Modified: 2025-04-16 - URL: https://rollbar.com/blog/vininou-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Viniou is a web and mobile app that helps wine enthusiasts track, organize, and efficiently manage their vast wine collection 1. Can you introduce yourself, and tell us about your team or company? My name is Arnaud Cariou, and I’m the founder of Viniou, a web and mobile app designed to help wine enthusiasts manage their wine collections with ease. Viniou was born from a simple observation: it’s still surprisingly hard to keep track of what’s in your cellar, what should be opened, what needs to be restocked, or what’s been shared with friends. Our platform offers an intuitive and powerful way to organize bottles, optimize wine purchases, and follow the aging process over time. You can learn more here: https://www. viniou. co. uk 2. How are you using Rollbar? We use Rollbar for real-time error monitoring across both our . NET backend and our React Native mobile app. It allows us to detect issues as they occur, understand the context, and act quickly to deliver the best possible experience to our users. Since we handle personal data—especially users’ wine inventory—reliability is a top priority. Without Rollbar, we’d spend a lot more time chasing bugs manually, and we’d likely miss some critical problems. 3. What made you choose Rollbar? We chose Rollbar after evaluating several error tracking tools. What really made the difference was how easy it was to set up, the clarity of its interface, and how well it integrates into our workflow. The smart error grouping, detailed reports, and... --- ### Francesco Crippa - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=francesco-crippa --- ### How to Fix the Type Not Present Exception in Java > Java's TypeNotPresentException is thrown when the definition of a type, attempted to be accessed using a specified name, cannot be found. - Published: 2022-03-28 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-typenotpresentexception/ - Categories: Code Tutorials, Java - Tags: java The TypeNotPresentException is a runtime exception in Java that is thrown when an application attempts to access a type using a string that represents the name of the type, but the definition for the type with the specified name cannot be found. It differs from ClassNotFoundException as ClassNotFoundException is a checked exception, whereas TypeNotPresentException is unchecked. Since the TypeNotPresentException is an unchecked exception, it does not need to be declared in the throws clause of a method or constructor.   What Causes TypeNotPresentException The TypeNotPresentException is thrown when the definition of a type, attempted to be accessed using a specified name, cannot be found. The application attempts to access the type using a string that represents the name of the type, but no definition for the type with the specified string can be found. This exception can be thrown when undefined type variables are attempted to be accessed as well as when types (classes, interfaces or annotation types) are loaded. It can, in particular, be thrown by the API used to read annotations reflectively.   TypeNotPresentException Example Here's an example of a TypeNotPresentException thrown when a custom annotation contains an element that refers to a class that exists at compile-time but not at runtime. When this annotation is used by a class and read reflectively, a TypeNotPresentException is thrown. First, the custom annotation MyAnnotation is created. This annotation contains an element context that refers to the javax. xml. bind. JAXBContext class: import java. lang. annotation. Retention; import java. lang. annotation.... --- ### Anthony Tran - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=anthony-tran --- ### Docfield's Story with Rollbar > We use Rollbar for all our error reporting. It's used by our engineering team to notify us of issues that arise and to help us debug them. It's really helpful in cutting through the noise and letting us know only the errors that we need to care about. - Published: 2025-04-01 - Modified: 2025-04-01 - URL: https://rollbar.com/blog/docfield-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Docfield creates, signs, and manages digital contracts in a single, collaborative platform.   1. Can you introduce yourself, and tell us about your team or company? Docfield is a LegalTech start-up developing acontract lifecycle managementsolution for customers across several industries. We offer some of the most comprehensive contract creation tools in the market, and as the founder’s associate it is my goal to help as many customers as possible experience the benefits. 2. How are you using Rollbar? As a scale-up company it can be difficult to compete with large incumbents. A key differentiator for us is that we can work very closely with each customer and deliver a tailored customer experience. Leveraging Rollbar in this process is a no-brainer.  Rollbar integrates seamlessly with Rails, so our backend team relies on Rollbar to automatically detect and report issues across all our environments. This eliminates the need for users to submit bug tickets manually. We've integrated Rollbar with Slack for real-time error notifications, GitHub for linking errors to specific commits, and Notion for centralised documentation and tracking. This setup enables our product team to prioritize issues effectively based on the insights provided by Rollbar. 3. What made you choose Rollbar? We evaluated several error monitoring tools, including Sentry, Raygun, and Datadog. Rollbar stood out with head and shoulders above the rest due to its user-friendly interface, advanced diagnostic capabilities, and overall cost-effectiveness.  Unlike some alternatives that bundle additional features at a higher price point, Rollbar focuses on delivering error monitoring without... --- ### Kay Xiong - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=kay-xiong --- ### How to Resolve the Illegal Format Conversion Exception in Java > Java's IllegalFormatConversionException is an unchecked exception thrown when an incompatible type argument is passed to a format specifier. - Published: 2022-03-28 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-illegal-format-conversion-exception/ - Categories: Code Tutorials, Java - Tags: java The IllegalFormatConversionException is an unchecked exception in Java that occurs when the argument that corresponds to a format specifier is of an incompatible type. Since the IllegalFormatConversionException is thrown at runtime, it does not need to be declared in the throws clause of a method or constructor.   What Causes the Illegal Format Conversion Exception? The IllegalFormatConversionException is thrown when an incompatible type argument is passed to a format specifier. For example, the %d format specifier requires an integer to be passed to it, and if a String is passed instead, an IllegalFormatConversionException is thrown.   Examples of the IllegalFormat Conversion Exception Here is an example of an IllegalFormatConversionException thrown when a String is passed to a format specifier that expects an integer: public class IllegalFormatConversionExceptionExample { public static void main(String args) { System. out. printf("%d", "Hello World"); } } Since the %d format specifier expects an integer and the actual value passed to it was of type String, running the above code throws the IllegalFormatConversionException: Exception in thread "main" java. util. IllegalFormatConversionException: d ! = java. lang. String at java. base/java. util. Formatter$FormatSpecifier. failConversion(Formatter. java:4426) at java. base/java. util. Formatter$FormatSpecifier. printInteger(Formatter. java:2938) at java. base/java. util. Formatter$FormatSpecifier. print(Formatter. java:2892) at java. base/java. util. Formatter. format(Formatter. java:2673) at java. base/java. io. PrintStream. format(PrintStream. java:1209) at java. base/java. io. PrintStream. printf(PrintStream. java:1105) at IllegalFormatConversionExceptionExample. main(IllegalFormatConversionExceptionExample. java:3)   How to Fix IllegalFormatConversionException To avoid the IllegalFormatConversionException, it should be ensured that the argument passed to a format specifier is of the correct... --- ### Sharrin Fuller - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=sharrin-fuller --- ### Optimizing Item Search: How Rollbar Engineered Faster, More Capable Search > Searching through error data efficiently is critical for developers using monitoring tools. At Rollbar, we recently completed a significant overhaul of our Item Search backend. The previous system faced performance limitations and constraints on search capabilities. This post details the technical challenges, the architectural changes we implemented, and the resulting performance gains. - Published: 2025-03-31 - Modified: 2025-03-31 - URL: https://rollbar.com/blog/how-rollbar-engineered-faster-search/ - Categories: Engineering, product, topics - Tags: behind-the-scenes, engineering, how to Searching through error data efficiently is critical for developers using monitoring tools. At Rollbar, we recently completed a significant overhaul of our Item Search backend. The previous system faced performance limitations and constraints on search capabilities. This post details the technical challenges, the architectural changes we implemented, and the resulting performance gains. The Starting Point: Limitations of the Existing Architecture Our previous item search relied heavily on our primary MySQL database for most filtering and sorting operations, with Elasticsearch used for fulltext search on item titles. This architecture presented several challenges: Performance Bottlenecks: Complex MySQL queries combining item and occurrence filters often struggled. Occurrence data, being voluminous, is difficult to index effectively in a traditional RDBMS for arbitrary filtering. Many searches, especially those involving occurrence attributes or non-default time ranges, exceeded the 60-second timeout threshold in our database. Impact of Core Features (like Merging): Rollbar allows merging similar items together. Rollbar's merge operation is designed to be O(1), independent of occurrence count. Supporting this fast merge while correctly associating occurrences with their current parent item required complex logic within MySQL, involving self-joins on the item table. This made the queries difficult for MySQL to optimize, especially when combined with other filters. Data Propagation Delays: Changes in item relationships (like merges) were propagated from MySQL to our analytics backend (used for some auxiliary data lookups) via a CDC pipeline (Debezium) feeding a Clickhouse dictionary. This dictionary refreshed on a schedule, about every 20 minutes. This meant merges performed by users wouldn't... --- ### Artur Moczulski - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=artur-moczulski --- ### Andrey Kornich - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=andrey-kornich --- ### Reduce Debugging Time With Rollbar > Developers want to work on new features. They want to fix bugs that occur, but they don’t want to spend hours searching for the problem. - Published: 2022-03-10 - Modified: 2022-03-10 - URL: https://rollbar.com/blog/reduce-debugging-time-with-rollbar/ - Categories: company - Tags: continuous-delivery Development time is precious. Developers are highly-skilled and highly-paid, and so naturally you want to make sure that they are as productive as possible. Many organizations are starting to hire Developer Experience Engineers to make sure that their developers are using the best tools and processes possible. To make developers more productive, the first step is to figure out exactly what developers are actually doing. Then, we need to figure out what we want them to do. Examining Developer Time Developers' time can broadly be divided into two areas: Time coding and time not coding. It seems pretty obvious that you want to maximize the amount of time that your developers are coding and reduce the time they are not. Coding time can actually be broken down further into feature development and maintenance. Feature development – the process of producing new features and value for the customer – is the most desirable thing that a developer can do. Maintenance work – bug fixing – is a bit of a mixed bag. You want your developers to fix bugs, sure, but you don’t want them to have to do it. In other words, bugs are bad and a drag on the team, preventing their coding time from being spent on new feature work. Non-coding Time And then there is non-coding time, and it, too, is a mixed bag. Some of it is productive time – code reviews, mentoring, training, creating issues and bug reports, etc. I like to call this meta-coding... --- ### Mary Lee Olson - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=mary-lee-olson --- ### How to Fix Python TypeError: 'int' object is not subscriptable > Learn why Python prevents accessing parts of an integer using []. This guide explains the error and shows how to work with subscriptable types correctly. - Published: 2025-03-30 - Modified: 2025-03-30 - URL: https://rollbar.com/blog/how-to-fix-int-object-is-not-subscriptable-python/ - Categories: Code Tutorials, Python - Tags: Python If you're working with Python, you've likely encountered the TypeError: 'int' object is not subscriptable. This is a common error, especially for beginners or when dealing with dynamic data. It fundamentally signals a misunderstanding between what your code expects a variable to be and what it actually is. What Does "'int' object is not subscriptable" Mean? Let's break down the terms: int: This refers to the integer data type in Python, which represents whole numbers (e. g. , 5, -10, 0). Subscriptable: An object is "subscriptable" if you can access its internal items using square brackets . Think of containers or sequences like lists (my_list), tuples (my_tuple), strings (my_string), and dictionaries (my_dict). These objects hold multiple elements or key-value pairs that can be "subscribed" or accessed via an index or key. Not Subscriptable: The error message tells you that integers (int) do not support this access method. Why isn't an integer subscriptable? An integer represents a single, indivisible numerical value. It doesn't contain other items. Trying to access the "first element" of the number 5 (like 5) doesn't make sense conceptually in Python, hence the TypeError. You're treating a single value as if it were a sequence. Common Scenarios Leading to the Error This error typically arises when you attempt indexing or slicing on a variable that you thought was a list, tuple, string, or dictionary, but which actually holds an integer at that moment. Here are a couple of common ways this happens: Accidental Variable Reassignment: You might have... --- ### Jessica Hsieh - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=jessica-hsieh --- ### Rollbar Certified for SOC 2 Type II and SOC 3 - Published: 2022-03-08 - Modified: 2022-03-08 - URL: https://rollbar.com/blog/rollbar-certified-for-soc-2-type-ii-and-soc-3/ - Categories: company, security We are pleased to announce that an independent service auditor has certified that Rollbar meets SOC 2 Type II criteria and also SOC3 criteria. This extends our security, data privacy, and compliance certifications. Last year Rollbar was certified to meet SOC Type I to go with our existing ISO 27001 certification. The ISO 27001 standard promotes continuous improvement of security processes and demonstrates our commitment to customer support, customer excellence, and data privacy and security. By moving on to achieve the SOC 2 Type II certification we demonstrate our commitment to these standards. SOC 3 reports are based on the Auditing Standards Board of the American Institute of Certified Public Accountants' (AICPA) existing Trust Services Criteria (TSC). The purpose of the report is to provide a publicly facing version of the SOC 2 attestation report for customers who need assurances about service organization's controls relevant to security, availability, processing integrity, confidentiality, and privacy, but do not require a full SOC 2 report. SOC 3 reports can be freely distributed because they are general use reports. You can read Rollbar’s SOC 3 report here. A SOC 3 report contains a written assertion by service organization management regarding control effectiveness to achieve commitments based on the applicable trust services criteria, as well as service auditor's opinion on whether management's assertion is stated fairly. To achieve these standards we have to prove our processes, elevate the level of our security and compliance controls and demonstrate that our access control, encryption, security testing, penetration... --- ### Letania Ferreira - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=letania-ferreira --- ### Vijay Selvaraj - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=vijay-selvaraj --- ### The Art of Throwing Exceptions in C# (or How to Fail Gracefully) > A senior developer's sarcastic guide to C# exceptions. Learn to create meaningful error messages, preserve stack traces, and implement custom exception types. - Published: 2025-03-27 - Modified: 2025-03-27 - URL: https://rollbar.com/blog/throw-exceptions-c-sharp/ - Categories: C#, Code Tutorials - Tags: csharp Exceptions in C# are like fire alarms – they're loud, disruptive, and absolutely essential. And much like fire alarms, most beginners either ignore them or disconnect the batteries. Let me explain what we're dealing with here. In the C# world, exceptions are specialized objects that capture all the details when something goes wrong in your code. They're not just error messages – they're fully-fledged objects that inherit from the System. Exception class. They give you a structured way to identify, communicate, and handle unexpected conditions, allowing your program to either recover gracefully or at least fail with dignity instead of crashing in a blaze of cryptic error messages. Look, I get it. You just want your code to work, and exceptions seem like that annoying colleague who's always pointing out problems in your masterpiece. But trust me on this – learning to properly throw and handle exceptions will make you a better developer, save your future self countless headaches, and maybe even impress that senior engineer who never seems to like anyone's code. In this post, you'll learn the basics of exceptions in C#, how to throw them properly, when to create your own, and the best practices that separate the professionals from the "it works on my machine" crowd. The Basics of Exceptions Let's clear something up right away: exceptions aren't just "errors. " They're sophisticated objects designed to provide detailed information about what went wrong, where it went wrong, and sometimes even why it went wrong (though that... --- ### Renáta Tamási-Irsai - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=renata-tamasi-irsai --- ### Slack Oauth 2.0 system is available for your projects > NoSuchFieldError in Java is thrown when an application accesses or modifies a field of an object/class that no longer contains that field. - Published: 2022-03-03 - Modified: 2022-03-03 - URL: https://rollbar.com/blog/slack-oauth-2-0-system-is-available-for-your-projects/ - Categories: product - Tags: integrations, Slack Slack Oauth 2. 0 system is available for your projects Rollbar is adopting the updated Oauth 2. 0 flow created by Slack. Slack has revised their access tokens and now allows the Rollbar Slack bot to have its own credentials. This replaces the use of member’s credentials. What does this mean? You don’t have to switchover, but you should consider the benefits of migrating. To complete the migration, you must add Rollbar Slack bot to any channels that you'd like to post alerts. What are the benefits of Bot Tokens on Slack? Slack integration will use a single bot token, so there will not be any confusion regarding switching user access tokens. You will have the chance to manually enter the appropriate Slack channel via a text input box, which will eliminate the long load times of a drop down for channel selection when configuring Slack notifications. When team members leave your Slack workspace, their “owned” tokens do not need to be swapped out as they would today. How to migrate to Slack Oauth 2. 0? We recommend you complete the migration process to ensure continued support of notifications. To start the migration process for the new Slack Oauth 2. 0 version, you will need to go to your Account Settings and follow the steps in Rollbar. Go to Settings, and select Slack, under Notifications. On the Manage Account Slack Settings page, begin the migration process by clicking on the Add to Slack button. On the upper left corner, select... --- ### Árpád Tamási - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=arpad-tamasi --- ### Dániel Poroszkai - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=daniel-poroszkai --- ### How to Fix Python’s “List Index Out of Range” Error in For Loops > This error means Python can't find the list position you're asking for. Fix it with enumerate(), proper length checks, or by using -1 to safely get the last item. - Published: 2025-03-25 - Modified: 2025-03-25 - URL: https://rollbar.com/blog/how-to-fix-python-list-index-out-of-range-error-in-for-loops/ - Categories: Code Tutorials, Python - Tags: Python The List Index Out of Range error often occurs when working with lists and for loops. You see, in Python, when you attempt to access an element using an index that lies outside the valid index range of the list, you're essentially telling the program to fetch something that isn't there, resulting in this common error. For example, if you have a list with 3 elements: my_list = The valid indices for this list are 0, 1, and 2 (since Python uses zero-based indexing). If you try to access my_list or any index outside this range, Python will raise this error. It's the interpreter's way of signaling that there's a misalignment in your expectations of the list's size and the actual indices present. Let’s take a closer look at common ways a for loop can cause List Index Out of Range and how to either avoid it completely or gracefully handle this error when it crops up. What causes the “List Index Out of Range” error? As Python uses zero-based indexing, when you try to access an element at an index less than 0 or greater than or equal to the list’s length, Python tells you via this error that the specified index is out of the permissible bounds of the list's length. Here are some common scenarios when this error occurs: Incorrect loop indexing If an index used in a loop across a range of indices is greater than the list's length, the error IndexError: list Index Out of... --- ### András Horváth - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=andras-horvath --- ### How to Resolve the NoSuchFieldError in Java > NoSuchFieldError in Java is thrown when an application accesses or modifies a field of an object/class that no longer contains that field. - Published: 2022-02-25 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-nosuchfielderror/ - Categories: Code Tutorials, Java - Tags: java The NoSuchFieldError is an error in Java that occurs when a specified field does not exist. It is thrown when an application attempts to access or modify a field of an object or a static field of a class but the object or class no longer contains that field. The NoSuchFieldError only occurs during runtime if the definition of a class has changed incompatibly. Since it is thrown at runtime, it does not need to be declared in the throws clause of a method or constructor.   What Causes NoSuchFieldError The NoSuchFieldError error occurs if an application tries to access or modify a specified field of an object, and the object no longer has that field. This can occur if the definition of a class changes incompatibly after compilation. In case code is only partially recompiled, old code can exist that references a field which no longer exists in the recompiled classes, causing the NoSuchFieldError.   NoSuchFieldError Example Here is an example of a NoSuchFieldError thrown when a field that does not exist is referenced. Here’s a class MyClass that contains a static variable msg: public class MyClass { public static String msg = "Hello World"; } Here’s a class NoSuchFieldErrorExample that refers to the static variable str from MyClass and prints out its value: public class NoSuchFieldErrorExample { public static void main(String args) { System. out. println(MyClass. msg); } } Running the above code produces the correct output as expected: Hello World Now, if the variable msg is removed... --- ### How to Throw Exceptions in C++ Constructors Correctly > Constructors are weird when it comes to error handling. Why? Because unlike regular functions, they don't have a return value. - Published: 2025-03-17 - Modified: 2025-03-17 - URL: https://rollbar.com/blog/throw-exceptions-in-cpp-constructors/ - Categories: C++, Code Tutorials - Tags: c++ In C++, when you create a new object (like a database connection or a game character), a special function called a constructor runs automatically to set up that object. Think of constructors as the "birth" process for objects—they allocate resources, set initial values, and make sure the object starts life in a valid state. But what happens when something goes wrong during this setup? Maybe a file can't be opened, a network connection fails, or invalid data is provided. Since constructors can't return error codes like regular functions, they need another way to signal problems—this is where exceptions come in. Constructor exceptions are like emergency abort buttons that stop an object from being created when something critical fails. When a constructor throws an exception, it tells the program, "I couldn't properly initialize this object, so don't use it at all. " The partially built object gets automatically destroyed, preventing what we call "zombie objects"—objects that appear normal but are broken inside and can corrupt your program. This guide will show you, step by step, how to use exceptions in constructors effectively. You'll see examples that demonstrate why this technique is so important and by the end, you'll understand how to ensure your objects are either created properly or not created at all—a fundamental skill that elevates your C++ from basic to production-ready. Why Throw Exceptions in Constructors? The Constructor's Dilemma Let's say you're building a DatabaseConnection class. The constructor needs to establish a connection, and a million things could go... --- ### How to Fix Unsupported major.minor Version 52.0 Error in Java > Java's unsupported major.minor version error happens when a class is compiled using a higher version JDK but executed on a lower version JRE. - Published: 2022-02-22 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-unsupported-major-minor-version-52-0/ - Categories: Code Tutorials, Java - Tags: java The unsupported major. minor version error is thrown in Java when a class is compiled using a higher version of the Java Development Kit (JDK) but executed on a lower version of the Java Runtime Environment (JRE). The exact cause is printed on the version e. g. in the case of major. minor version 52. 0, the class is compiled using JDK 8 since major version 52 corresponds to Java SE 8. This error can usually be fixed by running the application on the same (or higher) JRE version as the JDK.   What Causes Unsupported major. minor Version Error The unsupported major. minor version error occurs due to a Java version mismatch. When a Java project is compiled on a higher version of Java (e. g. JDK 1. 8) but executed on a lower version (e. g. JRE 1. 7), this error is thrown. Java is backwards compatible, which means a Java class file or binary (JAR file) compiled on a lower version of Java can be executed on a higher version. However, the opposite of this is untrue, i. e. a class compiled on a higher version of Java cannot be executed on a lower version. This is because the higher version usually contains features that are not supported by the lower version on which the application executes. When this happens, the unsupported major. minor version error occurs.   Unsupported major. minor Version Error Example Here is an example of an unsupported major. minor version error thrown when... --- ### Efficient Error Triage: Reducing Debugging Time > Efficiently triaging issues can drastically reduce downtime, improve user experience, and keep your development team focused on innovation. Rollbar offers powerful features designed to help teams streamline error triage and resolve issues quickly. Here's how you can master the triage process and leverage Rollbar to reduce time spent debugging. - Published: 2025-03-12 - Modified: 2025-03-12 - URL: https://rollbar.com/blog/error-triage/ - Categories: topics - Tags: debugging, error-handling, exception monitoring, triage When software errors strike, developers must act fast. Efficiently triaging issues can drastically reduce downtime, improve user experience, and keep your development team focused on innovation. Rollbar offers powerful features designed to help teams streamline error triage and resolve issues quickly. Here's how you can master the triage process and leverage Rollbar to reduce time spent debugging. Step 1: Identify and Prioritize Critical Errors Not all errors are equal. To efficiently manage errors, developers need to focus on those with the highest impact first. Rollbar Features for Prioritization: Real-time Alerts: Rollbar sends instant notifications via Slack, Microsoft Teams, PagerDuty, and other tools to ensure critical errors are surfaced immediately. Error Grouping: Rollbar intelligently groups errors based on root causes, reducing noise and helping you identify the most impactful issues first. Advanced Search: Rollbar allows you to search complex payloads across all services and projects. Step 2: Gather Contextual Information Once you've identified a key issue, having the right data to understand its context is crucial for efficient triage. Rollbar Features for Context: Detailed Error Reports: Each error report includes stack traces, request parameters, affected users and deployment details. Telemetry: Rollbar records key browser and app events leading up to an error, offering developers valuable insights into what happened just before failure. Step 3: Assign Ownership and Take Action Ensuring accountability is key to resolving errors efficiently. Assigning ownership reduces confusion and ensures issues are resolved promptly. Rollbar Features for Ownership: Team and User Assignment: Rollbar can assign errors to the... --- ### How to Resolve the SecurityException in Java > The SecurityException in Java is a runtime exception thrown by the security manager to indicate a security violation. - Published: 2022-02-14 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-securityexception/ - Categories: Code Tutorials, Java - Tags: java The SecurityException is a runtime exception in Java that is thrown by the security manager to indicate a security violation. The SecurityException is an unchecked exception and does not need to be declared in the throws clause of a method or constructor.   What Causes SecurityException The SecurityException indicates that a security violation occurred during the execution of an application. Therefore, execution cannot be further continued and has to be terminated. An example scenario of a SecurityException is using a package name for a class in code that is already defined in a signed JAR on the classpath.   SecurityException Example Here is an example of a SecurityException thrown when using a package name that overlaps with the package name of a signed JAR file present in the classpath: package com. rollbar. test; public class SecurityExceptionExample { public static void main(String args) { System. out. println("Hello World"); MyObject obj = new MyObject; } } In this example, the package com. rollbar. test is used for the SecurityExceptionExample class. However, this package name is already present in a signed JAR (which contains the MyObject class) in the application classpath. This causes the JVM to throw a SecurityException when the above code is executed: Hello World Exception in thread "main" java. lang. SecurityException: class "com. rollbar. test. MyObject"'s signer information does not match signer information of other classes in the same package at java. base/java. lang. ClassLoader. checkCerts(ClassLoader. java:1151) at java. base/java. lang. ClassLoader. preDefineClass(ClassLoader. java:906) at java. base/java. lang. ClassLoader. defineClass(ClassLoader.... --- ### Handling the ArithmeticException Runtime Exception in Java > The ArithmeticException in Java is thrown by the JVM when an arithmetic operation creates an exceptional condition. - Published: 2022-02-10 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-arithmeticexception/ - Categories: Code Tutorials, Java - Tags: exception monitoring, java Introduction Arithmetic is at the core of every program and every programming language in existence. From integer and floating-point arithmetic all the way down to bitwise and pointer arithmetic, these mathematical operations translate into machine instructions which execute with thundering speeds and manipulate the state of software applications used across all sorts of different domains. Most modern programming languages have a dedicated category of errors or exceptions for dealing with all the peculiar cases and problematic conditions that may arise while performing these arithmetic operations.   ArithmeticException & Why it is an Unchecked Exception In Java, any arithmetic operation which creates an exceptional condition makes the Java Virtual Machine throw the ArithmeticException exception . Generally speaking, anything that a scientific calculator isn’t able to process would throw this exception. At a lower level, certain rules and constraints are imposed by the programming language itself, so if any of these are broken, the ArithmeticException exception will emerge. ArithmeticException inherits from the RuntimeException class which means it is an unchecked, runtime exception . This is due to a language design decision made to reduce the exception handling clutter that would otherwise arise with the high frequency of arithmetic operations, but more importantly because throwing and propagating arithmetic exceptions wouldn’t make sense for the majority of cases, which in practice are the result of logical programming errors that need to be refactored, rather than exceptions that need to be handled. Consequently, Java doesn’t require ArithmeticException instances to be checked and will only let... --- ### Exciting Security Enhancements: Stronger, Smarter Access Tokens - Published: 2025-03-04 - Modified: 2025-03-04 - URL: https://rollbar.com/blog/smarter-access-tokens/ - Categories: product - Tags: security, tokens Security has been our top priority over the last year, and we’re rolling out major improvements to account and project access tokens to bring Rollbar up to today’s security standards. Newly created tokens will be stored in an encrypted format, inaccessible via the UI or API after being created, and you will be able to manually encrypt your existing tokens. This change to token storage will give you more control over who can submit, access or update data in your system. How are we improving token security? Stronger Protection – Newly created tokens will now be encrypted and will no longer be accessible via the UI or API after creation. When you generate a token, be sure to copy and store it securely - once you close the create token window, the token will be securely encrypted with no way to view it again. Flexible Security Options – Choose between 512-bit tokens for maximum security or 128-bit tokens if you need to maintain compatibility with existing token lengths. Updated Scope Rules – To enhance security, for newly created tokens certain token scopes must now be separate - post_server_item and post_client_item can no longer be combined with other scopes. Your current tokens can remain in their current state, but we recommend that you create new tokens with separate scopes. Encrypt Existing Tokens - You can immediately encrypt your tokens without having to make any changes to the tokens themselves or your code - the tokens will be updated to the new... --- ### Handling the ClassCastException Runtime Exception in Java > The ClassCastException in Java happens when the JVM tries to cast an object to a class (or in some instances, an interface) and fails. - Published: 2022-02-10 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-classcastexception/ - Categories: Code Tutorials, Java - Tags: exception monitoring, java Introduction to Runtime Exceptions Runtime exceptions are exceptions which can not be checked at compile time. In Java, there are a myriad of classes derived from the RuntimeException class , all of which represent unchecked exceptions that need to be carefully considered and managed. Despite being less serious and critical than the unchecked runtime errors , these exceptions can still be very problematic and cause unexpected issues at runtime, especially if necessary precautions aren’t taken and relevant exception handling mechanisms aren’t put in place.   What is ClassCastException and When does it Happen? As its name implies, ClassCastException is an exception that happens when the JVM tries to cast an object to a class (or in some instances, an interface) and fails. This relates to explicit type casting and the reason the cast fails can be traced to an attempt at downcasting an object to a class of which it is not an instance, or to an interface which it does not implement. ClassCastException is a subclass of the RuntimeException class which means it is an unchecked, runtime exception . This exception can not be checked at compile-time because the compiler has no way of knowing whether the object is actually an instance of the target subclass, or if it is an instance of a subclass that implements the target interface. Consequently, if either of these scenarios is encountered at runtime, Java will throw the ClassCastException exception. Parent parent = new Child; /*... */ Child c = (Child) parent; //... --- ### Throwing Exceptions in C++ > Exceptions provide a formal and well-defined way for detecting errors and to pass the information up the call stack. - Published: 2025-02-28 - Modified: 2025-03-01 - URL: https://rollbar.com/blog/error-exceptions-in-c/ - Categories: C++, Code Tutorials - Tags: c++ Imagine spending months developing a C++ application, only to have users report that it crashes whenever they enter unexpected input or when network connections fail. This common scenario happens when programs lack proper error handling. The good news is that C++ provides a built-in mechanism called exceptions that helps your code anticipate and respond to problems rather than simply crashing. In this comprehensive guide, you'll learn how to use exceptions to create resilient applications that can detect errors, communicate what went wrong, and recover gracefully - skills that separate amateur code from professional-grade applications. Why Use Exceptions in C++? Exceptions provide a way to react to exceptional circumstances in programs by transferring control to special functions called handlers. Throwing exceptions are preferred in modern C++ over traditional error handling for the following reasons: Automatic resource cleanup — C++ destroys all objects in scope after an exception occurs, preventing resource leaks Separation of concerns — Exceptions separate error-handling logic from the main algorithm, improving code readability Flexible error handling — Errors can be handled at the appropriate level of abstraction, not necessarily where they occur Type-based categorization — C++ error types can be organized in hierarchies, making it easier to handle related errors consistently Cleaner code — They eliminate the need to check return values after every function call These advantages make exceptions particularly valuable in large-scale projects where code clarity and maintainability are essential. C++ try catch and throw Exception handling in C++ is done using three keywords: try, catch... --- ### Java Exceptions Hierarchy Explained > The tree diagram below shows the standard exception and error classes defined in Java, organized in the Java exceptions hierarchy. - Published: 2025-02-28 - Modified: 2025-03-01 - URL: https://rollbar.com/blog/java-exceptions-hierarchy-explained/ - Categories: topics - Tags: java In Java “an event that occurs during the execution of a program that disrupts the normal flow of instructions” is called an exception. This is generally an unexpected or unwanted event which can occur either at compile-time or run-time in application code. Java exceptions can be of several types and all exception types are organized in a fundamental hierarchy. Understanding this hierarchy is crucial for implementing robust error handling strategies in production. Java Exceptions Hierarchy The class at the top of the exception class hierarchy is the Throwable class, which is a direct subclass of the Object class. Throwable has two direct subclasses - Exception and Error. The diagram below shows the standard exception and error classes defined in Java, organized in the Java exceptions hierarchy: Figure 1: Exceptions hierarchy in Java The Exception class is used for exception conditions that the application may need to handle. Examples of exceptions include IllegalArgumentException, ClassNotFoundException and NullPointerException. The Error class is used to indicate a more serious problem in the architecture and should not be handled in the application code. Examples of errors include InternalError, OutOfMemoryError and AssertionError. Exceptions are further subdivided into checked (compile-time) and unchecked (run-time) exceptions. All subclasses of RuntimeException are unchecked exceptions, whereas all subclasses of Exception besides RuntimeException are checked exceptions. Java Errors vs Exceptions According to the official documentation, an error “indicates serious problems that a reasonable application should not try to catch. ” This refers to problems that the application can not recover from -... --- ### Magdalena Dzindzisz - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=magdalena-dzindzisz --- ### Ádám Németh - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=adam-nemeth --- ### How to Handle String Index Out Of Bounds Exception in Java > The StringOutOfBoundsException in Java that occurs when accessing a string at an index which is negative/greater than the string length. - Published: 2022-02-10 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-stringoutofboundsexception/ - Categories: Code Tutorials, Java - Tags: java The StringIndexOutOfBoundsException is an unchecked exception in Java that occurs when an attempt is made to access the character of a string at an index which is either negative or greater than the length of the string. For some methods of the String class, such as the charAt method, this exception is also thrown when the index is equal to the size of the string. Since the StringIndexOutOfBoundsException is an unchecked exception, it does not need to be declared in the throws clause of a method or constructor. It can be handled in code using a try-catch block.   What Causes StringIndexOutOfBoundsException A Java string is a collection of characters which has a range of . When an attempt is made to access the characters with limits that fall outside the range of the string, the StringIndexOutOfBoundsException is thrown. Therefore, this exception occurs when the index of a character does not exist in the string. Some methods that throw a StringIndexOutOfBoundsException with invalid specified arguments are: String. charAt(int index) - Returns the character at the specified index. The index can have a range of . If the specified index does not belong to this range, a StringIndexOutOfBoundsException occurs. CharSequence. subSequence(int beginIndex, int endIndex) - Returns a new character sequence based on specified arguments. The StringIndexOutOfBoundsException is thrown if any index is negative, the endIndex is greater than the length of the string or the beginIndex is greater than the endIndex. String. substring(int beginIndex) - Returns a substring beginning with the... --- ### Sunset of Bitbucket Web Frame > Sunset of BitBucket Web Frame - Published: 2025-02-25 - Modified: 2025-02-25 - URL: https://rollbar.com/blog/sunset-bitbucket-web-frame/ - Categories: product, topics - Tags: atlassian, bitbucket Sunset of BitBucket Web Frame We wanted to let you know that we’ll be retiring the Atlassian Rollbar Bitbucket Web Frame application on March 15, 2025. After that date, the app will be archived, and it will no longer be available for download from the Atlassian Marketplace. We want to reassure you that this will not impact our internal code-context integration with Bitbucket. The sunset only applies to the web frame application in the Atlassian marketplace. The Rollbar integration with Bitbucket for code context, code versions, and issues remains unaffected, and you can continue to rely on it for seamless error tracking and debugging. If you have any questions or concerns, feel free to contact our support team. We’re here to help, and we appreciate your continued support. Thank you for being part of the Rollbar community Error Monitoring at Scale Managing errors and exceptions in your code is challenging. It can make deploying production code an unnerving experience. Being able to track, analyze, and manage errors in real-time can help you to proceed with more confidence. Rollbar automates error monitoring and triaging, making fixing errors easier than ever. Sign Up Today! --- ### Zita Lőrinczi - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=zita-lorinczi --- ### Walt Jones - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=walt-jones --- ### How to Handle the NumberFormat Exception in Java > The NumberFormatException in Java is thrown when it is not possible to convert a string to a numeric type (e.g. int, float). - Published: 2022-02-10 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-numberformatexception/ - Categories: Code Tutorials, Java - Tags: java The NumberFormatException is an unchecked exception in Java that occurs when an attempt is made to convert a string with an incorrect format to a numeric value. Therefore, this exception is thrown when it is not possible to convert a string to a numeric type (e. g. int, float). For example, this exception occurs if a string is attempted to be parsed to an integer but the string contains a boolean value. Since the NumberFormatException is an unchecked exception, it does not need to be declared in the throws clause of a method or constructor. It can be handled in code using a try-catch block.   What Causes NumberFormatException There can be various cases related to improper string format for conversion to numeric values. Some of them are: Null input string Integer. parseInt(null); Empty input string Integer. parseInt(""); Input string with leading/trailing whitespaces Integer myInt = new Integer(" 123 "); Input string with inappropriate symbols Float. parseFloat("1,234"); Input string with non-numeric data Integer. parseInt("Twenty Two"); Alphanumeric input string Integer. parseInt("Twenty 2"); Input string exceeding the range of the target data type Integer. parseInt("12345678901"); Mismatch of data type between input string and the target data type Integer. parseInt("12. 34");   NumberFormatException Example Here is an example of a NumberFormatException thrown when attempting to convert an alphanumeric string to an integer: public class NumberFormatExceptionExample { public static void main(String args) { int a = Integer. parseInt("1a"); System. out. println(a); } } In this example, a string containing both numbers and characters is... --- ### How to Fix the "Unexpected End of zlib Input Stream" Error > Improve your decompression process. Learn how to handle truncated data, corrupted streams, and flawed logic with actionable code examples. - Published: 2025-02-24 - Modified: 2025-02-24 - URL: https://rollbar.com/blog/unexpected-end-of-zlib-input-stream/ - Categories: Code Tutorials, Python - Tags: Python The error message "unexpected end of zlib input stream" means that the zlib library, while trying to decompress data, reached the end of the input stream sooner than expected. Basically, zlib anticipated more data (or proper termination) to decompress the stream, but it didn't find it. This could be due to a few reasons, such as the data being incomplete, corrupted, or even because of mistakes in how the data stream was handled in the code. I’ll break down these three most common causes and provide a code example for each one to illustrate both the problem and the remedy. 1. Truncated or Incomplete Data The Cause A truncated or incomplete data stream is the most common culprit. It might occur during file transfers, network transmission, or due to a file getting corrupted during saving. Solution Ensure that the complete compressed data is available before attempting decompression. Adding validation steps (like checking the file size or using checksums) can help detect incomplete data early. Also, implementing proper error handling around your decompression code can prevent unexpected crashes and allow you to gracefully notify the user or retry the operation. Example Problem import zlib # Compress original data original_data = b'This is some data that will be compressed. ' compressed_data = zlib. compress(original_data) # Simulate a truncated stream by only taking part of the compressed data truncated_data = compressed_data try: # Attempt to decompress truncated data decompressed_data = zlib. decompress(truncated_data) except zlib. error as e: print("Error during decompression (likely truncated data):",... --- ### Nellie Sisti - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=nellie-sisti --- ### Expanded Search: Nearly All Standard Fields Are Now Searchable > We’re excited to share some great news about our Related Tab feature! We’ve listened to your feedback and made big improvements to help you manage and investigate your items more easily. The Related Tab is a helpful tool that shows you other items related to the one you’re looking at. This makes it easier to see if the same issue is happening in different parts of your code base or if there are similar items that might be connected. Knowing this can help you understand if a problem is widespread or if there are other occurrences that could help you debug it quicker. - Published: 2025-02-04 - Modified: 2025-02-06 - URL: https://rollbar.com/blog/expanded-search/ - Categories: product - Tags: Usage Notifications Following our recent updates on faster item search and searching within custom data fields, we’re excited to announce another major improvement: nearly all standard data fields within Rollbar are now indexed and searchable! What's new? 50+ additional fields are now available for search, expanding the ways you can filter and analyze your data. Previously unsearchable fields, like host, are now fully indexed, resolving past limitations. Faster and more accurate search performance, building on our recent enhancements. Custom fields remain fully searchable, allowing for even greater flexibility. With these updates, you can search using a wider range of fields, get more precise results, and experience faster response times. Newly Searchable Fields & Key Highlights The full list of available search fields can be found in our Searchable Fields Documentation — newly indexed fields are marked there with an asterisk (*). A few key additions include: UUID – Search for a specific item by its unique identifier. message_body & request_body – Find errors based on detailed message content. Additionally, when you apply a search, the statistics on the Item List page (such as count, unique IPs, and trends over time) now reflect only the occurrences that match your search criteria. Previously, these statistics counted all occurrences within matching items, making results less precise. Unlocking New Use Cases With expanded search capabilities, improved speed, and enhanced accuracy, several highly requested use cases are now easier to achieve: Find the top errors affecting a specific URL or route name Filter errors based on custom... --- ### Vince Power - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=vince-power --- ### Enhanced Search: Key/Value Searching Now Available for Custom Fields > We’re excited to share some great news about our Related Tab feature! We’ve listened to your feedback and made big improvements to help you manage and investigate your items more easily. The Related Tab is a helpful tool that shows you other items related to the one you’re looking at. This makes it easier to see if the same issue is happening in different parts of your code base or if there are similar items that might be connected. Knowing this can help you understand if a problem is widespread or if there are other occurrences that could help you debug it quicker. - Published: 2025-02-04 - Modified: 2025-02-06 - URL: https://rollbar.com/blog/custom-field-search/ - Categories: product - Tags: Usage Notifications Following our recent update on faster item search, we’re excited to introduce another powerful improvement to our search functionality: key/value searches for specific fields! What's new? You can now perform key/value searches in the format: field:value This enhancement is available for the following fields: custom (custom data fields added to occurrences) request_get, request_header, request_param, request_post (request-related fields) traceframe_local (trace frame local variables) Why This Matters A major benefit of this update is the ability to search within personalized custom data fields—something that was not previously possible within search. For example, if you have a custom field custom. response containing the string "Permission denied", you can now search for it using: custom:%Permission_denied% Key/Value Search Tips & Examples Case-Insensitive Prefix Search: By default, searches are case-insensitive. Use exact match by placing the value in quotes: custom:"value" Wildcard Support: Use % to match any number of characters, use _ to match a single character: custom:%value% Escaping Wildcard Characters: To search for an actual % character, escape it with \: custom:%\%% Searching Within Nested Fields: If custom data contains subfields, only include the top-level field. For example: to search within a field custom. rollbar-log. server, use: custom:%search_term% More Powerful & Granular Searches With these updates, you can narrow down your item list more precisely than ever, including searches within custom data fields that extend your occurrence data. What’s Next? In our next blog post, we’ll be sharing exciting news about additional standard Rollbar fields that are now supported in search. Stay tuned! Learn more... --- ### Sergei Bezborodko - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=sergei-bezborodko --- ### Chris Pfohl - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=chris-pfohl --- ### How to Avoid the Concurrent Modification Exception in Java > The ConcurrentModificationException in Java occurs when an object is attempted to be modified concurrently without permission. - Published: 2022-02-10 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-concurrentmodificationexception/ - Categories: Code Tutorials, Java - Tags: java The ConcurrentModificationException is a very common exception in Java that occurs usually while working with Collections. The ConcurrentModificationException is used to fail-fast when something being iterated on is modified. This exception occurs when an object is attempted to be modified concurrently without permission. For example, if a Collection is modified while a thread is traversing it using an Iterator, a ConcurrentModificationException is thrown from the Iterator. next method. The ConcurrentModificationException can occur in both multithreaded and single-threaded environments.   What Causes ConcurrentModificationException The ConcurrentModificationException generally occurs when working with Java Collections. The Collection classes in Java are very fail-fast and if they are attempted to be modified while a thread is iterating over it, a ConcurrentModificationException is thrown. This exception can occur in both multithreaded and single-threaded Java environments. Here are examples of each: Multithreaded environment - If a thread is traversing over a Collection using an Iterator and another thread attempts to add or remove elements to the Collection. Single-threaded environment - When an element is attempted to be removed from an ArrayList using the remove method while it is being traversed using an enhanced for loop.   ConcurrentModificationException Example Here is an example of a ConcurrentModificationException thrown when attempting to remove an element from an ArrayList using the remove method while traversing it using an enhanced for loop: import java. util. ArrayList; import java. util. List; public class ConcurrentModificationExceptionExample { public static void main(String args) { List list = new ArrayList; list. add("a"); list. add("b"); list. add("c"); list.... --- ### Zachary Flower - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=zachary-flower --- ### Fast, Accurate and Powerful Item Search > We’re excited to share some great news about our Related Tab feature! We’ve listened to your feedback and made big improvements to help you manage and investigate your items more easily. The Related Tab is a helpful tool that shows you other items related to the one you’re looking at. This makes it easier to see if the same issue is happening in different parts of your code base or if there are similar items that might be connected. Knowing this can help you understand if a problem is widespread or if there are other occurrences that could help you debug it quicker. - Published: 2025-02-03 - Modified: 2025-02-06 - URL: https://rollbar.com/blog/upgraded-search/ - Categories: product - Tags: Usage Notifications We’ve overhauled the search backend that powers the Item List UI and Item Search API. Item Search is now far more powerful, working with custom fields and nearly all the data you send Rollbar. Searches return quickly and return the results you'd expect. What's new? With the new backend, Item Search has: Better Performance Faster performance on most searches, especially when a date range is selected. Better Accuracy Item statistics (e. g. count, unique IPs, chart over time) in search results reflect occurrence-level filters. (Previously, occurrence-level filters like context, person or host would filter items but not affect statistics; now, it works as expected. ) Many bugs solved, including host search not working and unexpected behavior on context search. More Search Features Nearly all fields are now indexed and searchable, including key-value pairs within custom data, request params, and trace locals. Total result count is now available for large projects, for all searches covering --- ### Hemant Jain - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=hemant-jain --- ### Daniel Steuernol - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=daniel-steuernol --- ### Better together: Rollbar and Datadog > It just makes sense to use Rollbar for debugging and error monitoring and Datadog for observability. By taking a little time to integrate the two tools and have them work together you will reap additional benefits throughout your SDLC and also find synergies and features that you might not be making the most of right now. - Published: 2022-02-01 - Modified: 2022-07-19 - URL: https://rollbar.com/blog/better-together-rollbar-and-datadog/ - Categories: product - Tags: datadog, error-monitoring, observability, rollbar Modern software development is a high-pressure affair. Competition means getting to market faster with higher quality code and being able to release software quicker, monitor it and both find and fix problems quickly. By using modern tools and building a new approach and workflow to allow for monitoring, observability, and intelligent and actionable alerts it is possible to achieve faster release cycles with higher code quality. Google promotes the DORA metrics for helping organizations become elite at developing and releasing code. These metrics support approaches like Continuous Code Improvement (CCI) in achieving those high levels of code quality and performance. Tools like Rollbar and Datadog have a part to play in achieving good levels of these metrics, along with your code repository tools, your communication tools and your design approach. Like any other highly skilled endeavour, the craft of software engineering is helped by using the best tools for the job. Rollbar provides industry leading error monitoring in real-time with AI-powered error grouping. Datadog provides industry leading observability into modern applications. While both tools can do parts of what the other can do, they aren’t as good. You wouldn’t use a hacksaw to cut wood for framing and you wouldn’t use a circular saw for cutting metal pipe. It just makes sense to use Rollbar for debugging and error monitoring and Datadog for observability. By taking a little time to integrate the two tools and have them work together you will reap additional benefits throughout your SDLC and also find... --- ### Jon de Andrés Frías - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=jon-de-andres-frias --- ### How to Resolve an object reference is required for the non-static field > This error occurs when a static method tries to use a non-static member without having an instance to work with. I'll show you three simple fixes. - Published: 2025-01-26 - Modified: 2025-01-27 - URL: https://rollbar.com/blog/how-to-resolve-an-object-reference-is-required-for-the-non-static-field/ - Categories: .NET, C#, Code Tutorials - Tags: .NET, c++, error-handling, error-monitoring The "Object reference is required for the non-static field" error happens in C# when you try to access a non-static member from a static method. Every class in C# can have two types of members: static and non-static. Static members are shared by the whole class, like a public bulletin board anyone can read. Non-static members are different - they belong to specific instances of the class, like personal notes that only exist in your copy of a notebook. This error occurs when a static method tries to use a non-static member without having an instance to work with. Let's look at some code where this happens - we'll see how trying to update a form label from a static method causes this error, and show you three simple fixes. Consider the following C# example namespace WindowsApplication1 { public partial class Form1 : Form { public Form1 { InitializeComponent; } private void button1_Click(object sender, EventArgs e) { //int val = { 0, 0}; int val; if (textBox1. Text == "") { MessageBox. Show("Input any no"); } else { val = Convert. ToInt32(textBox1. Text); Thread ot1 = new Thread(new ParameterizedThreadStart(SumData)); ot1. Start(val); } } private static void ReadData(object state) { System. Windows. Forms. Application. Run; } void setTextboxText(int result) { if (this. InvokeRequired) { this. Invoke(new IntDelegate(SetTextboxTextSafe), new object { result }); } else { SetTextboxTextSafe(result); } } void SetTextboxTextSafe(int result) { label1. Text = result. ToString; } private static void SumData(object state) { int result; //int icount = (int)state; int... --- ### Dan St. Clair - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=dan-st-clair --- ### How to Handle the InterruptedException Checked Exception in Java > Java's InterruptedException is thrown when a thread is interrupted from waiting, sleeping, or when otherwise occupied. - Published: 2022-01-24 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-interruptedexception-checked-exception/ - Categories: Code Tutorials, Java - Tags: error-handling, java Introduction: Java Threads Threads are a basic concept in concurrent and parallel programming . They allow programs to do multiple things at the same time and are often used for performing computationally intensive tasks in the background without interrupting the main program. This is accomplished through multithreading, a common programming and execution model which allows multiple threads to exist within the context of one process. These threads share resources but are able to execute independently. In Java, threads are lightweight , which means they run in the same memory context and the time it takes to switch between threads is very short. This also means that inter-thread communication is fast and simple. Each and every Java application has a special thread created by the Java Virtual Machine, called the main thread, which is initiated by the main method as the application’s entry point. From there, it is possible to have many user threads created and controlled from within the application, able to execute portions of the program code in parallel with the main thread. The conventional way to create a thread in Java is by utilizing the Thread class , often used in conjunction with the Runnable interface . Threads can be started, stopped, suspended, or otherwise switched between their life-cycle states . In addition, Java threads can also be interrupted.   InterruptedException Exception: What, Why & How? InterruptedException (from java. lang. InterruptedException) is a checked exception which directly extends java. lang. Exception. This exception is thrown when a thread... --- ### Adil Aijaz, Co-Founder & CEO of Split - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=adil-aijaz-co-founder-ceo-of-split --- ### Taron Foxworth - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=taron-foxworth --- ### István Erdő - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=istvan-erdo --- ### How to Handle the UnsatisfiedLinkError Runtime Error in Java > The Java java.lang.UnsatisfiedLinkError is thrown when a program uses a native libaray but is unable to find it at runtime for some reason. - Published: 2022-01-24 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-unsatisfiedlinkerror-runtime-error/ - Categories: Code Tutorials, Java - Tags: error-handling, java Introduction: Using Native Libraries in Java A native library is a library containing code compiled for a specific (native) architecture. There are certain scenarios like hardware-software integrations and process optimizations where using libraries written for different platforms can be very useful or even necessary. For this purpose, Java provides the Java Native Interface (JNI), which allows Java code that runs inside a Java Virtual Machine (JVM) to interoperate with applications and libraries written in other programming languages, such as C, C++, and assembly. The JNI enables Java code to call and be called by native applications and libraries written in other languages and it enables programmers to write native methods to handle situations where an application cannot be written entirely in Java . Common native library formats include . dll files on Windows, . so files on Linux and . dylib files on macOS platforms. The conventional idiom for loading these libraries in Java is presented in the code example below. package rollbar; public class ClassWithNativeMethod { static { System. loadLibrary("someLibFile"); } native void someNativeMethod(String arg); /*... */ } Java loads native libraries at runtime by invoking the System. load or the System. loadLibrary method. The main difference between the two is that the latter doesn’t require the absolute path and file extension of the library to be specified—it relies on the java. library. path system property instead. To access native methods from the loaded libraries, method stubs declared with the native keyword are used.   UnsatisfiedLinkError Error: What is... --- ### Michal Zalecki - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=michal-zalecki --- ### Mehak Garg - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=mehak-garg --- ### How to Handle the Illegal Monitor State Exception in Java > The IllegalMonitorStateException in Java occurs when a multithreaded application attempts to wait or notify a monitor that it does not own. - Published: 2022-01-17 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-illegalmonitorstateexception/ - Categories: Code Tutorials, Java - Tags: error-handling, java An IllegalMonitorStateException is a runtime exception in Java that occurs in multithreaded applications. It indicates that the calling thread has attempted to wait on an object's monitor, or attempted to notify other threads waiting on an object's monitor, without owning the specified monitor. Since the IllegalMonitorStateException is an unchecked exception, it does not need to be declared in the throws clause of a method or constructor.   What Causes IllegalMonitorStateException When building multithreaded applications in Java, if a monitor needs to be synchronized on, the IllegalMonitorStateException is thrown to indicate a thread attempted to wait or to notify other threads waiting on that monitor, without owning it. Therefore, this exception occurs if one of the wait, notify or notifyAll methods of the Object class are called outside a synchronized block or method.   IllegalMonitorStateException Example Here’s an example of an IllegalMonitorStateException, thrown when the wait method is called outside a synchronized block: class MyRunnable implements Runnable { public void run { try { this. wait(100); // calling wait without outside synchronized block System. out. println("Thread in runnable state"); } catch (InterruptedException e) { e. printStackTrace; } } } public class IllegalMonitorStateExceptionExample { public static void main(String args) { MyRunnable myRunnable = new MyRunnable; Thread myThread = new Thread(myRunnable); myThread. start; } } Since a thread must own a lock on the object’s monitor before calling the wait method, calling it outside a synchronized block throws an IllegalMonitorStateException. Running the above code throws the exception: Exception in thread "Thread-0" java. lang.... --- ### 5 Best Error Monitoring Tools to Use in 2025 > Rollbar leads with full-stack support, followed by Sentry, Datadog, Bugsnag, and LogRocket. Includes pricing, pros/cons, and essential features. - Published: 2025-01-26 - Modified: 2025-01-27 - URL: https://rollbar.com/blog/best-error-monitoring-tools/ - Categories: topics - Tags: error-monitoring The best tool to track, analyze, and manage errors at scale? Rollbar tops our list. What every developer should know about error monitoring Ever had your app crash and struggle to figure out why? That's where error monitoring comes in. When something breaks, these tools give you the full picture - exact state of the app, complete stack trace, and even the code change (git commit) that caused the issue. Think of it as your production environment's black box recorder. The best engineering teams in the world utilize these tools to stay ahead of issues before their customers ever report them. You'd be hard pressed to find a leading startup or member of the Fortune 500 that isn't using error monitoring. Critical features to look for When evaluating error monitoring solutions, certain capabilities are essential - they're the features you simply can't compromise on. Here's what to look for: Smart alerts that cut through noise and highlight critical issues, showing exact impact and severity. No more guessing which errors matter most. Release health tracking that instantly reveals if a new deployment spiked error rates or revived old bugs. Deploy with confidence, knowing you'll catch regressions fast. Quick recovery tools including one-click rollbacks and feature flag controls. Spot a problem? Roll back the code or disable specific features in seconds. Root cause analysis that connects errors to specific code changes, making debugging feel like time travel instead of guesswork. User impact tracking that shows you whose experience is affected, helping prioritize... --- ### How to Handle the Negative Array Size Exception in Java > The Negative Array Size Exception in Java occurs when an application attempts to create an array with a negative size. - Published: 2022-01-14 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-negativearraysizeexception/ - Categories: Code Tutorials, Java - Tags: error-handling, java The NegativeArraySizeException is a runtime exception in Java that occurs when an application attempts to create an array with a negative size. Since the NegativeArraySizeException is an unchecked exception, it does not need to be declared in the throws clause of a method or constructor.   What Causes NegativeArraySizeException in Java The NegativeArraySizeException occurs when an attempt is made to assign a negative size to an array. Here's an example: public class NegativeArraySizeExceptionExample { public static void main(String args) { int array = new int; System. out. println("Array length: " + array. length); } } Running the above code throws the following exception: Exception in thread "main" java. lang. NegativeArraySizeException: -5 at NegativeArraySizeExceptionExample. main(NegativeArraySizeExceptionExample. java:3)   How to Handle NegativeArraySizeException in Java The NegativeArraySizeException can be handled in code using the following steps: Surround the piece of code that can throw an NegativeArraySizeException in a try-catch block. Catch the NegativeArraySizeException in the catch clause. Take further action as necessary for handling the exception and making sure the program execution does not stop. Here's an example of how to handle it in code: public class NegativeArraySizeExceptionExample { public static void main(String args) { try { int array = new int; } catch (NegativeArraySizeException nase) { nase. printStackTrace; //handle the exception } System. out. println("Continuing execution... "); } } In the above example, the lines that throw the NegativeArraySizeException are placed within a try-catch block. The NegativeArraySizeException is caught in the catch clause and its stack trace is printed to the console.... --- ### Helaine de Tomasi - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=helaine-de-tomasi --- ### 5 Best Session Replay Tools in 2025 > Users lie, logs lie, everything lies. But session replay tools show you exactly what happened. The newest tools use AI to keep watch so you don't have to. - Published: 2025-01-21 - Modified: 2025-02-21 - URL: https://rollbar.com/blog/session-replay-tools/ - Categories: topics - Tags: topics Remember when debugging user issues meant asking them "can you tell me exactly what you were doing? " and getting responses like "I clicked the thing and it went whoosh"? Those dark days are behind us thanks to session replay tools, which are like having a super-powered security camera for your app - minus the grainy footage and that one guard who's always falling asleep. Let's look at some of the top players in this space and see how they're helping developers turn "works on my machine" into "works on every machine. " Fullstory Source: Fullstory FullStory's session replay tool does more than just play back user sessions - it uses AI to generate quick summaries of what happened, which is super handy when you're trying to debug issues without watching hours of footage. What really caught my eye though is their privacy approach - you can customize exactly what gets recorded and what gets masked out, which is crucial if you're dealing with sensitive data. The tool automatically captures everything without requiring you to add special tags to your code (they call it "tagless autocapture"), and you can see all sorts of user behavior, even when people are jumping between multiple tabs. FullStory also built in some neat features for tracking conversion funnels and generating heatmaps, so you can spot where users are getting stuck or dropping off. Basically, it's trying to be your all-in-one tool for understanding what's actually happening when users interact with your site or app.... --- ### How to Fix the Unsupported Class Version Runtime Error in Java > The UnsupportedClassVersionError in Java occurs when the JVM attempts to read a malformed or otherwise erroneous class file. - Published: 2022-01-14 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-unsupportedclassversionerror/ - Categories: Code Tutorials, Java - Tags: error-handling, java Introduction: Early-Stage Runtime Errors Runtime errors occur when a program is being executed and, in the case of compiled languages, after the program has been successfully compiled. Runtime errors are, therefore, harder to detect and prevent than compile-time errors . In Java, some of these runtime errors (namely throwable objects which are not exceptions) are triggered at a very early stage, while the program is basically starting up. Namely, there is a process of dynamic loading, linking, and initializing of classes and interfaces by the Java Virtual Machine (JVM) that occurs at the very beginning of execution of any Java application . This allows for a certain category of errors to be captured and dealt with before the program effectively starts. This category of high level runtime errors in Java is represented by classes which are direct descendants of the java. lang. Error class , including the java. lang. LinkageError class which denotes errors occurring during the aforementioned startup process . An instance of the Error class (or any of its subclasses) is a throwable object that a program is not expected or advised to handle, but instead, should cause immediate termination of the program. This is because most of these errors occur as a result of abnormal conditions, often so severe that it is impossible to know or control what further execution of the program might do. LinkageError instances in particular indicate critical class-related errors triggered during the class linking phase of the startup process, usually as a consequence... --- ### Lotanna Nwose - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=lotanna-nwose --- ### Unlock Enhanced Item Management with Our Revamped Related Tab > We’re excited to share some great news about our Related Tab feature! We’ve listened to your feedback and made big improvements to help you manage and investigate your items more easily. The Related Tab is a helpful tool that shows you other items related to the one you’re looking at. This makes it easier to see if the same issue is happening in different parts of your code base or if there are similar items that might be connected. Knowing this can help you understand if a problem is widespread or if there are other occurrences that could help you debug it quicker. - Published: 2025-01-07 - Modified: 2025-01-07 - URL: https://rollbar.com/blog/enhanced-related-items/ - Categories: product - Tags: Usage Notifications We’re excited to share some great news about our Related Tab feature! We’ve listened to your feedback and made big improvements to help you manage and investigate your items more easily. The Related Tab is a helpful tool that shows you other items related to the one you’re looking at. This makes it easier to see if the same issue is happening in different parts of your code base or if there are similar items that might be connected. Knowing this can help you understand if a problem is widespread or if there are other occurrences that could help you debug it quicker. With our latest update, merging items is now simpler than ever. You can combine related items right from the Similar Items table. This means you don’t have to go through the hassle of searching for and merging items on a separate page. By grouping similar items together, your list stays organized and clear, making it easier to spot real issues in your system. We’ve also added new tables that show items introduced or reactivated in the same code versions as your current item. This helps you find other items that might have the same root cause because they appeared with related code updates. These new tables make it easier to see patterns and fix problems more effectively. But that’s not all! When you upgrade to our Essentials plan you get access to the improved Related Tab and additional tools like Summarization and Item Snooze. This means you... --- ### Michael Davis - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=michael-davis --- ### How to Handle the Exception In Initializer Runtime Error in Java > Java's ExceptionInInitializerError occurs when an unchecked exception takes place in a static initializer or static variable assignment. - Published: 2022-01-13 - Modified: 2022-11-28 - URL: https://rollbar.com/blog/java-exceptionininitializererror-runtime-error/ - Categories: Code Tutorials, Java - Tags: error-handling, java Introduction to Runtime Errors & Exceptions Unlike compile-time errors which are detected during compilation , runtime errors occur during program execution, i. e. runtime. Java’s runtime error hierarchy is somewhat complicated compared to other programming languages, but at the basic level there are two main categories: runtime errors and runtime exceptions, the latter of which being further divided into checked and unchecked exceptions (see Figure 1 below). Unchecked exceptions are also lumped into the somewhat confusingly named RuntimeException superclass, while all runtime errors are also considered to be unchecked. The term “unchecked” refers to errors and exceptions that Java doesn’t require to be caught or otherwise specified in the code . Runtime Java errors and exceptions are otherwise jointly referred to as throwables, as per the name of the Throwable class—the parent class of all errors and exceptions in this language . Figure 1. Java runtime errors & exceptions hierarchy   ExceptionInInitializerError Error: What, Why & How? After successfully compiling a program, the Java Virtual Machine (JVM) performs dynamic loading, linking, and initializing of classes and interfaces, broadly known as the class loading process . This process includes the evaluation of all static initializer blocks and variable assignments present in the compiled code. If, during this evaluation, any unexpected exception occurs, the JVM throws an ExceptionInInitializerError runtime error, points to the specific exception that caused the error, and subsequently exits the program. The ExceptionInInitializerError error occurs every time there is an unchecked (and uncaught) exception taking place inside a static... --- ### Ivan Gomez - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=ivan-gomez --- ### What is OpenTelemetry > An Observability framework and toolkit designed to create and manage telemetry data such as traces, metrics, and logs. - Published: 2024-12-17 - Modified: 2024-12-19 - URL: https://rollbar.com/blog/what-is-opentelemetry/ - Categories: topics What is OpenTelemetry? Let’s explore what OpenTelemetry is and isn’t. Here is what OpenTelemetry says about the project... OpenTelemetry is: An Observability framework and toolkit designed to create and manage telemetry data such as traces, metrics, and logs. Vendor- and tool-agnostic, meaning that it can be used with a broad variety of Observability backends, including open source tools like Jaeger and Prometheus, as well as commercial offerings. Not an observability backend like Jaeger, Prometheus, or other commercial vendors. Focused on the generation, collection, management, and export of telemetry. A major goal of OpenTelemetry is that you can easily instrument your applications or systems, no matter their language, infrastructure, or runtime environment. The storage and visualization of telemetry is intentionally left to other tools. OpenTelemetry has a very broad focus that includes traces, metrics and logs which is a double edge sword for many developers. To understand why OpenTelemetry collects the amount of data it does, it’s worth understanding what Observability is as seen by OpenTelemetry. What is observability? Observability is the ability to understand the internal state of a system by examining its outputs. In the context of software, this means being able to understand the internal state of a system by examining its telemetry data, which includes traces, metrics, and logs. To make a system observable, it must be instrumented. That is, the code must emit traces, metrics, or logs. The instrumented data must then be sent to an observability backend. Why OpenTelemetry? OpenTelemetry satisfies the need for observability... --- ### Julie Jones - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=julie-jones --- ### How to Fix ArrayStoreException in Java > The ArrayStoreException in Java is a runtime exception that occurs when an incorrect type of object is stored into an array of objects. - Published: 2022-01-03 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/arraystoreexception-in-java/ - Categories: Code Tutorials, Java - Tags: java An ArrayStoreException is a runtime exception in Java that occurs when an attempt is made to store the incorrect type of object into an array of objects. For example, if an Integer object is attempted to be stored in an String array, a “java. lang. ArrayStoreException: java. lang. Integer” is thrown.   What Causes ArrayStoreException in Java The ArrayStoreException occurs when an attempt is made to store the wrong type of object into an array of objects. Here's an example of an ArrayStoreException thrown when an Integer is attempted to be stored in an array of type String: public class ArrayStoreExceptionExample { public static void main(String args) { Object array = new String; array = 5; } } Running the above code produces the following output: Exception in thread "main" java. lang. ArrayStoreException: java. lang. Integer at ArrayStoreExceptionExample. main(ArrayStoreExceptionExample. java:4)   How to Handle ArrayStoreException in Java The ArrayStoreException can be handled in code using the following steps: Surround the piece of code that can throw an ArrayStoreException in a try-catch block. Catch the ArrayStoreException in the catch clause. Take further action as necessary for handling the exception and making sure the program execution does not stop. Here's an example of how to handle it in code: public class ArrayStoreExceptionExample { public static void main(String args) { try { Object array = new String; array = 5; } catch (ArrayStoreException ase) { ase. printStackTrace; //handle the exception } System. out. println("Continuing execution... "); } } In the above example, the... --- ### Derick Chung - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=derick-chung --- ### Most Popular Java Web Frameworks in 2025 - Published: 2024-12-16 - Modified: 2024-12-19 - URL: https://rollbar.com/blog/most-popular-java-web-frameworks/ - Categories: topics - Tags: frameworks Look, if you're starting a new Java web project in 2025, you should probably just use Spring Boot. With the highest adoption rate in the Stack Overflow Developer Survey of any Java web framework and overwhelming enterprise usage, it's the default choice for modern Java web development. It has the largest ecosystem, best documentation, most active community, and strongest cloud-native support. That said, there are specific scenarios where you might consider other Java frameworks. JSF still makes sense if you're deeply invested in the Jakarta EE ecosystem. GWT can be valuable if your team wants to write frontend code in Java instead of JavaScript. Vaadin shines for internal business applications where rapid UI development trumps customization. Play Framework deserves serious consideration if you're building reactive systems, as its architecture is specifically designed for high-concurrency and real-time applications. While these frameworks may have smaller communities than Spring Boot, they excel in their specific use cases. Below, we'll examine what makes each of these frameworks uniquely valuable, starting with the dominant Spring ecosystem. Spring Project Site: https://spring. io/ Primary Sponsor: Pivotal Software Spring is more than just a web framework. It is a complete programming model that is built on and with Java, starting with Spring Boot, which is a way to get a spring application up and running with minimal configuration and no application server required. At the other end of the spectrum is Spring Cloud, which is a combination of components that allows developers to build resilient and reliable cloud-native... --- ### Alex Moraca - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=alex-moraca --- ### How to Handle the Incompatible Types Error in Java > The Java incompatible types error happens when a value assigned to a variable or returned by a method is incompatible with the one declared. - Published: 2021-12-28 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/how-to-handle-the-incompatible-types-error-in-java/ - Categories: Code Tutorials, Java - Tags: error-handling, java Introduction to Data Types & Type Conversion Variables are memory containers used to store information. In Java, every variable has a data type and stores a value of that type. Data types, or types for short, are divided into two categories: primitive and non-primitive. There are eight primitive types in Java: byte, short, int, long, float, double, boolean and char. These built-in types describe variables that store single values of a predefined format and size. Non-primitive types, also known as reference types, hold references to objects stored somewhere in memory. The number of reference types is unlimited, as they are user-defined. A few reference types are already baked into the language and include String, as well as wrapper classes for all primitive types, like Integer for int and Boolean for boolean. All reference types are subclasses of java. lang. Object . In programming, it is commonplace to convert certain data types to others in order to allow for the storing, processing, and exchanging of data between different modules, components, libraries, APIs, etc. Java is a statically typed language, and as such has certain rules and constraints in regard to working with types. While it is possible to convert to and from certain types with relative ease, like converting a char to an int and vice versa with type casting , it is not very straightforward to convert between other types, such as between certain primitive and reference types, like converting a String to an int, or one user-defined type to... --- ### Jesse Gibbs - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=jesse-gibbs --- ### Brian Rue - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=brian-rue --- ### How to Fix Android's Resources.NotFoundException > This error is like trying to order your favorite dish at a restaurant, only to have the waiter tell you it's not on the menu anymore. - Published: 2024-12-10 - Modified: 2025-02-19 - URL: https://rollbar.com/blog/android-content-res-resources-notfoundexception/ - Categories: Android, Code Tutorials - Tags: Android The Resources. NotFoundException is Android's way of saying "Hey, you told me to grab something, but it's not where you said it would be! " This error typically shows up when you're trying to access strings, layouts, drawables, or other resources that Android can't locate in your app's resource files. Maybe they were renamed, deleted, or never existed in the first place. Or perhaps they're hiding in the wrong folder. But before you start questioning your career choices or contemplating a switch to iOS development (let's not get crazy here), let's break down what's actually causing this error and how to fix it. Trust me, it's simpler than you might think. Common Causes and Solutions Let's cut to the chase and look at the four most common reasons you're seeing this error, along with how to fix each one. No fluff, just solutions. 1. The Case of the Missing String You're trying to use getString(R. string. welcome_message), but welcome_message is nowhere to be found in your strings. xml. Welcome! // Typo in name Welcome! // Correct name Solution: Double-check your strings. xml. Look for typos and make sure you actually defined the string you're trying to use. 2. findViewById Gone Wrong This classic mistake happens when you try to find a view that doesn't exist in your layout. It's usually caused by a mismatch between your layout XML and your Java/Kotlin code. // The problematic code val textView = findViewById(R. id. text_view_missing) // Oops! // The fix: Make sure the... --- ### How to Handle the Unclosed String Literal Error in Java > Python unclosed string literal error refers to the Java compiler failing to interpret a string literal due to the missing of a double quote. - Published: 2021-12-24 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-unclosed-string-literal-error/ - Categories: Code Tutorials, Java - Tags: error-handling, java Introduction to Strings & String Literals Strings are a fundamental data type in most modern general-purpose programming languages. In Java, strings are defined as character sequences and are represented as immutable objects of the class java. lang. String which contains various constructors and methods for creating and manipulating strings . A string literal is simply a reference to an instance of the String class, which consists of zero or more characters enclosed in double quotes. Moreover, a string literal is also a constant, which means it always refers to the same instance of the String class, due to interning . Below is an example of the string literal "rollbar" being assigned to two different variables a and b which both reference the same (automatically interned) String object. String a = "rollbar"; String b = "rollbar"; System. out. println(a == b);// true For string literals to be interpreted correctly by the Java compiler, certain (so called “special”) characters need to be escaped by using the appropriate escape sequence (or escape for short) . Such is the case with the double quote character, which is considered a special character as it is used to mark the beginning and the end of a string literal. So, in order to have quotes within these quotes, one must use the escape sequence \” on the inner quotes, as shown below. System. out. println("Say \"Hi! \" to Rollbar. "); // Say "Hi! " to Rollbar.   Unclosed String Literal Error: What It Is and Why It... --- ### Cory Virok - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=cory-virok --- ### Jason Skowronski - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=jason-skowronski --- ### Craig Guillot - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=craig-guillot --- ### Next.js or Remix: Which Framework is Better, and When? > Both frameworks cater to modern web development needs, but they differ in their approach to routing, data fetching, and performance optimization. - Published: 2024-12-07 - Modified: 2025-01-09 - URL: https://rollbar.com/blog/nextjs-vs-remix/ - Categories: topics - Tags: JavaScript, next The choice between Next. js and Remix is not just about picking a framework; it's about embracing a way of thinking that will define the trajectory of your application and your growth as a developer. Both frameworks cater to modern web development needs, but they differ in their approach to routing, data fetching, and performance optimization. By understanding the philosophical underpinnings and practical implications of each framework, you can make an informed decision about which path aligns best with our project's goals and your own development philosophy. 1. Routing and Navigation Next. js uses a file-based routing system where each file in the “pages” directory becomes a route. For example, if you have a file called index. js in the pages directory, it will be mapped to the / route. So to create a new route in Next. js, simply create a new file in the pages directory. For example, if you want to create a new route called /about, you simply create a new file called about. js in the pages directory: import React from 'react'; function AboutPage { returnAbout Us; } export default AboutPage; Remix, on the other hand, uses a route-centric approach, meaning routes are explicitly mentioned in the configuration file, generally remix. config. js. This configuration file maps the URLs to route modules. Let’s say you have a Remix project with the following route modules: src/ ├── routes/ │ ├── index. tsx // Represents the root route ("/") │ ├── about. tsx // Represents the "/about"... --- ### The Ultimate Guide to Logging in Python > Logging in Python allows you to track, tag, and assign severity levels to events that happen when an application runs. - Published: 2021-12-24 - Modified: 2024-07-18 - URL: https://rollbar.com/blog/logging-in-python/ - Categories: Code Tutorials, Python - Tags: Python Logging is used to track events that happen when an application runs. Logging calls are added to application code to record or log the events and errors that occur during program execution. In Python, the logging module is used to log such events and errors. An event can be described by a message and can optionally contain data specific to the event. Events also have a level or severity assigned by the developer. Logging is very useful for debugging and for tracking any required information.   How to Use Logging in Python The Logging Module The Python standard library contains a logging module that provides a flexible framework for writing log messages from Python code. This module is widely used and is the starting point for most Python developers to use logging. The logging module provides ways for applications to configure different log handlers and to route log messages to these handlers. This enables a highly flexible configuration that helps to handle many different use cases. To write a log message, a caller requests a named logger. This logger can be used to write formatted messages using a log level (DEBUG, INFO, ERROR etc). Here's an example: import logging log = logging. getLogger("mylogger") log. info("Hello World")   Logging Levels The standard logging levels in Python (in increasing order of severity) and their applicability are: DEBUG - Detailed information, typically of interest when diagnosing problems. INFO - Confirmation of things working as expected. WARNING - Indication of something unexpected or a... --- ### Tyler Cascade - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=tyler-cascade --- ### Michael Auderer - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=michael-auderer --- ### Email Warmup's Story with Rollbar > We use Rollbar to monitor our backend systems, particularly for email deliverability algorithms and campaign management tools. It integrates seamlessly with our Slack channels to alert our team about issues in real-time. Without Rollbar, small glitches could escalate into bigger problems, impacting our clients’ email performance. - Published: 2024-12-06 - Modified: 2024-12-06 - URL: https://rollbar.com/blog/emailwarmup-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Email Warmup is a company focused on improving email deliverability, helping outbound emails drive sales rather than end up as spam 1. Can you introduce yourself, and tell us about your team or company? We’re Email Warmup, a business dedicated to boosting email deliverability so outbound emails increase sales, not spam. 2. How do you plan to use Rollbar? We use Rollbar to monitor our backend systems, particularly for email deliverability algorithms and campaign management tools. It integrates seamlessly with our Slack channels to alert our team about issues in real-time. Without Rollbar, small glitches could escalate into bigger problems, impacting our clients’ email performance. 3. What made you choose Rollbar? Rollbar stood out due to its intuitive dashboards, easy setup, and actionable insights. Compared to other tools, Rollbar excels at prioritizing critical issues using the Pareto principle, allowing us to focus on what matters most and deliver uninterrupted service to our clients. Visit Founder of Email Warmup's LinkedIn Page --- ### Sadequl Hussain - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=sadequl-hussain --- ### How to Fix Method/Constructor X in Class Y Cannot be Applied to Given Types in Java > Java "Method/Constructor in Class Cannot Be Applied To Given Types" happens when formal parameters and the actual parameters differ. - Published: 2021-12-16 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/how-to-fix-method-constructor-in-class-cannot-be-applied-to-given-types-in-java/ - Categories: Code Tutorials, Java - Tags: java Introduction to Method and Constructor Signatures In computer programming, a function is a set of instructions that can be invoked to perform a particular task. In object-oriented programming (OOP), a method is a function that is typically associated with an object and models its behavior . In Java, methods can also be static, in which case they are part of a class definition and do not require an object to be created before they are invoked. Figure 1: The Method Signature in Java   Every method has a unique method signature, which consists of the method name and its input parameters, which can be zero or more. Java methods also have return types, but these are not considered a part of the method signature, as it would be impossible for a compiler to distinguish between overloaded methods in certain contexts . Below is an example of a method declaration with a method signature consisting of the method name “doSomething” and two method parameters; the 1st one of type String and name “param1,” and the 2nd one of type int with the name “param2. ” It is important to note that method parameters always have a type and a name, and the order in which they appear in the method declaration matters. Figure 2: The Constructor Signature in Java   Constructors are a special type of method invoked to create objects from a class. Constructors have no return type and always use the name of the class in which they are... --- ### Jaee Apte - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=jaee-apte --- ### Megan Anderson - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=megan-anderson --- ### Sentry, But Better? 6 Sentry Alternatives to Keep Your Code Error-Free > If you're looking to optimize your app’s performance and squash bugs more efficiently, we look at some top-tier alternatives to Sentry you should consider. - Published: 2024-12-04 - Modified: 2024-12-04 - URL: https://rollbar.com/blog/sentry-alternatives-for-error-tracking/ - Categories: topics - Tags: topics We all know Sentry, right? It's a big name in error monitoring. But what if I told you there are some impressive alternatives out there that might just suit your needs even better? We’ve got Rollbar, Raygun, Bugpilot, and a few more on the table. Each one brings something unique. Let's compare them against Sentry by diving into their features, ease of use, integrations, and of course, their price. If you're looking to optimize your app’s performance and squash bugs more efficiently, this is the guide for you. Rollbar With 4. 5 out of 5 stars on both Capterra and G2, Rollbar is acclaimed as one of the top error monitoring tools. Rollbar provides real-time error monitoring and reporting with features like error grouping, deduping, and detailed error analytics. It supports a wide range of platforms and allows for stack traces and proactive triaging of errors. Rollbar also integrates well with project management tools like Slack, Jira, and GitHub. All this makes Rollbar a solid, user-friendly choice for keeping your app running smoothly. If you're looking for an easy to use error monitoring tool with advanced diagnostic capabilities, give Rollbar a try. Plans start at $0/mo and unlike Sentry’s free plan, Rollbar’s offers unlimited users. Raygun Raygun focuses on providing detailed diagnostic data with a developer-friendly interface. It offers real-user monitoring, dashboards, transaction tracing, and usage-based pricing. Raygun also goes beyond tracking bugs. They offer an integrated platform that combines error monitoring, real user monitoring, and application performance monitoring (APM).... --- ### Rollbar Log4J CVE-2021-44228 (“Log4Shell”) Community Update - Published: 2021-12-14 - Modified: 2021-12-20 - URL: https://rollbar.com/blog/log4j-zero-day-2021-log4shell/ - Categories: company TLDR; Your data is safe with Rollbar. A zero day in the Java ecosystem was discovered that could exploit Apache’s Log4J library. The vulnerability can, potentially, impact users of Rollbar’s Java SDK if they selected Log4J for their project. We recommend that all projects that are dependent on Log4J upgrade their dependencies so they require a version at/after 2. 17. 0. UPDATE: we have updated the guidance so it covers the new Log4J issues (CVE-2021-45046 & CVE-2021-45105) that've been discovered and patched by Log4J. We have published rollbar-java 1. 8. 1 SDK on Maven and on Github. What’s the problem? Log4J, a popular open-source Java logging library, has presented a two zero days that’ve been resolved in the core library. It can allow for malicious code to be executed within the JVM. Log4J has made three point releases since the discovery of the vulnerability, 2. 15. 0, 2. 16. 0 and 2. 17. 0. The current rollbar-java SDK doesn’t log through Log4J explicitly; however, if the customer leverages Log4J as their primary logger then Rollbar’s own logging will go through the affected library. The vulnerabilities have been labeled by MITRE as CVE-2021-44228 and CVE-2021-45046. CVE-2021-44228 was given the highest CVSS score (10. 0) and 2021-45046 is considered LOW. If exploited, the original vulnerability can give an attacker full control of any impacted system. After learning of the announcement, our security and engineering teams began working diligently to evaluate all of our products and internal services for any potential impact. Please... --- ### Twain Taylor - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=twain-taylor --- ### Rivkah Standig - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=rivkah-standig --- ### Mike Smith - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=mike-smith --- ### How to Catch Multiple Exceptions in Python > Python try-except blocks can be used to catch/respond to processes that raises more than one possible exception, with a single except clause. - Published: 2021-12-13 - Modified: 2023-07-31 - URL: https://rollbar.com/blog/python-catching-multiple-exceptions/ - Categories: Code Tutorials, Python - Tags: Python When a program encounters an exception during execution, it is terminated if the exception is not handled. By handling multiple exceptions, a program can respond to different exceptions without terminating it. In Python, try-except blocks can be used to catch and respond to one or multiple exceptions. In cases where a process raises more than one possible exception, they can all be handled using a single except clause. There are several approaches for handling multiple exceptions in Python, the most common of which are discussed below. Install the Python SDK to identify and fix exceptions Using Same Code Block for Multiple Exceptions With this approach, the same code block is executed if any of the listed exceptions occurs. Here's an example: try: name = 'Bob' name += 5 except (NameError, TypeError) as error: print(error) rollbar. report_exc_info In the above example, the code in the except block will be executed if any of the listed exceptions occurs. Running the above code raises a TypeError, which is handled by the code, producing the following output: cannot concatenate 'str' and 'int' objects   Using Different Code Blocks for Multiple Exceptions If some exceptions need to be handled differently, they can be placed in their own except clause: try: name = 'Bob' name += 5 except NameError as ne: # Code to handle NameError print(ne) rollbar. report_exc_info except TypeError as te: # Code to handle TypeError print(te) rollbar. report_exc_info In the above example, NameError and TypeError are two possible exceptions in the code, which... --- ### Smarter Operations: How Rollbar + GrowthBook Minimize Downtime and Boost Reliability > Software development and operations teams are the guardians of system stability, ensuring uptime, reliability, and performance across complex software ecosystems. The stakes are high—every second of downtime impacts your brand’s reputation and bottom line. That’s why integrating Rollbar’s error monitoring with GrowthBook’s feature flagging is a game-changer for ops teams. - Published: 2024-12-02 - Modified: 2024-12-02 - URL: https://rollbar.com/blog/how-rollbar-growthbook-minmize-downtime-boost-reliability/ - Categories: Engineering, product - Tags: Usage Notifications Software development and operations teams are the guardians of system stability, ensuring uptime, reliability, and performance across complex software ecosystems. The stakes are high—every second of downtime impacts your brand’s reputation and bottom line. That’s why integrating Rollbar’s error monitoring with GrowthBook’s feature flagging is a game-changer for ops teams. This combination equips you to proactively identify and mitigate issues tied to new features before they impact your users. Here’s how Rollbar and GrowthBook transform your workflows and safeguard your operations. Real-Time Alerts for Feature-Specific Issues With Rollbar, your team already has detailed, real-time insights into application errors. But what happens when a spike in errors is tied to a specific feature rollout? GrowthBook’s feature flags take the guesswork out of identifying the culprit. You can toggle features on or off instantly while Rollbar continues to monitor the broader system. Example: A new payment gateway rollout causes intermittent errors for users in specific geographies. Rollbar flags the issue, and with GrowthBook, your team disables the feature in those regions in seconds, ensuring minimal user disruption. Instant Rollbacks Without Releasing New Code When critical errors arise, traditional workflows often require a full rollback or emergency patch deployment. GrowthBook eliminates this bottleneck by allowing you to disable problematic features on the fly—no redeployments needed. Rollbar ensures your team is alerted the moment something goes wrong. Key Benefit: Spend less time firefighting and more time ensuring system stability. Focused Root Cause Analysis Large-scale applications can make debugging a needle-in-a-haystack challenge. By linking Rollbar’s... --- ### Phil Nash - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=phil-nash --- ### Derek Haynes - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=derek-haynes --- ### How to Handle Unhashable Type List Exceptions in Python > The Python TypeError: Unhashable Type: 'list' happens when a mutable list, instead of an immutable tuple, is used as a hash argument. - Published: 2021-12-13 - Modified: 2023-03-16 - URL: https://rollbar.com/blog/handling-unhashable-type-list-exceptions/ - Categories: Code Tutorials, Python - Tags: Python The Python TypeError: unhashable type: 'list' usually means that a list is being used as a hash argument. This error occurs when trying to hash a list, which is an unhashable object. For example, using a list as a key in a Python dictionary will cause this error since dictionaries only accept hashable data types as a key. The standard way to solve this issue is to cast a list to a tuple, which is a hashable data type. Install the Python SDK to identify and fix these undefined errors Tuples vs Lists Tuples are similar to lists but are immutable. They usually contain a heterogeneous sequence of elements that are accessed via unpacking or indexing. On the other hand, lists are mutable and contain a homogeneous sequence of elements that are accessed by iterating over the list. Immutable objects such as tuples are hashable since they have a single unique value that never changes. Hashing such objects always produces the same result, so they can be used as the keys for dictionaries.   TypeError: Unhashable Type: 'List' Example Here’s an example of a Python TypeError: unhashable type: 'list' thrown when a list is used as the key for a dictionary: my_dict = {1: 'Bob', : 'names'} print(my_dict) Since a list is not hashable, running the above code produces the following error: Traceback (most recent call last): File "test. py", line 1, in my_dict = {1: 'Bob', : 'names'} TypeError: unhashable type: 'list'   How to Fix TypeError: unhashable type:... --- ### The Python stderr Guide I Wish I Had As A Beginner > Learn how to separate error messages from regular output in Python using stderr. Clear examples, command-line tricks, and formatting tips. - Published: 2024-11-18 - Modified: 2024-11-18 - URL: https://rollbar.com/blog/raise-stderr-python/ - Categories: Code Tutorials, Python - Tags: Python Is your program throwing a fit but those error messages are lost somewhere in the avalanche of print statements? Let's fix that! Enter stderr - Python's built-in solution for separating your normal program output from your "everything is on fire" messages. Think of your Python program as having two voices: stdout (its inside voice) and stderr (its "EVERYONE PANIC" voice). stdout is for normal stuff like "Hey, I processed that file" or "Here's your data. " stderr is for when things go wrong and your code needs to scream for help. It's like having a separate lane for emergencies. Quick example of stderr Here’s a super simple way to use stderr: import sys # Your regular, calm output print("Everything is fine, just processing some data... ") # Your code's panic mode print("HELP! SOMETHING'S ON FIRE! ", file=sys. stderr) You could also write it this way with sys. stderr. write, which is slightly more efficient but the performance difference is too small to matter for most people: sys. stderr. write("🔥 ERROR: The thing that shouldn't break just broke 🔥\n") Real life stderr examples (because theory is boring) The case of the evil CSV Ever tried to process a CSV file only to find out it's missing, corrupted, or formatted by someone who thinks commas are optional? Here's how to handle those file mishaps gracefully with stderr: import sys import csv def process_important_file(filename): try: with open(filename) as f: data = csv. DictReader(f) # Actually do stuff with the data print("Processing your amazing... --- ### Jennifer Marsh - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=jennifer-marsh --- ### Ken Sheppardson - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=ken-sheppardson --- ### How to Solve the Chunk Load Error in JavaScript > Whenever there’s an error observed in dynamically fetching helper JavaScript files known as Chunks, a ChunkLoad Error is thrown. - Published: 2021-12-13 - Modified: 2025-03-17 - URL: https://rollbar.com/blog/javascript-chunk-load-error/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript The way React, Vue, Angular and similar frameworks work is by downloading JavaScript files and using them to render websites on the browser. Whenever a project is built, two types of files are created: Main entry file - The file to which the script tag in index. html points to Other helper files - The files which are imported by the main entry file whenever required. Most of the time, if you have a small project, a single entry file is enough. You can store all the JavaScript code into the same file. But, for faster loading and better user experience, the JavaScript code can also be broken down into multiple files when it's built and these files are dynamically fetched by the main entry file whenever required. Now, whenever there’s an error observed in fetching these other helper JavaScript files, a ChunkLoad Error is thrown. The multiple JavaScript files used are also known as chunks, and hence the name of the error. What Causes the Chunk Load Error? To recap, the Chunk Load Error occurs when the browser encounters an error in fetching some JavaScript files, which were dynamically imported. There’s a couple reasons you may have encountered this error: The checksum validation for the JavaScript file failed This can occur when the checksum of the received file does not match the integrity attribute of the script tag. (For more information on why this is important and how it’s done you can refer to Subresource Integrity - Web security... --- ### Cuttlesoft - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=cuttlesoft --- ### Chayn's Story with Rollbar > At PLUM, we focus on crafting custom software solutions tailored to specific needs. Our projects range from helping startups launch their initial products to assisting established enterprises in scaling and enhancing their software infrastructure. - Published: 2024-11-04 - Modified: 2024-11-04 - URL: https://rollbar.com/blog/chayn-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Chayn is a global nonprofit that creates open, online resources and services for survivors of abuse that are trauma-informed, intersectional, multilingual and feminist. 1. Can you introduce yourself, and tell us about your team or company? My name is Ellie and I am the Senior Software Engineer for Chayn. Chayn is a global nonprofit, run by survivors and allies from around the world, creating resources to support the healing of survivors of gender-based violence. 2. How do you plan to use Rollbar? At Chayn, we rely on Rollbar for monitoring some of our key platforms, including Bloom, our online support space that offers video courses and various resources for survivors of gender-based violence. Rollbar helps us stay responsive to the needs of our users by immediately alerting us to any technical issues they may encounter. By using Rollbar, our team can quickly address and resolve issues, ensuring our users have uninterrupted access to vital resources. Without Rollbar, identifying and fixing these issues would be more challenging and would delay our ability to support survivors effectively 3. What made you choose Rollbar? As a nonprofit, we need reliable, high-quality tools that offer strong value for the investment. Rollbar stood out for its excellent balance of functionality and affordability. Its seamless integration with our existing alerting systems made it easy to adopt, helping us stay agile and responsive to any issues that may impact our users Visit Chayn's LinkedIn Page --- ### Elliott Spira - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=elliott-spira --- ## Job Titles ### How to Resolve The Non-static Variable/Method X Cannot be Referenced from a Static Context Error in Java > Attempting to access a non-static variable/method from a static context without a class instance creates ambiguity. - Published: 2021-12-13 - Modified: 2025-02-19 - URL: https://rollbar.com/blog/java-non-static-variable-method-x-cannot-be-referenced-from-a-static-context/ - Categories: Code Tutorials, Java - Tags: error-handling, error-monitoring, java Introduction to Static Variables and Methods The static keyword in Java is a modifier that makes a member of a class independent of the instances of that class. In other words, the static modifier is used to define variables and methods related to the class as a whole, rather than to an instance (object) of the class. Hence, static variables are often called class variables, while static methods are commonly referred to as class methods. Class variables and methods are stored in fixed locations in memory and are accessed without a reference to an object, directly through the class name itself . A common use for static methods is to access static variables. However, not all combinations of instance and class variables and methods are allowed. Namely, static methods can only use static variables and call static methods—they cannot access instance variables or methods directly, without an object reference. This is because instance variables and methods are always tied to a specific instance, i. e. , object of their class. Due to their instance-less nature, static variables and methods are sometimes used to construct stateless utility classes   Non-static Variable X Cannot be Referenced from a Static Context & Non-static Method X Cannot be Referenced from a Static Context A static variable is initialized once, when its class is loaded into memory, and its value is shared among all instances of that class. On the other hand, a non-static variable is initialized every time a new instance of its class... --- ### How to Fix the OutOfMemoryError in Java > A java.lang.OutOfMemoryError is a runtime error in Java which occurs when the JVM is unable to allocate an object due to insufficient space in the Java heap. - Published: 2024-10-20 - Modified: 2024-10-21 - URL: https://rollbar.com/blog/how-to-handle-outofmemoryerror-exceptions-in-java/ - Categories: Code Tutorials, Java - Tags: java Picture this: It's Black Friday, and you're circling a packed mall parking lot. Every space is taken, and cars are lined up waiting for spots. You keep circling, but there’s just no place to park and you run out of gas. When you see a java. lang. OutOfMemoryError it’s just like what you experienced in that overcrowded parking lot. The Java Virtual Machine (JVM) has run out of space to "park" new objects in memory. Now here's the thing about Java: it loves objects. It can't get enough of them. Objects here, objects there, objects everywhere. But all these objects need a place to park, and that place is called the heap. When there’s not enough native memory to support the loading of a Java class or the Java Garbage Collector (GC) cannot free up the space in the heap required for a new object, it throws its hands up and yells "OutOfMemoryError! " which is programmer-speak for "We're doomed! " No matter how efficiently your code is written, if there's no room left, you're stuck. Let’s take a stroll through the heap and figure out how to give your JVM that sweet, sweet memory it craves. What Causes java. lang. OutOfMemoryError The JVM's memory management scheme sets aside a portion of the heap memory to store newly allocated objects. Any referenced objects remain active in the heap throughout their lifespan (until their reference is closed) and occupy memory. When objects are no longer referenced, they become eligible for the... --- ### Chief Product Officer - Published: 2022-06-30 - Modified: 2022-06-30 - URL: https://rollbar.com/?job_title=chief-product-officer --- ### Talent & Operations - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=talent-operations --- ### How to Fix TypeError: NoneType Object Is Not Iterable in Python > The Python TypeError: NoneType Object Is Not Iterable is an exception that occurs when trying to iterate over a None value. Learn how to fix it. - Published: 2024-10-20 - Modified: 2024-10-21 - URL: https://rollbar.com/blog/python-typeerror-nonetype-object-is-not-iterable/ - Categories: Code Tutorials, Python - Tags: Python Imagine your friends are over to play poker and you reach for the box of playing cards, but something feels off - it's surprisingly light. You open it and see the box is completely empty. In this moment of surprise, you're experiencing something akin to a TypeError: NoneType Object Is Not Iterable in Python. Just as you can't play cards with an empty box, Python can't iterate over a None value. You're trying to perform an action (playing cards/iterating) on something that simply isn't there, even though you expected it to be. The tricky part is, just like you didn't realize the card box was empty until you checked inside, you might not know a Python object is None until you try to use it. This is why this error can catch developers off guard, appearing in seemingly working code. In this blog post, we'll explore why this error occurs, how to identify it in your code, and provide multiple strategies to fix and prevent it. What Causes TypeError: NoneType Object Is Not Iterable For an object to be iterable in Python, it must contain a value. Therefore, trying to iterate over a None value raises the Python TypeError: NoneType Object Is Not Iterable exception. Some of the most common sources of None values are: Calling a function that does not return anything. Calling a function that sets the value of the data to None. Setting a variable to None explicitly. Accessing a non-existent key in a dictionary. How to... --- ### E_ERRORs in PHP: What You Need to Know > PHP E_ERRORs occures when a major, irrecoverable issue arises during runtime. Lesser errors are recoverable and PHP would continue to run. - Published: 2021-12-07 - Modified: 2022-12-12 - URL: https://rollbar.com/blog/e_errors-in-php/ - Categories: Code Tutorials, PHP - Tags: PHP What is E_ERROR? PHP’s E_ERROR typically indicates a major issue with PHP. Normally, PHP may be able to recover from a lesser error and the PHP application could continue to run. However, with E_ERROR, PHP will usually outright fail and stop working entirely.   What causes E_ERROR? Several factors can cause an E_ERROR to occur. The examples below are generalized to get the point across regardless of which version of PHP you are using.   Wrong Type You may, for example, have a function definition which is called or used incorrectly. function my_function (a_value: String) { echo a_value; } my_function(123); In the example above, you would receive an E_ERROR related to the fact that you are using an integer when a string is expected.   Parsing Errors You may also have parsing errors that cause E_ERROR to show up such as a missing semicolon or an unexpected character. Here is an example: function my_function (a_value: String) { echo a_value }) my_function(123); Note how there’s a missing semicolon after “echo a_value” and there’s an extra bracket at the end of the curly function bracket. Both (or just one of these) would cause an error.   Calling an Undefined Function You may also be calling an undefined function. For example, if you simply call “my_function” without ever first declaring it, you will get this error. Or you may have a dependency chain failure wherein your function definition is run later on in the code, after you’ve called it, although this tends to... --- ### Co-founder and CTO - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=co-founder-and-cto --- ### CRO - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=cro --- ### Resolving TypeError: "X" is Not a Constructor in JavaScript > JavaScript "TypeError: "x" is not a constructor" errors occur when invalid objects or a variable is erroneously used as a constructor. - Published: 2021-12-07 - Modified: 2022-12-12 - URL: https://rollbar.com/blog/javascript-typeerror-x-is-not-a-constructor/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript What is a Constructor in JavaScript? A constructor is a special function that creates and initializes an object instance of a class. In JavaScript, a constructor gets called when an object is created using the new keyword. The purpose of a constructor is to create a new object and set values for any existing object properties.   What Happens When a Constructor Gets Called? When a constructor gets invoked in JavaScript, the following sequence of operations take place: A new empty object gets created. The this keyword begins to refer to the new object and it becomes the current instance object. The new object is then returned as the return value of the constructor.   JavaScript Constructor Examples Here’s a few examples of constructors in JavaScript: Using the "this" Keyword When the this keyword is used in a constructor, it refers to the newly created object: //Constructor function User { this. name = 'Bob'; } var user = new User;   Create Multiple Objects In JavaScript, multiple objects can be created in a constructor: //Constructor function User { this. name = 'Bob'; } var user1 = new User; var user2 = new User; In the above example, two objects are created using the same constructor.   Constructor with Parameters A constructor can also have parameters: //Constructor function User (name, age) { this. name = name; this. age = age; } var user1 = new User('Bob', 25); var user2 = new User('Alice', 27); In the above example, arguments are passed to... --- ### How to Fix SyntaxError: Unexpected Token in JavaScript > This error typically results from missing or misplaced symbols, such as parentheses, commas, or brackets, or from improper JSON formatting. Let's fix it. - Published: 2024-10-09 - Modified: 2024-10-09 - URL: https://rollbar.com/blog/how-to-fix-syntaxerror-unexpected-token-in-javascript/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript It’s a vague, unhelpful message that feels more like a riddle than an error. You know something doesn’t belong, but you're left guessing what that "token" is and why it's unexpected. Let's demystify what’s really going on behind the scenes and get your code running smoothly again. The "SyntaxError: Unexpected token" in JavaScript occurs when the code contains a character or symbol that the JavaScript engine does not expect, often due to a typo or syntax mistake. Luckily, if you read the full error log there are usually some helpful details about where the error occurred, including the line number and sometimes even the specific character position. For example: Uncaught SyntaxError: Unexpected token ',' at script. js:12:15 The part Unexpected token ',' tells you which token was unexpected—in this case, a comma. The part script. js:12:15 points you to the exact location of the error — line 12, character 15 in the file named script. js. To fix it, you’ll need to carefully review the line and nearby lines where the error is reported, checking for missing characters or incorrect syntax. For example, say you tried to define a function that takes two numbers and returns their multiplication: const multiply = x, y => x * y; You would get SyntaxError: Unexpected token ',' with that because multiple parameters in an arrow function should be enclosed in parentheses. The fix would be to edit the code to this: const multiply = (x, y) => x * y; As you can... --- ### Sales - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=sales --- ### Engineering - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=engineering --- ### Shilpa's Story with Rollbar > Rollbar has been an excellent tool for error reporting on both the server and client sides. It has greatly helped us in pinpointing and identifying the root causes of issues. By using Rollbar, we’ve been able to make our product more robust over time. - Published: 2024-09-27 - Modified: 2024-09-27 - URL: https://rollbar.com/blog/shilpas-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Shilpa Dalmia Co-Founder & Chief Technology Officer     Shilpa has now been using Rollbar for 104 months! 1. My Role ActivityHero is a marketplace where families can find and book after-school classes and holiday camps, including summer, winter, fall, and spring break camps. For school districts and activity providers, ActivityHero serves as an after-school SIS management platform, helping them manage enrollments, track attendance, generate reports, communicate with parents, and much more. I am the co-founder and CTO of ActivityHero and I manage the ActivityHero product and engineering team. 2. My Passion in the Role Our mission at ActivityHero has always been to make after-school activities accessible to all children. It has been an incredible journey to see our platform become a hub for schools, activity providers, and families seeking enriching programs for kids. We have helped countless children participate in a wide variety of activities that inspire them to succeed and thrive in their personal and career pursuits. 3. The Rollbar Experience Rollbar has been an excellent tool for error reporting on both the server and client sides. It has greatly helped us in pinpointing and identifying the root causes of issues. By using Rollbar, we’ve been able to make our product more robust over time. We especially appreciate the detailed information Rollbar tracks, which helps us determine the scenarios in which particular issues occur. Additionally, features like GitHub integration, which allows us to track issues directly in GitHub, and Slack integration, which notifies us as soon as errors... --- ### JavaScript Constructors: What You Need to Know > JavaScript constructors are special functions that creates and initializes an object instance of a class when created using the "new" keyword. - Published: 2021-12-06 - Modified: 2022-12-12 - URL: https://rollbar.com/blog/javascript-constructors/ - Categories: topics - Tags: JavaScript What is a Constructor in JavaScript? A constructor is a special function that creates and initializes an object instance of a class. In JavaScript, a constructor gets called when an object is created using the new keyword. The purpose of a constructor is to create a new object and set values for any existing object properties.   What Happens When A Constructor Gets Called? When a constructor gets invoked in JavaScript, the following sequence of operations take place: A new empty object gets created. The this keyword begins to refer to the new object and it becomes the current instance object. The new object is then returned as the return value of the constructor.   JavaScript Constructor Examples Here’s a few examples of constructors in JavaScript: Using the "this" Keyword When the this keyword is used in a constructor, it refers to the newly created object: //Constructor function User { this. name = 'Bob'; } var user = new User;   Create Multiple Objects In JavaScript, multiple objects can be created in a constructor: //Constructor function User { this. name = 'Bob'; } var user1 = new User; var user2 = new User; In the above example, two objects are created using the same constructor.   Constructor with Parameters A constructor can also have parameters: //Constructor function User (name, age) { this. name = name; this. age = age; } var user1 = new User('Bob', 25); var user2 = new User('Alice', 27); In the above example, arguments are passed to... --- ### Operations - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=operations --- ### Product Design - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=product-design --- ### Reduce noise and save time with the new Merge feature on the item detail page > We are excited to release a new feature that will make it easier to group your items, reduce noise, and simplify your error management directly from the Item Detail page header. While you are investigating an item,, you can now search for other items within the same project and environment and merge right from that page without having to navigate back to the Item List page. - Published: 2024-09-25 - Modified: 2024-09-25 - URL: https://rollbar.com/blog/item-merge/ - Categories: product - Tags: Usage Notifications We are excited to release a new feature that will make it easier to group your items, reduce noise, and simplify your error management directly from the Item Detail page header. While you are investigating an item,, you can now search for other items within the same project and environment and merge right from that page without having to navigate back to the Item List page. With all the details in front of you, this feature allows you to efficiently merge related items, helping to keep your Rollbar environment cleaner and more organized. Merging and grouping items helps you maintain focus on the information you find most relevant and keep a cleaner view of your Rollbar environment, so you can get a better idea of the current state of your system and find it easier to spot and address new issues. How it Works: Click the Merge button in the header of the item detail page. Use the merge panel to search for other items, grouping them into a new merged item or adding them to an existing group. We hope this enhancement will improve clarity, give you a clearer view of your system’s state, and allow you to resolve issues more efficiently. --- ### Finance - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=finance --- ### Introducing Adaptive Alerts: Detect application-level error trends > Adaptive Alerts is a new feature from Rollbar that adds to our reliable, informative and actionable alerts about unexpected issues in monitored applications and services. Adaptive Alerts uses anomaly detection to learn the standard behavior of enterprise applications, and alerts developers about atypical exception rates, reducing unwanted noise. - Published: 2021-12-02 - Modified: 2022-07-23 - URL: https://rollbar.com/blog/introducing-adaptive-alerts-detect-application-level-trends-with-greater-accuracy/ - Categories: product - Tags: adaptive alerts Adaptive Alerts is a new feature from Rollbar that adds to our reliable, informative and actionable alerts about unexpected issues in monitored applications and services. Adaptive Alerts uses anomaly detection to learn the baseline rates of various error types in your production applications, and alerts developers about atypical exception rates. When Errors Become More Active Production applications often have a large number of unique errors that are open, but not a priority to fix as long as they occur at a low rate. Developers and SREs want to know when such errors become more active than usual, so that they can resolve them if needed. But alerts based on fixed error thresholds generate too much noise and waste valuable developer time. Brian Rue, our CEO and co-founder says, “Error alerting is important, but historically developers have had to deal with a lot of noise. Adaptive Alerts is the next generation of trendline alerting in Rollbar. Compared to the previous generation, which Rollbar customers know as the 10^nth Occurrence and High Occurrence Rate, Adaptive Alerts sends 86% fewer notifications, thanks to automatically adjusting thresholds, and a broader exception-level view that effectively detects application-level trends. ” Training and Anomaly Detection The Rollbar algorithm is continuously trained using two weeks of historical data for each product/application. After analyzing a project’s historical data, Adaptive Alerts determines a baseline, monitors the exceptions rate continuously, and sends an alert within minutes when it detects something significant. Users can adjust the minimum exception rate to alert and... --- ### Talent - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=talent --- ### How to Fix TypeError: Cannot Read Property of Undefined in JavaScript > This guide explains the root causes and offers multiple solutions from basic checks to advanced ES2020+ features like optional chaining. - Published: 2024-09-16 - Modified: 2025-03-17 - URL: https://rollbar.com/blog/javascript-typeerror-cannot-read-property-of-undefined/ - Categories: Code Tutorials, JavaScript - Tags: error-handling, error-monitoring, JavaScript Imagine you're at a buffet, eagerly approaching what you think is the dessert table, only to find an empty space where the chocolate cake should be. That disappointing moment? That's pretty much what happens in your code when you encounter the infamous "Cannot read properties of undefined" error. Just as you can't slice a piece of cake that isn't there, JavaScript can't read a property of an object that doesn't exist. But don't worry! Unlike that missing cake (which is truly a tragedy), this JavaScript error is something we can fix. In this guide we’ll unpack this common coding hiccup, understand why it happens, and explore several ways to prevent and handle it. What Causes “TypeError: Cannot Read Property of Undefined”? This error happens when you attempt to use a variable or object that hasn't been properly initialized or doesn't exist. Undefined means that a variable has been declared but has not been assigned a value, or you're trying to access a property that doesn't exist on an object. In JavaScript, properties and functions can only belong to objects. Since undefined is not an object type, calling a function or accessing a property on such a variable causes the TypeError: Cannot read property of undefined. To fix this, you can: Ensure the object exists before accessing its properties Use optional chaining (obj? . x) to safely access nested properties Provide default values using the OR operator (||) or nullish coalescing operator (? ? ) Let’s go through an example. “TypeError:... --- ### Country Manager, Hungary - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=country-manager-hungary --- ### Marketing - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=marketing --- ### How to use the Throws keyword in Java (and when to use Throw) > Both throw and throws are concepts of exception handling in Java. The throws keyword is used to ..., while the throw keyword is used to explicitly... - Published: 2024-09-16 - Modified: 2024-09-16 - URL: https://rollbar.com/blog/how-to-use-the-throws-keyword-in-java-and-when-to-use-throw/ - Categories: Code Tutorials, Java - Tags: java Imagine you're a postal worker sorting through a mountain of packages. Some packages are ticking suspiciously, while others are leaking mysterious liquids. As a responsible postal worker, you have two choices: deal with these problematic packages yourself (throw) or slap a big "HANDLE WITH CARE" sticker on them and pass them along to the next person in line (throws). Think of throw as actually creating an error in your program. You use it when something goes wrong and you want to stop the program. For example, you might use throw if someone enters an invalid password. On the other hand, throws is like a warning sign. You write it after the name of a function to say, "Hey, this part might cause an error. " It doesn't actually create the error; it just warns that an error could happen. You usually see throws next to functions that might have problems, like reading a file that might not exist. In short, throw makes errors happen, while throws just warns about possible errors. Java Throws Keyword The throws keyword in Java is used to declare exceptions that can occur during the execution of a program. For any method that can throw exceptions, it is mandatory to use the throws keyword to list the exceptions that can be thrown. The throws keyword provides information about the exceptions to the programmer as well as to the caller of the method that throws the exceptions. The throws keyword allows exceptions to be propagated in the... --- ### Product - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=product --- ### How to Resolve The Cannot Find Symbol Error in Java > The cannot find symbol error refers to a situation where the Java compiler is unable to find the symbol associated with a given identifier. - Published: 2021-11-25 - Modified: 2025-03-17 - URL: https://rollbar.com/blog/how-to-resolve-the-cannot-find-symbol-error-in-java/ - Categories: Code Tutorials, Java - Tags: error-handling, error-monitoring, java Introduction to Symbol Tables Symbol tables are an important data structure created and maintained by compilers to store information associated with identifiers in a given source code. This information is entered into the symbol tables during lexical and syntax analysis and is used in the later phases of compilation. As the declarations of classes, interfaces, variables, and methods are processed, their identifiers are bound to corresponding entries in the symbol tables. When uses of these identifiers are encountered in the source code, the compiler looks them up in the symbol tables and relies on this information for things such as verifying that a variable has been declared, determining the scope of a variable, and verifying that an expression is semantically correct with type checking. Symbol tables are also used for code generation and optimization . A simplified representation of a symbol table entry (or simply, a symbol) in Java has the following format: . Given a global variable declaration like final double ratio; the corresponding symbol would then be . Install the Java SDK to identify and fix exceptions Cannot Find Symbol Error As its name implies, the cannot find symbol error refers to a symbol which cannot be found. While there are multiple ways and reasons this can occur, they all boil down to the fact that the Java compiler is unable to find the symbol associated with a given identifier. The message produced by the compiler for the cannot find symbol error includes two additional fields: “symbol”—the name... --- ### Co-founder and CEO - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=co-founder-and-ceo --- ### 3 Ways to Fix “jquery is not defined” > Discover common causes like incorrect capitalization, missing script tags, and loading order issues. Get step-by-step solutions and best practices. - Published: 2024-09-13 - Modified: 2024-09-13 - URL: https://rollbar.com/blog/fix-jquery-is-not-defined/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript You've just stumbled into one of the most common jQuery pitfalls. The "jquery is not defined" error is a JavaScript ReferenceError that occurs when your script tries to use jQuery functions or methods, but the jQuery library is not properly loaded or initialized. How did this happen? Probably one of three reasons: The jQuery library is not included in the HTML file The script using jQuery is executed before the library is loaded There's a typo in the jQuery reference (e. g. , using lowercase 'jquery' instead of 'jQuery') Let’s start with the last reason as that’s the easiest to fix. There's a typo in the jQuery reference You have a capitalization error, as the correct reference should be jQuery (with a capital 'J') or $. Here's an example of code that would cause this error: jQuery Error Example Hello, World! This code will produce the error "uncaught referenceerror jquery is not defined" because the code is using lowercase jquery instead of jQuery or $. To fix this error, you need to use the correct capitalization for jQuery: jQuery Error Fixed Hello, World! Remember, it's generally a good practice to use $ instead of jQuery for brevity, unless you're in an environment where $ might conflict with other libraries. Both $ and jQuery are valid ways to reference the jQuery object once the library is properly loaded. The jQuery library is not included in the HTML file If you don’t see any lowercase ‘jquery’ instances in your code, check if... --- ### Customer Success - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=customer-success --- ### How to Handle the <Identifier> Expected Error in Java > The expected error in Java occurs when an expression statement is written outside of a constructor/method/instance initialization block. - Published: 2021-11-22 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/how-to-handle-the-identifier-expected-error-in-java/ - Categories: Code Tutorials, Java - Tags: java Introduction to Identifiers By definition, an identifier in Java is a sequence of one or more characters, where the first character must be a valid first character (letter, $, _) and each subsequent character in the sequence must be a valid non-first character (letter, digit, $, _). An identifier can be used to name a package, a class, an interface, a method, a variable, etc. An identifier may contain letters and digits from the entire Unicode character set, which supports most writing scripts in use in the world today, including the large sets for Chinese, Japanese, and Korean. This allows programmers to use identifiers in programs written in their native languages .   Identifier Expected Error: What It Is & What Triggers It The initial phase of the Java compilation process involves lexical analysis of the source code. The compiler reads the input code as a stream of characters and categorizes them into lexemes of tokens, before proceeding to parse the tokens into a syntax tree. Here is where all tokens, including identifiers, are being checked against a predefined set of grammar rules. When the compiler reaches a point where, according to these rules, an identifier is expected to appear but something else is found instead, it raises the expected error, where the angle brackets denote a reference to a token object . The expected error is a very common Java compile-time error faced by novice programmers and people starting to learn the language. This error typically occurs when an... --- ### Revenue Operations - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=revenue-operations --- ### How to Fix the EOFException in Java.io > This exception typically pops up when you're working with streams of data, such as reading from a file or receiving data over a network. Learn how to fix it. - Published: 2024-08-25 - Modified: 2025-02-24 - URL: https://rollbar.com/blog/java-eofexception/ - Categories: Code Tutorials, Java - Tags: java The java. io. EOFException is a checked exception in Java that occurs when an end of file or end of stream is reached unexpectedly during input. It's Java's way of letting you know, "Hey, I was expecting more data here, but there's nothing left to read! " Since EOFException is a checked exception, it must be explicitly handled in methods that can throw this exception - either by using a try-catch block or by throwing it up the chain using the throws clause. What Causes EOFException Here are some common scenarios that can lead to an EOFException: Reading Beyond Available Data When using classes like DataInputStream, ObjectInputStream, or RandomAccessFile, if you attempt to read more data than is available, an EOFException will be thrown. For example: Trying to read an int (4 bytes) when only 2 bytes are left in the stream. Attempting to read a UTF-8 encoded string, but reaching the end of the stream before the full string is read. Unexpected End of Stream In network communications or when reading compressed data (using ZipInputStream or GZIPInputStream), the stream might end prematurely due to connection issues or corrupted data. Serialization Issues When using ObjectInputStream to deserialize objects, an EOFException can occur if the stream ends before all expected object data is read. Mismatched Read Operations If you're using different read methods than those used to write the data, you might encounter an EOFException. For instance, writing data as bytes but trying to read it as integers. File Truncation If... --- ### Developer Advocate - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=developer-advocate --- ## Customers ### How to Fix ReferenceError: Require is Not Defined in JavaScript > Since require is specific to Node.js, if JavaScript code is executed outside of a Node.js environment, require will not be recognized. - Published: 2024-08-25 - Modified: 2024-08-26 - URL: https://rollbar.com/blog/referenceerror-require-is-not-defined-javascript/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript So, you've run into the dreaded ReferenceError: require is not defined error, huh? Don't sweat it – we've all been there. The "require is not defined" error is just your code's way of saying, "Hey, I think we need to talk about modules. " It’s confusing at first, but totally solvable once you know the tricks. Let's break this down and get you back to coding bliss. Why is Require Not Defined? Alright, let's start with the basics. The require function is like a helpful friend who fetches stuff for you. It's part of the CommonJS module system, which is Node. js's way of organizing code. But here's the kicker – it's not a built-in feature of JavaScript and is not recognized by web browsers. Put simply, require is a method used to load modules or external dependencies in a Node. js environment but you’re attempting to use it outside of Node. js. Or if you are working in Node. js, something’s off with your setup. ReferenceError: Require is Not Defined Example Here’s an example of a Javascript ReferenceError: require is not defined thrown trying to use the require function: const fs = require('fs'); In the above example, the fs module is attempted to be imported in a web browser environment by calling the require function. However, since require is not available in web browsers, running the above code throws a ReferenceError: Uncaught ReferenceError: require is not defined How to Fix ReferenceError: Require is Not Defined Understand where your code... --- ### eCommerce - Published: 2021-10-18 - Modified: 2021-11-09 - URL: https://rollbar.com/customers/ecommerce/ --- ### Plexus - Published: 2021-09-22 - Modified: 2021-11-09 - URL: https://rollbar.com/customers/plexus/ --- ### Shortcut - Published: 2021-07-28 - Modified: 2022-12-07 - URL: https://rollbar.com/customers/shortcut/ --- ### Spring vs. Spring Boot: Whats the Difference > Spring Boot was introduced as a Spring Framework as the latter has become increasingly complex because of added functionalities. - Published: 2021-11-16 - Modified: 2022-05-03 - URL: https://rollbar.com/blog/spring-vs-spring-boot-whats-the-difference/ - Categories: topics - Tags: java, spring, spring boot Spring vs. Spring Boot Spring is the most popular application development framework in Java. However, over the past few years, Spring has become increasingly complex because of added functionalities. Starting a new project usually requires going through a lengthy process and takes a lot of time. To avoid starting from scratch and to save time, Spring Boot was introduced. Spring Boot uses Spring as its foundation layer and allows developers to build a standalone application with none or minimal configuration. It is targeted specifically towards building web applications and microservices.   What is Spring? Spring is a lightweight open-source Java development framework. It provides a comprehensive programming and configuration model for developing enterprise level Java applications. It aims to simplify enterprise Java development and helps developers build applications more effectively and efficiently. Spring focuses on several areas of application development and provides a wide range of features.   Spring Main Features One of the major features of Spring is dependency injection, which allows developing loosely coupled applications. It also includes the following modules out of the box: Spring MVC Spring JDBC Spring Web Flow Spring Security Spring ORM Spring AOP Spring Test These modules offer better functionalities for web applications and drastically reduce development time.   Spring Use Cases Some of the tasks that can be performed using Spring are: Building serverless applications Creating scalable microservices Ensuring top-notch server-side security Building asynchronous applications Creating batches to automate tasks Event driven architecture   Benefits of Spring Can be used for all... --- ### Everplans - Published: 2021-07-28 - Modified: 2021-08-16 - URL: https://rollbar.com/customers/everplans/ --- ### Xyla AI's Story with Rollbar > We use Rollbar for all our error reporting. It's used by our engineering team to notify us of issues that arise and to help us debug them. It's really helpful in cutting through the noise and letting us know only the errors that we need to care about. - Published: 2024-08-12 - Modified: 2024-08-12 - URL: https://rollbar.com/blog/xyla-ais-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Xyla AI is fully automated social media management. We take care of your content while you focus on selling products.   1. Describe your company and the service(s) offered. Xyla. AI is an AI social media autopilot for Shopify stores. Connect it to your store and it'll automatically create and schedule social media posts with fun-facts, motivational quotes, and memes, all tailored to your individual brand and tone of voice. Sprinkled with posts on store products, such as new-in and best-sellers. Link your social media accounts and it'll publish to your Instagram, Facebook, Pinterest, TikTok and X profiles. 2. What are you most passionate about in your current and/or past roles? We use Rollbar for all our error reporting. It's used by our engineering team to notify us of issues that arise and to help us debug them. It's really helpful in cutting through the noise and letting us know only the errors that we need to care about. When this happens, we receive an alert. The Rollbar dashboard is our first point of call. It's great at pointing you in the right direction to solve an issue. 3. What made you choose Rollbar? Rollbar integrates seamlessly with Ruby on Rails. I've used it in many projects over the years and it's never let me down. It's easy to use and great value for money. Visit XylaAI. com --- ### FinTech - Published: 2021-07-28 - Modified: 2021-08-16 - URL: https://rollbar.com/customers/fintech/ --- ### How to Fix Unreachable Statement Errors in Java > The “Unreachable Statement” error in Java arises when the compiler detects a statement that's never executable in the program's control flow. - Published: 2021-11-15 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/handling-the-unreachable-statement-error-in-java/ - Categories: Code Tutorials, Java - Tags: java Introduction to Statements and Compile-time Errors in Java Statements are foundational language constructs that have an effect on the execution of a program. Statements are similar to sentences in natural languages. In Java, there are three main types of statements, namely expression statements, declaration statements, and control-flow statements . As a compiled programming language, Java has an inbuilt mechanism for preventing many source code errors from winding up in executable programs and surfacing in production environments . One such error, related to statements, is the unreachable statement error.   What Causes the Unreachable Statement Error? By performing semantic data flow analysis, the Java compiler checks that every statement is reachable and makes sure that there exists an execution path from the beginning of a constructor, method, instance initializer, or static initializer that contains the statement, to the statement itself. If it finds a statement for which there is no such path, the compiler raises the unreachable statement error .   Unreachable Statement Error Examples After a branching control-flow statement The break, continue, and return branching statements allow the flow of execution to jump to a different part of the program. The break statement allows breaking out of a loop, the continue statement skips the current iteration of a loop, and the return statement exits a method and returns the execution flow to where the method was invoked . Any statement that follows immediately after a branching statement is, by default, unreachable. After break When the code in Fig. 1(a) is... --- ### How to Catch Multiple Exceptions in Java > Sometimes multiple catch blocks are best; other times, multi-catch or a catch-all block might be more appropriate. Learn all the best practices here. - Published: 2024-08-12 - Modified: 2024-08-12 - URL: https://rollbar.com/blog/how-to-catch-multiple-exceptions-in-java/ - Categories: Code Tutorials, Java - Tags: java Your Java code was humming along smoothly until... BAM! An exception. No problem, you caught it. But wait, there's another. And another. Suddenly, you're juggling exceptions like you’re in the circus. Don't worry, Java's got your back. Java offers three ways to catch multiple exceptions: using multiple catch blocks for different exception types, the multi-catch feature to handle multiple exceptions in a single block, and a catch-all block for general exception handling. Let’s look in depth at each. Use multiple catch blocks Multiple catch blocks allow you to handle different types of exceptions separately. Here's a simple example: try { // code that may throw exceptions } catch (IOException e) { // handle IOException } catch (SQLException e) { // handle SQLException } Let’s take a look at a runnable example: public class MultipleExceptionExample { public static void main(String args) { try { int numbers = {1, 2, 3}; System. out. println(numbers); // Throws ArrayIndexOutOfBoundsException int result = 10 / 0; // This line is never reached } catch (ArrayIndexOutOfBoundsException e) { System. out. println("Array index out of bounds"); } catch (ArithmeticException e) { System. out. println("Arithmetic error"); } System. out. println("After try-catch block"); } } This is what happens when you run that: The numbers line throws an ArrayIndexOutOfBoundsException. Java immediately jumps to the first matching catch block. The ArrayIndexOutOfBoundsException is caught and handled. The rest of the try block (i. e. int result = 10 / 0;) is skipped. Execution continues after all the catch blocks with "After... --- ### Greenhouse - Published: 2021-07-28 - Modified: 2023-05-23 - URL: https://rollbar.com/customers/greenhouse/ --- ### Coding Java Applications the Serverless Way > Advantages, disadvantages, and use cases of going serverless with Java. Build ✓on-demand, ✓high-availability apps without tedious server management! - Published: 2021-11-08 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/guide-to-going-serverless-with-java/ - Categories: Code Tutorials, Java - Tags: java, serverless j What is Serverless Java? Serverless Java applications use modern cloud computing to let developers focus on business logic rather than infrastructure. In a serverless environment, the infrastructure provider takes care of scaling, runtimes, resource management, security and other specifics. Concerns such as number of instances to run and which OS to use are managed by Function as a Service (FaaS) platforms, allowing developers to focus on application code. A serverless Java setup allows developers to build and run applications on-demand, guaranteeing high availability without having to manage servers themselves. Servers still exist behind the scenes, but they are abstracted away from application development.   Serverless Application Characteristics Serverless applications have a number of specific properties, including the following: Event-driven execution using triggers Resource management handled by the platform including starting, stopping and scaling Scales down to zero, with no or low cost when idle Stateless A serverless Java architecture is simple to comprehend. Developers write code that performs certain operations and trigger execution in response to an event. These events could be generated by the system or the end-user. As an example, in AWS, API Gateway can be used to handle HTTP requests, Lambda to handle business logic and RedShift to store data.   Advantages of Serverless with Java Serverless applications offer the following advantages: Simple delivery - Using cloud services to build a Java application and writing the smallest possible amount of code is quite an effective and attractive model. Developers are relieved from having to create boilerplate,... --- ### CircleCI - Published: 2021-07-28 - Modified: 2023-05-23 - URL: https://rollbar.com/customers/circleci/ --- ### New Rollbar Dashboard > We're thrilled to introduce a major update to your Rollbar experience: the new Rollbar Dashboard! Designed with your workflow in mind, this dashboard provides an intuitive, customizable view of your application’s item activity and project setup, all in one place. - Published: 2024-07-30 - Modified: 2024-07-31 - URL: https://rollbar.com/blog/introducing-new-dashboard/ - Categories: product - Tags: Usage Notifications We're thrilled to introduce a major update to your Rollbar experience: the new Rollbar Dashboard! Designed with your workflow in mind, this dashboard provides an intuitive, customizable view of your application’s item activity and project setup, all in one place. https://www. youtube. com/watch? v=F2ldMkrukBI Occurrence Card The Occurrence Card has been updated with a new design. It will still be familiar with all the same features, including comparing your current occurrences with previous periods to identify trends and spikes, filtering by project, environment, or item levels to focus on what matters most to you, and seeing detailed tables of occurrences, activations, item levels, and deploys. Explore More Cards But there's more! Your new dashboard comes with a suite of additional cards, ready for you to explore and customize. Simply click on the dashboard menu to reveal: Welcome Card: A helpful checklist to integrate Rollbar seamlessly. Projects Card: An overview of all your projects, their items, and settings. Integrations Card: A glance at your account integrations with third-party applications. Team Card: Quick access to your account’s teams and members. Users Card: Manage your account members with ease. These cards provide a comprehensive view of your Rollbar environment, allowing you to tailor the dashboard to your needs. Just click the new 3 dot menu in the top right corner to add additional cards to your dashboard. Future Enhancements Wait! We’re not stopping there! We’re working on making these cards shareable so you can collaborate more effectively with your team. Additionally, we’re developing... --- ### CVENT - Published: 2021-07-28 - Modified: 2021-11-09 - URL: https://rollbar.com/customers/cvent/ --- ### What Are Cloud Native Java Applications & Architectures > Cloud-native Java is an approach to building and running a Java application that provides organizations with greater elasticity, resiliency, and portability. - Published: 2021-11-03 - Modified: 2022-06-23 - URL: https://rollbar.com/blog/what-is-cloud-native-java/ - Categories: topics - Tags: cloud native, java   What is Cloud Native Java Cloud-native has been one of the biggest trends in software development for quite a while. Developing, deploying and managing applications outside of local machines and entirely in the cloud offers countless opportunities to businesses. The cloud computing delivery model helps them bring new ideas to market faster and respond swiftly to customer requests. From a technical point of view, cloud-native development provides faster and lighter runtimes, reduces complexity and stabilizes applications. It provides distributed application architecture with elasticity and resilience that allows businesses to adapt quickly to ever-changing needs. Businesses that use Java to build cloud-native applications are major beneficiaries of this approach due to its popularity, consistency, reliability and scalability. Java concepts like containers, JVM optimizations, multi-purpose frameworks and native image technology offer further advantages. In this article, an introduction is provided into cloud-native development using Java, as well as the useful tools, components and approaches of cloud-native Java.   Key Components of Cloud Native Applications Cloud-native methodology incorporates the following architecture principles: Microservices: A microservice is a small, individual application that can be deployed, upgraded, scaled and restarted independently of other applications. A microservices architecture is a set of loosely coupled elements that run independently, each executing its own business logic, running its own process and communicating with other services via APIs or messaging. Microservices are lightweight compared to monolithic architectures and are great for building clean interfaces. Containers: Containers are an alternative to virtual machines (VMs) - leveraging a separate and... --- ### How to Fix the "document is not defined" Error in JavaScript > By ensuring you're in a browser context and that the DOM is fully loaded before you access ‘document’, you can avoid this error. - Published: 2024-07-18 - Modified: 2024-07-18 - URL: https://rollbar.com/blog/how-to-fix-document-is-not-defined-error-javascript/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript If you've encountered the "document is not defined" error while working with JavaScript, you're not alone. This common error can be frustrating, but it's usually straightforward to resolve once you understand its causes. Let's explore what this error means, why it occurs, and how to fix it. What is the 'document'? In web development, document is a crucial part of the Document Object Model (DOM). It represents the entire HTML document and serves as the entry point for accessing and manipulating the content on a web page. // A typical use of the document object document. getElementById('myElement'); Common Causes of the "document is not defined" Error There are two primary scenarios where you might encounter this error: 1) running JavaScript outside a browser environment, such as in Node. js, where the document object is not available, or 2) trying to access ‘document’ before the DOM has fully loaded in a web page. 1. Running JavaScript in a Non-Browser Environment JavaScript can run in various environments, not just browsers. If you try to use document in an environment like Node. js, you'll encounter this error because document doesn't exist there. // This works in a browser document. querySelector('button'). addEventListener('click', => { console. log('Button clicked! '); }); // But in Node. js, this would cause the "document is not defined" error 2. Accessing 'document' Before the DOM is Fully Loaded If your JavaScript code tries to access document before the DOM has finished loading, you may run into this error. How to... --- ### Twilio - Published: 2021-07-28 - Modified: 2023-05-23 - URL: https://rollbar.com/customers/twilio/ --- ## Changelogs ### Quarkus vs Spring Boot: Which Framework is Right for You > If you’re vacillating between the extremely popular Quarkus and Spring Boot microservices frameworks for building cloud-native Java apps, we’re here to help. - Published: 2021-11-01 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/quarkus-vs-spring-boot/ - Categories: Code Tutorials, Java - Tags: frameworks, spring In modern application architecture and development, there has been a push from monolithic applications towards microservices. This has made microservices frameworks (micro-frameworks) very popular since they make it easier to prototype, design and build microservices applications. Spring Boot and Quarkus are both very popular microservices frameworks for building cloud native Java applications. In this article, several features of Spring Boot and Quarkus will be discussed such as core capabilities, memory consumption, ease of development and performance to help developers decide which one to pick for building their application. What is Quarkus? Quarkus is a Kubernetes native Java framework for developing and delivering small artefacts and is an effective platform for serverless, cloud-native environments. Quarkus is similar to Spring Boot but with an additional promise of faster boot times, lower request times and offers developers a unified reactive and imperative programming model to address a broad range of distributed application architectures optimally. Quarkus is designed to work with popular Java frameworks, libraries and environments such as Eclipse Microprofile, Spring, Kafka and Hibernate. Quarkus provides dependency injection and is an extensive framework to set-up, boot and integrate applications. Quarkus Pros and Cons Some of the pros and cons of Quarkus are listed below: Pros: Lots of simple documentation is available on the web since it has several communities to help developers. The application boot time is much faster with Quarkus compared to other frameworks such as Spring Boot. This is because of the build-time metadata processing mechanism and the fact that standalone... --- ### Logging Levels in Python are Unnecessary - Just Log Everything > Is selective logging costing you valuable insights? Discover the power of logging everything in Python with Rollbar. - Published: 2024-07-18 - Modified: 2024-07-18 - URL: https://rollbar.com/blog/logging-levels-in-python-are-unnecessary/ - Categories: Code Tutorials, Python - Tags: Python I've spent countless hours debugging Python issues that could have been solved faster if I had just had more information. Today, I want to challenge a fundamental concept in Python logging: the idea of logging levels. The Traditional Approach: Python Logging Levels If you're familiar with Python's logging module, you know about the five standard logging levels: DEBUG: Detailed information, typically only valuable when diagnosing problems. INFO: Confirmation that things are working as expected. WARNING: An indication that something unexpected happened, or there may be a problem in the near future. ERROR: Due to a more serious problem, the software hasn't been able to perform some function. CRITICAL: A serious error, indicating that the program itself may be unable to continue running. These levels serve as a way to categorize log messages and filter them based on their perceived importance. It's a system that has served us well for years, but I believe it's time for a change. The Case for Logging Everything Here's my controversial take: we should stop using logging levels and instead log everything. Yes, everything. Here's why: Storage is cheap: The original rationale for logging levels was to conserve disk space. In today's world of cheap storage, this is no longer a significant concern. Information is invaluable: How many times have you wished you had more context when debugging an issue? By logging everything, you ensure you always have the information you need. Shift decision-making left: Instead of deciding what's important at coding time, we can... --- ### Scary Developer Stories to Tell in The Dark > We've all heard developer horror stories. Here are some that you submitted to Rollbar. Make sure to turn on the light and read on with caution! - Published: 2021-10-27 - Modified: 2022-05-03 - URL: https://rollbar.com/blog/developer-horror-stories-2021/ - Categories: topics - Tags: error-handling Twas the night of production, and all through the server, all the bugs were stirring... We've all heard the developer horror stories or have had our fair share of shocking experiences as a developer tackling an unfortunate event. To keep up with the Halloween season, we wanted to hear some of the spooky encounters that developers dealt with. Here are some of the stories that you submitted to Rollbar. Make sure to turn on the light and read with caution! 1. A Nightmare in Production "I learned the hard way never to use the “latest” tag for Docker images in production. One of my projects used a base image from an open source project that packaged an optical character recognition (OCR) model. I used the latest tag and my Continuous Delivery process would build the image from the ground up, whereas my local dev environment kept using its cache of the base image. This was fine for a year, but then the pandemic started and suddenly that open source project was on fire — causing major updates to the image every 12 hours. Things started changing too fast and the inevitable incompatibility with my code happened about a week in when my CD process merged my code with an incompatible update to the image. " - Anonymous Developer at Transport Company 2. "Psycho" "I'm most frightened by bugs for which the development environment behaves entirely differently than production, so I'll tell you one of those. One time, I had to... --- ### Rollbar is removing old grouping versions to improve fingerprinting in July - Published: 2022-07-12 - Modified: 2022-07-12 - URL: https://rollbar.com/development-updates/rollbar-is-removing-old-grouping-versions-to-improve-fingerprinting-in-july/ Seamless grouping is the concept of making sure that when we roll out new grouping versions, already grouped items won’t change. When we receive an occurrence, we basically fingerprint it with all previous versions, to make sure that we keep the existing grouping (if any). This means that as we keep adding new grouping versions, more and more versions need to be checked, thus the performance of the fingerprinting degrades. As we keep adding new grouping versions, more and more versions need to be checked. Thus, the performance of the fingerprinting degrades. To improve fingerprinting, we decided to remove old grouping versions. What does this mean? Removing grouping versions means that occurrences that have been grouped by these rules will be re-grouped. You might see new items generated for occurrences that have been grouped before (with the history of the original item not visible in the new item). Do I need to do anything? No action is needed from your side, the changes will take effect automatically on July 12, 2022. We continue to train our models regularly on millions of crashes to analyze frequently occurring error types and accurately distinguish different ones. This allows engineers to identify, triage, and respond to errors more quickly. Learn more about how grouping works at Rollbar --- ### Introducing Overage Budgets > We all know how tricky it can be to keep track of costs, especially when your projects spike or with the latest feature that your users love. That's why we've been working on a solution to ensure you never have surprise billing due to on-demand occurrences. - Published: 2024-07-17 - Modified: 2024-07-17 - URL: https://rollbar.com/blog/introducing-overage-budgets/ - Categories: product - Tags: Usage Notifications Say Hello to Overage Budgets We all know how tricky it can be to keep track of costs, especially when your projects spike or with the latest feature that your users love. That's why we've been working on a solution to ensure you never have surprise billing due to on-demand occurrences. Introducing our latest feature to give you both flexibility and control: Overage Budgets. Why a need for Overage Budgets: Traditionally, our billing model for occurrences operates on an "on-demand" basis, allowing for unlimited occurrences beyond plan limits. While this ensures uninterrupted service, it can sometimes lead to surprises in billing, especially after a spike in usage. The choice was binary: keep on-demand events on and adapt to the possibility of plan upgrades or turn them off and risk not being able to observe your errors. We’ve heard from you that this decision causes discomfort and most of you weren’t happy when you received the surprise bill, so it became clear that a more nuanced solution was needed—one that respects both the dynamic nature of your projects and the predictability of your budgeting. Introducing Flexibility and Control with Overage Budgets With the launch of Overage Budgets, we're changing how on-demand events are managed. This feature divides on-demand events into three categories: Off, Budgeted, and Unlimited Off mode will not change; your account will process the number of occurrences in your plan. Once you have reached your occurrences, we will stop processing errors, and you’ll have to wait until the start... --- ### Rollbar is removing old grouping versions to improve fingerprinting in April - Published: 2022-04-29 - Modified: 2022-07-12 - URL: https://rollbar.com/development-updates/rollbar-is-removing-old-grouping-versions-to-improve-fingerprinting/ Seamless grouping ensures that when we roll out new grouping versions, items that are already grouped won’t change. When we receive an occurrence, we basically fingerprint it with all previous versions to ensure that we keep the existing grouping (if any). As we keep adding new grouping versions, more and more versions need to be checked. Thus, the performance of the fingerprinting degrades. To improve fingerprinting, we decided to remove old grouping versions. What does this mean? Removing grouping versions means that occurrences that have been grouped by these rules will be re-grouped. You might see new items generated for occurrences that have been grouped before (with the history of the original item not visible in the new item). Do I need to do anything? No action is needed from your side, the changes will take effect automatically on May 18, 2022. We continue to train our models regularly on millions of crashes to analyze frequently occurring error types and accurately distinguish different ones. This allows engineers to identify, triage, and respond to errors more quickly. Learn more about how grouping works at Rollbar --- ### How to Fix The IllegalStateException in Java > The IllegalStateException in Java occures when a method has been invoked at an illegal or inappropriate time. - Published: 2024-07-05 - Modified: 2024-07-18 - URL: https://rollbar.com/blog/java-illegalstateexception/ - Categories: Code Tutorials, Java - Tags: error-handling, java An IllegalStateException is a runtime exception in Java that is thrown to indicate that a method has been invoked at an illegal or inappropriate time. To use an analogy, invoking a method in Java when the system is not in the appropriate state is like trying to start a car while it is in "Drive". Just as the car will not start because it is unsafe, a method call results in an IllegalStateException when the internal conditions necessary for its execution are not met. What Causes IllegalStateException The IllegalStateException is thrown when the Java environment or application is not in an appropriate state for the requested operation. This can occur when dealing with threads or the Collections framework of the java. util package under specific conditions. Here are examples of some methods where this exception can occur when they are called at the wrong time: Thread. start: When the Thread. start method is called on a thread that has already been started. Iterator. remove: When the remove method of the Iterator interface is called on a List without calling the next method. This leaves the List collection in an unstable state, causing an IllegalStateException. Queue. add: If an element is attempted to be added to a Queue that is full. Adding elements beyond the size of the queue will cause an IllegalStateException. IllegalStateException Examples Example One Here’s an example of an IllegalStateException thrown when the Iterator. remove method is called to remove an element from an ArrayList before calling the... --- ### How to Throw & Handle Scala Exceptions > Here's how to respond to and investigate the cause of exceptions in Scala: 1. Try/Catch → 2. Finally Clauses → 3. Custom Exceptions. - Published: 2021-10-21 - Modified: 2022-11-28 - URL: https://rollbar.com/blog/how-to-throw-handle-scala-exceptions/ - Categories: Code Tutorials, Scala - Tags: Scala An exception is an unwanted or unexpected event that occurs during the execution of a program which changes its normal flow. Exception handling is the mechanism to respond to and investigate the occurrence and cause of an exception. Generally, exceptions are of two types - checked and unchecked. Scala only allows unchecked exceptions - this means that there is no way to know if a method throws an unhandled exception at compile-time It is best practice in Scala to handle exceptions using a try{... } catch{... } block, similar to how it is used in Java, except that the catch block uses pattern matching to identify and handle exceptions.   Scala Exceptions Hierarchy All exception and error types in Scala are subclasses of the Throwable class, the base class of the Scala exception hierarchy: Fig1: Scala Exceptions Hierarchy As evident from the diagram shown above, one branch of the hierarchy under Throwable is headed by Exception, which is the class used for exceptional conditions that programs should catch. An example of an exception is NullPointerException. Another branch is Error, which is used by the Java Virtual Machine (JVM) to indicate errors that are related to the Java runtime environment itself (JRE). An example of an error is StackOverflowError.   Throwing Exceptions in Scala Throwing exceptions in Scala is very similar to how it's done in Java. An exception object is created and thrown using the throw keyword. Here is an example: throw new IllegalArgumentException   Scala try/catch Construct Scala allows... --- ### New, updated Software Development Kits are available - Published: 2022-04-28 - Modified: 2022-04-28 - URL: https://rollbar.com/development-updates/new-updated-software-development-kits-are-available/ We are pleased to announce new and updated software development kits (SDKs) and capabilities. These SDKs keep Rollbar current on both older, but very significant, platforms like . Net, PHP and Laravel and also the fastest-moving platforms like Apple iOS, React, Typescript and Flutter. “Rollbar is an essential tool from the moment developers say ‘Hello World’ in whatever language they leverage. These releases ensure that we evolve along with the range of languages and frameworks that we support,” Cyrus Radfar, Rollbar Chief Product Officer The new and updated SDKs that Rollbar unveiled today include: . Net v5: The latest release of Rollbar’s . Net SDK adds Blazor browser-side WebAssembly (Wasm) support and introduces RollbarInfrastructure. When enabled within Blazor client-side hosts, RollbarInfrastructure offloads significant payload packaging and processing to a dedicated background worker thread to be handled asynchronously. Also, Rollbar configuration can now be grouped into functionally relevant groups, or configurational options, instead of one long flat list of settings. Apple/Mac SDK: The successor to the Rollbar-iOS SDK, this new release is more lightweight, has better-defined public APIs that are more Swift-friendly and can be used on all current Apple operating systems and platforms. The modular design allows users to leverage all or just parts of this SDK, for which each SDK module is a self-contained SPM package that automatically brings in any required dependency on any other package of the SDK as needed. Also, crash reporting with this SDK is now optional. Memory management features are coming soon. Flutter Beta:... --- ### April 2022 Grouping Update - Published: 2022-04-26 - Modified: 2022-04-26 - URL: https://rollbar.com/development-updates/april-2022-grouping-update/ We are pleased to announce our new Grouping Update which introduces patterns for Elixir and Scala. Both recently supported SDKs with increasing usage and user demand Additionally, this update significantly improves grouping accuracy across all our major languages: Ruby, Java, Javascript, PHP, Python, C#, and Go allowing users to discover and respond to errors more quickly with less noise and more accurate items in the item list. We continue training our models regularly on millions of crashes to analyze frequently occurring error types and accurately distinguish different ones. As usual, these improvements have been rolled out automatically for all accounts with auto-upgrade enabled, so you can focus on fixing bugs! Learn more about how grouping works at Rollbar --- ### 6 Ways Artificial Intelligence Improves Software Development - Published: 2021-09-20 - Modified: 2021-09-30 - URL: https://rollbar.com/blog/6-ways-artificial-intelligence-improves-software-development/ - Categories: topics Artificial intelligence is transforming software development. From the code to the deployment, AI is slowly but surely upping its game and helping us discover a brand new paradigm for inventing technology. Algorithm-based machine learning is being used to accelerate the software development lifecycle and AI is supporting developers to optimize software workflow at every stage of the development process. We can expect big things in the future as AI brings in disruptive developments for software developers. As AI redefines how developers work and how their codeis built and managed, the industry should improve in leaps and bounds in terms of productivity, quality, and speed. Artificial intelligence is a term for computer systems that can perform tasks that require human intelligence and discernment, like the ability to reason, perceive, and generalize. The computer should be able to sense its environment and take action according to what it learns. AI algorithms can improve project planning, aid with automation QA (quality assurance), and enhance user experience. A recent report found that AI-enhanced software development increased the productivity of a developer by 10 times. Here are some ways AI can power your software development and deployment processes by automating various cognitive and physical tasks. 1. Increase in the Speed and Scale of Development How DevOps will change once AI is rooted within every part of it can be judged by key aspects of software delivery performance. Deployment frequency, lead time for changes, and time to restore service are all key performance indicators that are... --- ### How to Fix "Illegal Start of Expression" in Java > The “illegal start of expression” error in Java often arises from an insufficient familiarity with the language or due to basic negligence. Learn how to fix it. - Published: 2024-07-05 - Modified: 2024-07-05 - URL: https://rollbar.com/blog/how-to-fix-illegal-start-of-expression-in-java/ - Categories: Code Tutorials, Java - Tags: error-handling, java Introduction to Java Compile-time Errors Over the past two and a half decades, Java has consistently been ranked as one of the top 3 most popular programming languages in the world , . As a compiled language, any source code written in Java needs to be translated (i. e. , compiled) into machine code before it can be executed. Unlike other compiled languages where programs are compiled directly into machine code, the Java compiler converts the source code into intermediate code, or bytecode, which is then translated into machine code for a specific platform by the Java Virtual Machine (JVM). This, in the simplest of terms, is how Java achieves its platform independence (Fig. 1). One advantage that comes with being a compiled language is the fact that many errors stemming from incorrect language syntax and semantics (such as “illegal start of expression”) can be captured in the compilation process, before a program is run and they inadvertently find their way into production environments. Since they occur at the time of compilation, these errors are commonly referred to as compile-time errors. The Java compiler can detect syntax and static semantic errors, although it is incapable of recognizing dynamic semantic errors. The latter are logical errors that don’t violate any formal rules and as such cannot be detected at compile-time; they only become visible at runtime and can be captured by well-designed tests. When it encounters an error it can recognize, the Java compiler generates a message indicating the type of... --- ### Slack Oauth 2.0 system is available for your Rollbar projects - Published: 2022-03-18 - Modified: 2022-03-18 - URL: https://rollbar.com/development-updates/slack-oauth-2-0-system-is-available-for-your-rollbar-projects/ Rollbar is adopting the updated Oauth 2. 0 flow created by Slack. Slack has revised their access tokens and now allows the Rollbar Slack bot to have its own credentials. This replaces the use of member’s credentials.   What does this mean? You don’t have to switch over, but you should consider the benefits of migrating. To complete the migration, you must add the Rollbar Slack bot to any channels that you'd like to post alerts.   What are the benefits of Bot Tokens on Slack? Slack integration will use a single bot token, so there will not be any confusion regarding switching user access tokens. You will have the chance to manually enter the appropriate Slack channel via a text input box, which will eliminate the long load times of a drop-down for channel selection when configuring Slack notifications. When team members leave your Slack workspace, their “owned” tokens do not need to be swapped out as they would today. How to migrate to Slack Oauth 2. 0? We recommend you complete the migration process to ensure continued support of notifications. To start the migration process for the new Slack Oauth 2. 0 version, you will need to go to your Account Settingsand follow the steps in Rollbar.   Migrate to Slack Oauth 2. 0  1. Go toSettings, and selectSlack, underNotifications. 2. On theManage Account Slack Settingspage, begin the migration process by clicking on theAdd to Slackbutton. 3. On the upper left corner,select the Slack workplaceyou want to add... --- ### January 2022 Grouping Update - Published: 2021-12-20 - Modified: 2022-03-18 - URL: https://rollbar.com/development-updates/january-2022-grouping-update/ This month we are excited to roll out a new January Grouping Update which significantly improves Grouping quality for some of our more relevant SDKs. Mainly PHP, Ruby, Python and Javascript. This update simplifies over 100 Grouping rules within our Grouping rule set by: Reducing overgrouping with new rules placeholders added and an increase of 4. 16% in successful new fingerprints Fixing undergrouping by removing generic rules and decrease of 16. 36% in the affected fingerprints Finally, and the most exciting part, these improvements have been rolled out automatically for all accounts with auto-upgrade enabled, so you can focus on fixing bugs while we take care of the squashing effort! --- ### What is the Quickest Way to Show All PHP Errors > Viewing PHP errors is critical for developers to troubleshoot an application. Learn how to show all PHP errors and warning notifications. - Published: 2021-09-16 - Modified: 2022-12-12 - URL: https://rollbar.com/blog/what-is-the-quickest-way-to-show-all-php-errors/ - Categories: Code Tutorials, PHP - Tags: PHP A PHP application may produce many different levels of errors and warnings when executed. Viewing these errors is critical for developers to troubleshoot an application. However, difficulties are often encountered when trying to display errors from PHP applications, which often fail silently. Quickest Way to Show All PHP Errors Adding the following lines to your PHP code is the quickest way to show all PHP errors and warnings: ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL); The above functions are directives work as follows: ini_set The ini_set function tries to override the configuration found in the PHP . ini file. display_errors The display_errors is a directive that determines whether the errors will be shown to the user or remain hidden. This should usually be disabled after development. display_startup_errors The display_startup_errors is also a directive, which is used to find the errors encountered during the PHP startup sequence. This is a separate directive because the display_errors directive does not handle such errors. Unfortunately, the display_errors and display_startup_errors directives do not show parse errors such as missing semicolons or curly braces. The PHP ini configuration must be modified to achieve this. error_reporting The error_reporting is a native PHP function that is used to show errors. This function can be used to report all types of errors in the PHP script. For that, the named constant E_ALL is used as the argument in the function. Configure PHP. ini to Display All Errors and Warnings If adding the above functions and directives does not show all errors,... --- ### How to Handle Checked & Unchecked Exceptions in Java > There are 2 types of Java Exceptions → ✓Checked ✓Unchecked. Learn more about Java Exceptions & How to Handle Them Now! - Published: 2024-07-05 - Modified: 2024-07-05 - URL: https://rollbar.com/blog/how-to-handle-checked-unchecked-exceptions-in-java/ - Categories: Code Tutorials, Java - Tags: java Fig1: Types of Exceptions in Java, Checked vs Unchecked Exceptions in Java can be divided into two main types: checked and unchecked. Checked exceptions are problems that Java forces you to plan for in advance. You must either handle them or declare that your method might throw them. They're usually for external factors that you can anticipate. Unchecked exceptions, on the other hand, are problems that Java doesn't force you to plan for. You can handle them if you want, but you're not required to. They're often due to programming errors. Put another way, think of them like potential hazards when driving your car. Checked exceptions are like road construction or bad weather. You know these might happen, so you're required to prepare for them, like checking if chains are required on a certain route. Unchecked exceptions are like running out of gas or getting a flat tire. These are things that could happen due to your own oversight. You're not legally required to constantly check your fuel gauge or tire pressure, but if these problems occur, your trip will still be disrupted. Let's take a closer look at the differences with some examples. Checked Exceptions in Java In broad terms, a checked exception (also called a logical exception) in Java is something that has gone wrong in your code and is potentially recoverable. For example, if there’s a client error when calling another API, we could retry from that exception and see if the API is back up and... --- ### Update regarding Log4j Java vulnerabilities - Published: 2021-12-15 - Modified: 2022-02-10 - URL: https://rollbar.com/development-updates/update-regarding-log4j-java-vulnerabilities/ Rollbar is aware of the Log4j Java vulnerabilities (CVE-2021-44228 and CVE-2021-45046) and we have updated all the potentially impacted infrastructure and we are making updates available for our Java SDK users. We are dedicated to making sure that Rollbar runs quickly and securely within your applications.  Learn about how we’ve addressed the Log4J “Log4Shell” zero-day CVE-2021-44228 and CVE-2021-45046 --- ### December 2021 Grouping Update - Published: 2021-12-07 - Modified: 2022-02-10 - URL: https://rollbar.com/development-updates/december-2021-grouping-update/ We are pleased to announce our December 2021 Grouping Update that significantly improves grouping coverage and quality for some of our most common SDKs. Java, PHP, and Python issues now have from 2% to 6% higher coverage rates allowing users to discover more bugs and respond to them more quickly. Grouping quality has been improved as well by reducing overgrouping of errors caused by generic rules overwriting more specific ones. Additionally, this release improves our internal pattern standardization for easier rule management. We can continue training our models more efficiently and analyzing millions of crashes to distinguish different error types accurately. Best of all, these improvements have been rolled out automatically for all accounts with auto-upgrade enabled, so you can focus on squashing and fixing bugs! --- ## Events ### .NET Error Logging Best Practices > Following .Net error logging best practices helps make sure they contain the right information when needed. - Published: 2021-08-25 - Modified: 2022-12-15 - URL: https://rollbar.com/blog/dotnet-error-logging-best-practices/ - Categories: .NET, Code Tutorials - Tags: dotnet Following best practices when logging helps make sure they contain the right information when needed. Some common best practices for logging errors in . NET are listed below: Install the DotNET SDK for fast error logging 1. Use a Third Party . NET Logging Library Logging frameworks in . NET such as NLog, Log4Net and Serilog provide high level APIs and handle the heavy lifting involved with logging errors. This helps developers use a field-tested option and not reinvent the wheel. Choosing the right library for . NET frameworks depends on the application architecture but these libraries are quite similar in functionality at a high level. 2. Using . NET Logging Levels Logging frameworks associate a log level to each message by default. The levels are usually - DEBUG, INFO, WARN, ERROR and FATAL. These levels are useful for conveying the kind of information being logged. ERROR indicates that an . NET error occurred in the application. Usually, ERROR messages should be logged when exceptions are caught. FATAL generally indicates that a major irrecoverable . NET error occurred that requires termination of the application. 3. Enabling Appropriate Log Levels in Production In a development or test environment, all . NET log messages of DEBUG level and above are useful and can be enabled for analysis. However, in production, only high-severity logs should be enabled. Usually, DEBUG and INFO levels should not be enabled - only WARN/ERROR and above. This helps improve performance, reduce storage and ensure more important . NET... --- ### We’ve partnered with the team over at Vue School to bring you Vue.js Forge Episode 4 for FREE! - Published: 2023-07-24 - Modified: 2023-07-24 - URL: https://rollbar.com/event/big-news-weve-partnered-with-the-team-over-at-vue-school-to-bring-you-vue-js-forge-episode-4-for-free/ --- ### Monolithic vs Microservices Architecture > We look at the key differences between using a monolithic and microservices architecture as well as their inherent strengths and weaknesses. - Published: 2021-08-13 - Modified: 2022-06-21 - URL: https://rollbar.com/blog/monolithic-vs-microservices-architecture/ - Categories: topics - Tags: business-impact Microservices are an accelerating trend thanks to rousing endorsements from the likes of Google, Netflix, and Amazon. The microservice architecture is advantageous for it’s scalability, agility and flexibility. In contrast, the monolithic approach is the traditional tried-and-true model for building software. It’s much easier to debug and test. But how do you know which approach is best for your organization? In this article, we look at the key differences between using a monolithic and microservices architecture as well as their inherent strengths and weaknesses. What is a Monolithic Architecture? The monolithic architecture is considered to be the traditional way of building an application. A monolithic application is usually built as a single unit and indivisible unit, generally comprising of the following layers: A database, usually an RDBMS (relational database management system), that consists of many tables. A server-side application that handles and serves client-side requests, retrieves and stores data from/to the database and executes business logic. A client-side UI (User Interface) that generally consists of HTML and/or Javascript pages running on a browser. The above layers group together to form a single logical executable. A monolithic application usually has one large codebase and lacks modularity. If any updates are needed in the system, developers must build and deploy the entire stack at once. What is a Microservices Architecture? The microservices architecture breaks down an application into a collection of smaller independent units. These units carry out application processes as separate services, each of which perform specific functions and have their... --- ### Webinar: Technical Intro to Improve: Release - Published: 2022-10-10 - Modified: 2022-10-10 - URL: https://rollbar.com/event/webinar-technical-intro-to-improverelease/ --- ### Webinar: Introduction to Improve:Release - Published: 2022-09-23 - Modified: 2022-09-23 - URL: https://rollbar.com/event/webinar-introduction-to-improverelease/ --- ### How to Make a Build vs. Buy Decision for a Software Solution > Sourcing the perfect product for your engineering team? Buying software is often the answer, but there is a lot you need to consider first. - Published: 2021-08-04 - Modified: 2021-09-16 - URL: https://rollbar.com/blog/build-vs-buy-software-solution/ - Categories: topics - Tags: build vs buy Buying software is often the answer for busy engineering teams in search of a quick solution with minimum aftercare. But while your team may be sure of the problem, how do you go about searching for a product to fix it? Far from being the 'easy option', there is a lot you need to consider before you invest in a bought solution – user experience, cost comparisons, and support features to name a few. Let’s explore some of the considerations when making a good decision. What do you and your organization need to get out of this solution? Discuss and define the problem you need to solve clearly and its scope so that you don’t over or under shoot with your solution. It’s worthwhile to put in the time to make sure that you don’t get a solution that is not going to scale or adapt as your needs grow or change. Make sure the codebases, APIs, frameworks, and tools that the solution will need to work with are defined so that you have your bases covered. Sound out the wider team in case others are also looking for the same or a similar solution so that their requirements get included. How do you approach the topic with your team and the relevant engineering stakeholders? Ask your engineers on the team for their feedback and their experience with the problem and how they have dealt with it in the past. Ask what tools they’ve used or in what other creative... --- ### Webinar: Accelerating Code Quality with the DORA Metrics - Published: 2021-05-24 - Modified: 2023-06-20 - URL: https://rollbar.com/event/next-event/ --- ### Webinar: 99% DevOps Presents | The Anatomy of Observability - Published: 2021-04-29 - Modified: 2021-05-27 - URL: https://rollbar.com/event/title-lorem-ipsum-dolor-sit-amet-consectetur-adipi-scing-elit-sed-do-eiusmod-tempor-incididunt-ut-labore-et-dolore-magna-aliqua-3/ --- ### Conference: Developer Week Management 2021 - Published: 2021-04-29 - Modified: 2023-06-20 - URL: https://rollbar.com/event/title-lorem-ipsum-dolor-sit-amet-consectetur-adipi-scing-elit-sed-do-eiusmod-tempor-incididunt-ut-labore-et-dolore-magna-aliqua-2/ --- ## News ### Automate Secure Access Management With Rollbar + Okta - Published: 2021-08-03 - Modified: 2023-01-25 - URL: https://rollbar.com/blog/automate-secure-access-management-with-rollbar-okta/ - Categories: product - Tags: access-management https://www. youtube. com/watch? v=RA6THYP5SgA&sub_confirmation=1 At Rollbar, we know security matters. Our customers represent the leading technology companies in the world today, and keeping their data secure is our top priority. Look no further than our investment in security and compliance. Rollbar is fully compliant with stringent industry standards like GDPR and HIPAA. We have also received ISO27001, SOC 2 Type 1, and Type 2 compliance certifications to ensure that even the most security-conscious companies can use our SaaS platform. We all agree that data privacy is an important part of security, so controlling access to your Rollbar account should matter too. Rollbar's integration with Okta ensures your account is more secure and simplifies your user and admin experience by automating Rollbar user lifecycle management. How Does Rollbar's Okta Integration Work? When you integrate Okta with Rollbar, you ensure only the right people access your Rollbar account by syncing Users and Groups in Okta with Users in Teams in Rollbar. When you assign a User to the Rollbar application in Okta, a user will be created in your Rollbar account. When she tries to access Rollbar for the first time, she will be prompted to log in via Okta and can seamlessly access the data she needs—no more asking "@here who can grant me access to our Rollbar account? " in Slack! When you assign a Group to the Rollbar application in Okta, a Team will be provisioned in your Rollbar account, and a Rollbar User will be created for each... --- ### What is “except Exception as e” in Python? > Wrap risky code in a try block and catch exceptions in an except block. The exception is assigned to the variable e for further use. - Published: 2024-06-24 - Modified: 2024-06-24 - URL: https://rollbar.com/blog/what-is-except-exception-as-e-in-python/ - Categories: Code Tutorials, Python - Tags: Python except Exception as e is a construct in Python used for exception handling. It allows you to catch exceptions that occur during the execution of a block of code by using a try block to wrap the code that might raise an exception, and an except block to catch and handle the exception. The Exception part specifies that any exception of this type or its subclasses should be caught, and the as e part assigns the caught exception to a variable e, which you can then use to access details about the exception. Take a look at this example: try: # Code that might raise an exception result = 10 / 0 # Raises ZeroDivisionError except Exception as e: # Handles the exception print(f"An error occurred: {e}") Running that will print: An error occurred: division by zero This is what happens step-by-step: The try block attempts to execute result = 10 / 0. Division by zero is not allowed so a ZeroDivisionError is raised. The except Exception as e block catches the ZeroDivisionError. The exception is assigned to the variable e, which contains the error message "division by zero". The print(f"An error occurred: {e}") statement prints the error message to the console. When using except Exception as e, here are a few things to keep in mind for handling exceptions effectively: Catch specific exceptions rather than all exceptions Catching all exceptions with except Exception as e can mask unexpected errors and make debugging more difficult. 💡Best Practice: Whenever possible, catch... --- ### Improve Error Detection and Speed Up Resolution in Selenium Tests - Published: 2021-08-03 - Modified: 2021-09-16 - URL: https://rollbar.com/blog/improve-error-detection-and-speed-up-resolution-in-selenium-tests/ - Categories: Code Tutorials - Tags: Selenium Reducing errors in production is critical for all engineering teams. The earlier the error is detected, the cheaper it is to fix and the lower the impact it has on your development team and customer experience. The shift-left movement has pushed more and more of this test automation work on development teams even though the way to debug a failed test and find the root cause is still inefficient and time consuming for all developers. There is a better way to detect, identify and resolve errors in your applications when executing your automated testing suite. Developer Pain with Automated Tests Automated Test Report does not show the full error stack trace. Missing detail to understand and fix the root cause. Debug process is time consuming to re-run test script and debug locally. Reproducing errors is often inconsistent or impossible. Environment may lack exact data points and variables to accurately reproduce the error. What do we have to do today? Let’s look at a practical example of what most development teams do today. Imagine that we’ve run our automated test and some failure occurred. If you have a QA team your first question is; what failed? The QA team will point you to the test results of the failed test case or test suite. The test failure happens in most cases because of an assert that failed in the test case without any other information. Example Assert: Assert. assertNotEquals(Actual, Expected); Example Test Failure Report We can see the exact step that... --- ### Rollbar to improve code with new AI-assisted workflows and automation-grade grouping - Published: 2020-11-19 - Modified: 2021-06-09 - URL: https://rollbar.com/news/rollbar-to-improve-code-with-new-ai-assisted-workflows-and-automation-grade-grouping/ Rollbar wants to shift developers’ focus to continuously improving code, instead of having to continuously fix it. --- ### Rollbar powers AI-assisted workflows with new grouping engine - Published: 2020-11-19 - Modified: 2021-06-09 - URL: https://rollbar.com/news/rollbar-powers-ai-assisted-workflows-with-new-grouping-engine/ Rollbar, providers of the Continuous Code Improvement Platform, is introducing AI-assisted workflows powered by its new automation-grade grouping engine, enabling developers... --- ### Rollbar Lets Developers Focus on Continuously Improving Code with AI-Assisted Workflows and Automation-Grade Grouping - Published: 2020-11-19 - Modified: 2021-05-27 - URL: https://rollbar.com/news/rollbar-lets-developers-focus-on-continuously-improving-code-with-ai-assisted-workflows-and-automation-grade-grouping/ Rollbar, providers of the Continuous Code Improvement Platform, today announced AI-assisted workflows powered by its new automation-grade grouping engine. --- ### Can Constructors Throw Exceptions in Java > The short answer is yes! Of course, properly implementing exceptions in your constructors is essential to getting the best results. Learn how here. - Published: 2021-07-30 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/can-constructors-throw-exceptions-in-java/ - Categories: Code Tutorials, Java - Tags: java A well-written Java constructor is a beautiful thing. Taking advantage of these special methods allows you to initialize an object with data when you instantiate it. Additionally, using constructors to their fullest can help you maintain clean, organized code. However, what happens if some of the data passed to the object through the constructor is invalid? Exception handling is the key. The short answer to the question “can a constructor throw an exception in Java” is yes! Of course, properly implementing exceptions in your constructors is essential to getting the best results and optimizing your code. To do so, it is valuable to understand constructors, exceptions, how they work together and best practices for using both. Java Constructors A constructor is a special method used to instantiate an object. The following is an example of a very simple constructor being called to create an object: ExClass newObject = new ExClass; The section “ExClass” is the constructor method. This is what the constructor definition may look like in the class: public class ExClass { public ExClass {} } The above example would be unnecessary because Java automatically creates a no-argument constructor for all classes that don’t have other constructors. Typically, if you define a constructor in a class, it is so that you can pass data to the object through parameters. This is an example of that: public class ExClass { private int value = 0; public ExClass(int valueInput){ value = valueInput; } } When you instantiate this class, you would... --- ### What does java.lang.RuntimeException mean? > Runtime exceptions help manage unexpected issues that arise while your application is running to avoid crashing. - Published: 2024-06-24 - Modified: 2024-07-24 - URL: https://rollbar.com/blog/java-lang-runtime-exception/ - Categories: Code Tutorials, Java - Tags: java Present in every version of Java, the java. lang. RuntimeException is an essential class that allows your application to handle unexpected problems without crashing. Runtime exceptions are exceptions only detected during the execution of your app - things like invalid user input or issues with external resources like files or networks. When an unexpected situation like those occurs, a RuntimeException can be thrown and your app can catch and handle it using a try-catch block. Simple example Imagine you have a method that divides two numbers. If you try to divide by zero, it should raise a RuntimeException. public class Main { public static void main(String args) { try { int result = divide(10, 0); System. out. println("Result: " + result); } catch (RuntimeException e) { System. out. println("Error: " + e. getMessage); } } public static int divide(int numerator, int denominator) { if (denominator == 0) { throw new RuntimeException("You can't divide by zero! "); } return numerator / denominator; } } When the divide method detects that the denominator is zero, it throws a RuntimeException. This error is then caught in the try-catch block in the main method, allowing the app to print an error message instead of crashing. What is the difference between RuntimeException and Exception in Java? An Exception represents checked exceptions that must be handled explicitly, while a RuntimeException represents unchecked exceptions that do not require explicit handling. For example, file I/O operations or database access issues are typical use cases for checked exceptions (Exception).... --- ### Rollbar Announced AI-Assisted Workflows - Published: 2020-11-19 - Modified: 2021-06-09 - URL: https://rollbar.com/news/rollbar-announced-ai-assisted-workflows/ Rollbar announced AI-assisted workflows powered by its new automation-grade grouping engine. --- ### Rollbar rolls out service to improve error detection for developers - Published: 2020-11-18 - Modified: 2021-06-09 - URL: https://rollbar.com/news/rollbar-rolls-out-service-to-improve-error-detection-for-developers/ Rollbar Inc. today updated its Continuous Code Improvement Platform with a new “automation-grade grouping engine”... --- ### How to Solve the Most Common Runtime Errors in Java > A runtime error in Java is an application error that occurs during the execution of a program. Learn how to solve the most common runtime errors in Java. - Published: 2021-07-29 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/most-common-java-runtime-errors/ - Categories: Code Tutorials, Java - Tags: java A runtime error in Java is an application error that occurs during the execution of a program. A runtime error occurs when a program is syntactically correct but contains an issue that is only detected during program execution. These issues cannot be caught at compile-time by the Java compiler and are only detected by the Java Virtual Machine (JVM) when the application is running. Runtime errors are a category of exception that contains several more specific error types. Some of the most common types of runtime errors are: IO errors Division by zero errors Out of range errors Undefined object errors Runtime Errors vs Compile-Time Errors Compile-time errors occur when there are syntactical issues present in application code, for example, missing semicolons or parentheses, misspelled keywords or usage of undeclared variables. These syntax errors are detected by the Java compiler at compile-time and an error message is displayed on the screen. The compiler prevents the code from being executed until the error is fixed. Therefore, these errors must be addressed by debugging before the program can be successfully run. On the other hand, runtime errors occur during program execution (the interpretation phase), after compilation has taken place. Any code that throws a runtime error is therefore syntactically correct. Runtime Errors vs Logical Errors A runtime error could potentially be a legitimate issue in code, for example, incorrectly formatted input data or lack of resources (e. g. insufficient memory or disk space). When a runtime error occurs in Java, the compiler... --- ### How to Fix Invalid SyntaxError in Python > The Python SyntaxError occurs when the interpreter encounters invalid syntax in code. Learn how to fix it. - Published: 2024-06-24 - Modified: 2024-06-24 - URL: https://rollbar.com/blog/python-syntaxerror/ - Categories: Code Tutorials, Python - Tags: Python The Python SyntaxError occurs when the interpreter encounters invalid syntax in code. When Python code is executed, the interpreter parses it to convert it into bytecode. If the interpreter finds any invalid syntax during the parsing stage, a SyntaxError is thrown. To illustrate, imagine sending a text message with autocorrect errors that change the meaning and make it incomprehensible. For example, if you type "Meet me at the park" but it sends "Meat me at the perk" the recipient will not understand the message. Similarly, if the syntax is incorrect in code, the interpreter cannot understand it. Fixing the errors is necessary for clear communication in both cases. What Causes SyntaxError Some of the most common causes of syntax errors in Python are: Missing quotes. For example, print(Hello) instead of print("Hello"). Misspelled reserved keywords. For example, writing iff instead of if. Incorrect Indentation. For example, missing required spaces or tabs. Invalid function definitions or calls. For example, missing a colon in a function definition or missing parentheses in a function call. Invalid variable declarations. For example, starting the variable name with a number or using invalid characters. Missing operators. For example, missing the + operator when trying to add two numbers. SyntaxError Examples Example One Here’s an example of a Python SyntaxError thrown due to missing quotes: print(Hello World) #Missing quotes in string In the above example, since the string “Hello World” is attempted to be printed without using quotes, a SyntaxError is thrown: File "test. py", line 1 print(Hello... --- ### Introducing the New Rollbar Integration for GitHub Enterprise Server > We’re excited to launch our new integration with GitHub that supports GitHub Enterprise Server customers. This allows companies using GitHub… - Published: 2021-07-28 - Modified: 2021-09-16 - URL: https://rollbar.com/blog/introducing-the-new-rollbar-integration-for-github-enterprise-server/ - Categories: product - Tags: integrations We’re excited to launch our new integration with GitHub that supports GitHub Enterprise Server customers. This allows companies using GitHub Enterprise on their own domains to access key features in Rollbar that help developers fix errors faster. GitHub Enterprise offers a fully integrated development platform for organizations to accelerate software innovation and secure delivery. With Rollbar, GitHub Enterprise Server customers can now access: Code-context with the exact line of code in the stack trace that caused an error Git blame information for the offending line of code directly within the Rollbar application Spend More Time Building, Less Time Fixing We believe that developers should be spending as much time as possible on building new features and less time fixing bugs. With expanded availability for GitHub Enterprise Server, enterprises can now reduce the time it takes them to resolve bugs and spend more time building and scaling software. Debug Faster With More Context Let’s dig a little deeper into the features to see how a developer might use them. Let’s say you get a notification for a new or reactivated error in Rollbar. To get to the root cause, you can go to the Traceback in the Item details page and see the exact line of the code that caused the error in each frame of the stack trace directly within the Rollbar UI. This is the ‘Code Context’ functionality that helps developers save time and see critical information instantly in Rollbar. Now, you may want to get more context on... --- ### Rollbar Acquires Hungary-Based Samebug - Published: 2019-02-25 - Modified: 2021-05-27 - URL: https://rollbar.com/news/rollbar-acquires-hungary-based-samebug/ Rollbar announced it has acquired Hungary-based Samebug --- ### How to Fix ValueError Exceptions in Python > The Python ValueError occurs when a function receives an argument of the correct data type but an inappropriate value. Learn how to fix it. - Published: 2024-06-24 - Modified: 2024-06-24 - URL: https://rollbar.com/blog/python-valueerror/ - Categories: Code Tutorials - Tags: Python The Python ValueError is an exception that occurs when a function receives an argument of the correct data type but an inappropriate value. This error usually occurs in mathematical operations that require a certain kind of value. To use an analogy, imagine trying to enroll an adult in a children's school. The person is a valid human, but their age is inappropriate for the setting. Similarly, a ValueError occurs when a function receives the correct type of input but with an unsuitable value. What Causes ValueError The Python ValueError is raised when an object is assigned the right data type but the wrong value for a certain operation. Some of the most common scenarios where this can happen are: If the value is invalid for the operation. For example, if a negative integer is passed to a square root operation. Performing an operation when the value does not exist. For example, trying to remove a value from a list where it does not exist. Trying to unpack more values than available. For example, trying to unpack values from a list with 5 items to 3 variables. ValueError Examples Example One Here’s an example of a Python ValueError raised when trying to perform a square root operation on a negative number: import math math. sqrt(-100) #Performing square root operation on negative number In the above example, a negative integer is passed to the math. sqrt function. Since the function expects a positive integer, running the above code raises a ValueError: Traceback... --- ### Lolapps engineers launch Rollbar - Published: 2013-02-26 - Modified: 2021-05-27 - URL: https://rollbar.com/news/lolapps-engineers-launch-rollbar/ Brian Rue and Cory Virok launch an error tracking platform for developers. --- ## Tradeshows ## Webinars ### Accelerating Code Quality with DORA Metrics > DORA metrics help DevOps teams make data-driven decisions to continuously improve practices, deliver software faster, and ensure that it remains reliable. - Published: 2021-07-24 - Modified: 2022-06-21 - URL: https://rollbar.com/blog/accelerating-code-quality-with-dora-metrics/ - Categories: topics - Tags: dora-metrics What do Google’s DevOps Research and Assessment (DORA) and Rollbar have to do with each other? DORA identified four key metrics to measure DevOps performance and identified four levels of DevOps performance from Low to Elite. One way for a team to become an Elite DevOps performer is by focusing on Continuous Code Improvement. What is DORA? The DevOps Research and Assessment (DORA) team is a Google research group that is best known for its work on measuring and understanding DevOps practices and capabilities across the IT industry. The group produced an annual State of Devops Report (2014-2019) as well as an ROI whitepaper providing insights into DevOps transformations. The DORA team identified four key metrics that indicate software development and delivery performance. To find out more about the findings we recommend reading a book called “Accelerate: The Science of Lean Software and Devops: Building and Scaling High Performing Technology Organizations” - co-authored by Nicole Forsgren who is a DORA team lead. What is Continuous Code Improvement? Continuous Code Improvement is an approach to maintaining and updating any software application that allows for faster deployments, fewer errors and quicker fixes to problems. Companies that follow this approach have a compact feedback loop to know when there's a code issue that needs to be fixed, fix it, and go back to writing and running code. The continuous code improvement feedback loops consists of: Visibility — real-time identification that there is an issue Grouping — recognizing error patterns to provide trustworthy signals... --- ### How to Resolve the NoClassDefFoundError in Java > NoClassDefFoundError is a Java error that occurs when the JVM is unable to find a class at runtime which was available at compile-time. - Published: 2024-06-24 - Modified: 2024-07-18 - URL: https://rollbar.com/blog/java-no-class-def-found-error/ - Categories: Code Tutorials, Java - Tags: java The NoClassDefFoundError is a runtime error in Java that occurs if the Java Virtual Machine (JVM) or a ClassLoader instance attempts to load the definition of a class but cannot find it at runtime. The class definition exists at compile-time but is not available at runtime. To explain using an analogy, it's like preparing a parcel for collection by a courier but when the courier arrives, they can't find the parcel because the directions to its location are missing. The JVM, like the courier, looks for the class definition (parcel) in the classpath (directions). If the class is not found where expected, the JVM throws a NoClassDefFoundError. What Causes NoClassDefFoundError The NoClassDefFoundError occurs in Java when the JVM is unable to find a particular class at runtime which was available at compile-time. Common causes of the class definition being unavailable at runtime are: Missing JAR file Permission issues Incorrect classpath at runtime This can happen as part of a normal method call or when creating an instance of the class using the new expression. Therefore, it can occur during the linking or loading of the unavailable class. NoClassDefFoundError Example Here’s an example of a NoClassDefFoundError thrown when a class is attempted to be loaded that is available at compile-time but not at runtime: class Vehicle { private String make; public String getMake { return make; } public void setMake(String make) { this. make = make; } } public class NoClassDefFoundErrorExample { public static void main(String args) { Vehicle vehicle =... --- ### How to Fix java.lang.StackOverflowError in Java > The java.lang.StackOverflowError is a runtime error which indicates that the application stack is exhausted. Let's fix it. - Published: 2024-06-23 - Modified: 2024-07-24 - URL: https://rollbar.com/blog/how-to-fix-java-lang-stackoverflowerror-in-java/ - Categories: Code Tutorials, Java - Tags: java The java. lang. StackOverflowError is a runtime error which indicates that the application stack is exhausted. This is usually caused by deep or infinite recursion. To put it more simply, imagine a to-do list where each task keeps adding a new sub-task to the list. If this goes on indefinitely, the list eventually becomes too long for the sheet of paper. This is essentially what happens to cause a StackOverflowError in Java, where too many recursive method calls exceed the stack limit. What Causes java. lang. StackOverflowError The java. lang. StackOverflowError occurs when the application stack continues to grow until it reaches the maximum limit. Some of the most common causes for a java. lang. StackOverflowError are: Deep or infinite recursion: If a method calls itself recursively without a terminating condition. Cyclic relationships between classes: If a class A instantiates an object of class B, which in turn instantiates an object of class A. This can be considered as a form of recursion. Memory intensive applications: Applications that rely on resource heavy objects such as XML documents, GUI or java2D classes. java. lang. StackOverflowError Example Here is an example of java. lang. StackOverflowError thrown due to infinite recursion: public class StackOverflowErrorExample { public void decrementAndPrint(int myInt) { System. out. println(myInt--); decrementAndPrint(myInt); //Recursively calling method without terminating condition } public static void main(String args) { StackOverflowErrorExample soee = new StackOverflowErrorExample; soee. decrementAndPrint(5); } } In this example, the recursive method decrementAndPrint calls itself over and over again until it reaches the... --- ### Handling Node.js Exceptions > Debugging errors is the hardest part of programming. Errors can appear in your code in a variety of ways, whether as syntax errors, errors… - Published: 2021-07-23 - Modified: 2024-01-02 - URL: https://rollbar.com/blog/handling-node-js-exceptions/ - Categories: Code Tutorials, JavaScript - Tags: Node.js Debugging errors is the hardest part of programming. Errors can appear in your code in a variety of ways, whether as syntax errors, errors in logic, or the most dreaded of all, runtime errors. Runtime errors occur whenever something unexpected occurs in your application, and they often lead to catastrophic issues that can crash your program. Like many languages, Node. js provides a mechanism to anticipate errors before they occur. When an error occurs in your code, it turns into an object called an exception. Properly handling these exceptions allows you to recover gracefully from unforeseen issues, resulting in a much better user experience. In this post, we'll take a look at what causes these errors in Node. js, and how to recover from them. What can cause an error exception in Node. js? Runtime errors can occur in a variety of ways. One example includes referencing an undefined variable, or passing the wrong type to an argument. Other common Node. js errors include: EvalError: errors that occur within the global function eval RangeError: these errors occur when you attempt to access a variable outside its range, such as trying to get the fifth element of an array with only three items ReferenceError: these errors arise when you attempt to use a variable that doesn't exist SyntaxError: these errors come from invalid code TypeError: this occurs when you attempt to use a variable that is not a valid type URIError: this error occurs whenever encodeURI or decodeURI are given invalid... --- ### How to Throw IllegalArgumentException in Java > The IllegalArgumentException is thrown to indicate an illegal or unsuitable argument passed to a method. Learn how to solve it. - Published: 2024-06-20 - Modified: 2024-07-18 - URL: https://rollbar.com/blog/how-to-throw-illegalargumentexception-in-java/ - Categories: Code Tutorials, Java - Tags: java The IllegalArgumentException is an unchecked exception in Java that is thrown to indicate an illegal or unsuitable argument passed to a method. It is one of the most common exceptions in Java. To illustrate, it's like what happens when trying to set a password in a registration system with specific requirements. If the system expects an 8 character password with at least one number and one special character and you enter "password" or "password123", the system rejects it and notifies you of the invalid input. Similarly, Java methods throw the IllegalArgumentException to reject inappropriate or incorrect arguments, ensuring the input meets the required criteria. What Causes IllegalArgumentException An IllegalArgumentException is thrown when an argument passed to a method doesn't fit within the logic of the usage of the argument. Some of the most common scenarios for this are: If the argument is out of range. For example, if a method declares an integer age as a parameter, which is expected to be a positive integer. If a negative integer value is passed, an IllegalArgumentException is thrown. If the format of the argument is invalid. For example, if a method declares a string email as a parameter, which is expected in an email address format but a regular string is passed that doesn’t match the format. If the argument is null. In such cases, the IllegalArgumentException is thrown when the method expects a non-empty object as an argument. IllegalArgumentException Example Here is an example of an IllegalArgumentException thrown when the argument... --- ### How to Throw Exceptions in Python > This guide is the ultimate resource for Python developers who want to design, implement, and maintain applications that can deal with errors properly. - Published: 2021-07-23 - Modified: 2023-07-31 - URL: https://rollbar.com/blog/throwing-exceptions-in-python/ - Categories: Code Tutorials, Python - Tags: Python Introduction Software applications don’t run perfectly all the time. Despite intensive debugging and multiple testing levels, applications still fail. Bad data, broken network connectivity, corrupted databases, memory pressures, and unexpected user inputs can all prevent an application from performing normally. When such an event occurs, and the app is unable to continue its normal flow, this is known as an exception. And it's your application's job—and your job as a coder—to catch and handle these exceptions gracefully so that your app keeps working. Install the Python SDK to identify and fix exceptions What Are Python Exceptions? Exceptions in Python applications can happen for many of the reasons stated above and more; and if they aren't handled well, these exceptions can cause the program to crash, causing data loss, or worse, corrupted data. As a Python developer, you need to think about possible exception situations and include error handling in your code. Fortunately, Python comes with a robust error handling framework. Using structured exception handling and a set of pre-defined exceptions, Python programs can determine the error type at run time and act accordingly. These can include actions like taking an alternate path, using default values, or prompting for correct input. This article will show you how to raise exceptions in your Python code and how to address exceptions.   Difference Between Python Syntax Errors and Python Exceptions Before diving in, it's important to understand the two types of unwanted conditions in Python programming—syntax error and exception. The syntax error exception... --- ### Most Common Java Exceptions > We take a look at how Java handles exceptions, checked vs. unchecked exceptions, and then the ten most common exceptions you’ll face in Java. - Published: 2021-07-19 - Modified: 2022-11-28 - URL: https://rollbar.com/blog/most-common-java-exceptions/ - Categories: Code Tutorials, Java - Tags: java Like most modern programming languages, Java includes the concept of exceptions to handle both errors and "exceptional events. " When an exception occurs in your code, it disrupts the normal instruction logic and abnormally terminates the process. However, with a little foresight and code, you can often handle these exceptions gracefully, allowing your code to continue running and providing insight for tracking down the root cause of the unexpected result. In this article, we’ll take a brief look at how Java handles exceptions, the difference between checked and unchecked exceptions, and then walk through ten of the most common exceptions you’ll face in Java, and why they might occur. How Java Handles Exceptions When an exception occurs within a class or method, the method/class creates an exception object and hands the results to the runtime system (JVM). The runtime system then travels over the call stack in order to determine what layer can handle the exception that was created or thrown. The search begins with the method in which the exception was created, then walks sequentially through the call stack until it finds an exception handler. When the type of exception matches a type that can be handled by the exception handler, it finds a match. Consider the following stack trace example: If an uncaught exception occurs in the Worker class, the exception will flow to the Service class. If no handler exists in the Service class, then the exception will flow through the stack trace to the Controller class.... --- ### How to Handle JavaScript Uncaught TypeError: "x" is Not a Function > The Javascript TypeError: "x" is not a function occurs when calling a function on a value or object, which is not actually a function. Learn how to fix it. - Published: 2024-06-20 - Modified: 2024-06-21 - URL: https://rollbar.com/blog/how-to-handle-uncaught-typerror-x-is-not-a-function/ - Categories: Code Tutorials, JavaScript - Tags: error-handling, error-monitoring, JavaScript The Javascript error TypeError: "x" is not a function occurs when there is an attempt to call a function on an object, which is not actually a function. To illustrate using an analogy, imagine you're in a kitchen following a recipe. The recipe says to use a blender to blend certain ingredients together but you accidentally use a juicer. When you try to blend with a juicer, it doesn't work properly since blending is not a function of the juicer. Similarly, in Javascript when you try to call a function (blend) on an object (juicer) that doesn't contain the function, the TypeError: "x" is not a function occurs. What Causes TypeError: "x" is not a function A TypeError: "x" is not a function in Javascript generally occurs in one of the following scenarios: A typo in a function call. Missing script library. When a property is called on an object like a function but is not actually a function. When calling a built-in function that expects a callback function argument, which does not exist. When the called function is within a scope that is not accessible. TypeError: "x" is not a function Examples 1. Typo A typical scenario for the TypeError: "x" is not a function to occur is when there is a typo in the called function name: var elem = document. getElementByID('ID'); Running the above code leads to the following Javascript error: TypeError: document. getElementByID is not a function The correct function name is getElementById: var elem =... --- ### Speeding Up Software Delivery: You're Only As Good As Your Weakest Link - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/webinar/speeding-up-software-delivery-youre-only-as-good-as-your-weakest-link/ Learn about the trends in DevOps and modern application architectures, and the common challenges enterprises face as they try to scale and speed up software delivery. --- ### CircleCI and Rollbar on enabling Continuous Delivery - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/webinar/circleci-and-rollbar-on-enabling-continuous-delivery/ Join CircleCI CTO Rob Zuber and Rollbar Co-founder and CTO Cory Virok as they discuss 9 questions about continuous delivery. --- ### Debugging Apex Applications with Error Monitoring - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/webinar/debugging-apex-applications-with-error-monitoring/ Rollbar is the first company bringing the value of modern Error Monitoring and Debugging to the Apex ecosystem and to the broader Salesforce platform (supporting Apex, Lightning and Heroku). Learn how to set it up and start using it. --- ### How to Fix KeyError Exceptions in Python > The Python KeyError is an exception that occurs when an attempt is made to access an item in a dictionary that does not exist. Learn how to fix it. - Published: 2024-06-20 - Modified: 2024-06-20 - URL: https://rollbar.com/blog/python-keyerror/ - Categories: Code Tutorials, Python - Tags: Python The Python KeyError is an exception that occurs when trying to access an item in a dictionary where it does not exist. The key used to access the item is not found in the dictionary, which leads to the KeyError. As an analogy, it's like trying to open a locker within a set of lockers using a code that doesn't match any of them. In such a case, the system will not be able to find a locker with the code entered and will raise an error. In the context of Python, the set of lockers represents a dictionary and the code is the key you're trying to use to access an item. If the key doesn't exist in the dictionary, Python raises a KeyError. What Causes KeyError The Python KeyError is raised when a mapping key is not found in the set of existing keys of the mapping. In Python, the most common mapping is the dictionary. When an item in a dictionary is accessed using a key, and the key is not found within the set of keys of the dictionary, the KeyError is raised. KeyError Example Here’s an example of a Python KeyError raised when trying to access a dictionary item that does not exist: employees = {"one": "John", "two": "Darren", "three": "Paul"} print(employees) #Attempt to access an item that does not exist in dictionary In the above example, the dictionary employees contains some key-value pairs. An attempt is then made to access an item from employees... --- ### Spring Boot Logging > Logging in Spring Boot is very flexible and easy to configure. Spring Boot supports various logging providers. Learn more about Spring Boot logging here. - Published: 2021-07-19 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/spring-boot-logging/ - Categories: Code Tutorials, Java - Tags: java, spring Logging in Spring Boot is very flexible and easy to configure. Spring Boot uses Apache Commons Logging for internal logging but allows developers to configure the underlying log implementation. Various logging providers are supported through simple configuration. Spring Boot provides default configurations for Java Util Logging, Log4J2 and Logback. Each logging provider is preconfigured to use console output with optional file output available as well. Spring Boot applications need to collect log data to help troubleshoot and fix issues in code, as well as measure business metrics. Zero Configuration Logging Spring Boot auto-tunes the majority of the configuration settings within an application so that developers can focus on the code. The only required dependency for logging using Spring Boot is Apache Commons Logging. When using Spring Boot 2. x, the spring-boot-starter-logging starter pulls in the spring-jcl module, which contains the Apache Commons Logging provider. If using Spring Boot 1. x, Apache Commons Loggingem> needs to be imported explicitly. When Spring Boot starters are used, Logback is used for logging by default. The default Logback implementation logs the output to the console at the info level. Logback routing is included as well to ensure support for Apache Commons Logging, Java Util Logging, Log4J and SLF4J. Spring Boot Logging Levels A logger logs a message with a specific logging level. Spring Boot provides the following logging levels: TRACE DEBUG INFO WARN ERROR All supported logging providers can have the logging level set in the Spring Environment using the following syntax: logging. level.... --- ### Maximize Your Workflow Through the Clubhouse API - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/webinar/maximize-your-workflow-through-the-clubhouse-api/ Learn how the Clubhouse API can give you a greater amount of control over your data and help automate your workflow. --- ### Advanced Error Monitoring & Debugging With Rollbar - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/webinar/advanced-error-monitoring-debugging-with-rollbar/ Rollbar helps developers deploy better software, faster, with solutions that identify, prioritize and resolve coding errors. Join Rollbar's product experts as they showcase key features to reduce deployment time and cost with an accuracy that you and your team can rely on. In this webinar we will demo: - Error Monitoring with Rollbar Core - Error classification - Rollbar Query Language (RQL) for best in-class insights - Notifications Rules Engine - Rollbar release monitoring --- ### How to Catch and Fix NullPointerException in Java > The java.lang.NullPointerException occurs when trying to use a variable that does not point to an object and refers to nothing or null. - Published: 2024-06-19 - Modified: 2024-07-18 - URL: https://rollbar.com/blog/how-to-catch-and-fix-nullpointerexception-in-java/ - Categories: Code Tutorials, Java - Tags: java The java. lang. NullPointerException is a runtime exception in Java that occurs when trying to use a variable that does not point to an object and refers to nothing or null. To use an analogy, it’s like trying to send a letter without specifying the recipient's address. Without an address, the letter cannot be delivered. Similarly, if a variable in Java doesn't point to an actual object, the program gets confused and throws a NullPointerException. What Causes NullPointerException The NullPointerException occurs when an uninitialized variable is used. Such a variable has no object reference and does not point anywhere. Therefore, it has a null value in Java and using it throws a NullPointerException. Some of the most common scenarios for a NullPointerException are: Calling methods on a null object Accessing a null object’s properties Accessing an index element (like in an array) of a null object Passing null parameters to a method Incorrect configuration for dependency injection frameworks like Spring Using synchronized on a null object Throwing null from a method that throws an exception NullPointerException Example Here is an example of a NullPointerException thrown when the length method of a null String object is called: public class NullPointerExceptionExample { private static void printLength(String str) { System. out. println(str. length); //Trying to call a method on a null object } public static void main(String args) { String myString = null; printLength(myString); } } In this example, the length method of a String object is called without performing a null check.... --- ### How to Solve ClassCastException in Java > When your code attempts to cast an object to another class of which the original object is not an instance, a ClassCastException is thrown. Learn how to fix it. - Published: 2021-07-19 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/how-to-solve-classcastexception-in-java/ - Categories: Code Tutorials, Java - Tags: java If a ClassCastException is one of the most common exceptions in Java. It is a runtime exception that occurs when the application code attempts to cast an object to another class of which the original object is not an instance. For example, a String object cannot be cast to an Integer object and attempting to do so will result in a ClassCastException. Since the ClassCastException is an unchecked exception, it doesn't need to be declared in the throws clause of a method or constructor. Sources of ClassCastException Some of the most common sources of ClassCastException in Java are: Using collections like HashMap, ArrayList and HashTable which do not use Java Generics. Using methods which were written on interfaces prior to Java 5 that use polymorphism. Not using type-safety when casting objects in Java. ClassCastException Example Here is an example of a ClassCastException thrown when a String is attempted to be cast to an Integer: public class ClassCastExceptionExample { public static void main(String args) { Object obj = new String("Hello"); System. out. println((Integer) obj); } } In this example, the String obj is attempted to be cast to an Integer. Since it is not an instance of the Integer class, this operation throws a ClassCastException: Exception in thread "main" java. lang. ClassCastException: class java. lang. String cannot be cast to class java. lang. Integer at ClassCastExceptionExample. main(ClassCastExceptionExample. java:4) How to Fix ClassCastException To fix the ClassCastException in the above example, the object type should be checked before performing the cast operation:... --- ### Smart Error Monitoring for Spring Developers - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/webinar/smart-error-monitoring-for-spring-developers/ Nobody likes to find out about errors from the customers themselves. The ripple effect of churn from a single user interaction is crucial to an organization. For Spring Developers, capturing errors early on in your application is important as it’s a popular framework for enterprise application. Join us to learn how to get started with a sophisticated Error Monitoring with simple integration for Spring apps. Learn key benefits, installation guidelines and configuration tips on Error Monitoring for Spring. In this webinar we will review: - Market Overview - Introduction to Error Monitoring for Spring Apps - How to get started with Rollbar for Spring - Key Features Overview - Live Q&A --- ### Introducing IP Safelist for our API access > We are excited to announce the expansion of our security controls by introducing IP Safelist for our API access. This new feature extends the advanced security options available in our Enterprise packages. - Published: 2024-06-12 - Modified: 2024-06-12 - URL: https://rollbar.com/blog/ip-safelist-api-access/ - Categories: product - Tags: Usage Notifications Introducing IP Safelist for our API access Simplifying Your Debugging Experience At Rollbar, we understand that security is not just a feature but a cornerstone of modern enterprise operations. As part of our ongoing commitment to providing robust security solutions, we are excited to announce the expansion of our security controls by introducing IP Safelist for our API access. This new feature extends the advanced security options available in our Enterprise packages. Previously, our Enterprise customers enjoyed enhanced security features, including customizable login attempt limits, tailored password settings, session expiration controls, and the ability to restrict UI access via IP Safelist for VPN connections. Today, we are taking these capabilities a step further by enabling the Safelist feature for API access as well. With the new IP Safelist functionality, you can control UI and API access by specifying allowed IP addresses. This enhancement ensures that only requests from trusted IP addresses can access your API, adding a layer of security to protect your critical data. It's a straightforward yet powerful way to manage who can interact with your systems, significantly reducing the risk of unauthorized access. Implementing the IP Safelist is seamless. Our Enterprise owners can easily add and manage IP addresses through their existing Advanced Security Controls settings in your Account Settings. Whether managing a small team or a large distributed workforce, this feature allows you to secure your applications precisely how you need them. Secure your application's access now with Rollbar's enhanced IP Safelist. For more information on... --- ### How to Resolve InvocationTargetException in Java > The InvocationTargetException wraps an exception thrown by an invoked method or constructor. Learn how to handle it. - Published: 2021-07-19 - Modified: 2024-07-24 - URL: https://rollbar.com/blog/how-to-resolve-invocationtargetexception-in-java/ - Categories: Code Tutorials, Java - Tags: java If a InvocationTargetException is a checked exception in Java that wraps an exception thrown by an invoked method or constructor. The method or constructor that throws the exception is invoked using the Method. invoke method. The InvocationTargetException is quite common when using the Java Reflection API. The Java reflection layer wraps any exception as an InvocationTargetException. This helps clarify whether the exception is caused by an issue in the reflection call or within the called method. What Causes InvocationTargetException The InvocationTargetException occurs mainly when working with the Java reflection API to invoke a method or constructor, which throws an exception. This underlying exception is the actual cause of the issue, therefore resolving the InvocationTargetException equates to finding and resolving the underlying exception that occurs within the invoked method. InvocationTargetException Example Here is an example of a InvocationTargetException thrown when a method that is called using Method. invoke throws an exception: import java. lang. reflect. InvocationTargetException; import java. lang. reflect. Method; public class InvocationTargetExceptionExample { public int divideByZero { return 1 / 0; } public static void main(String args) throws NoSuchMethodException, IllegalAccessException { InvocationTargetExceptionExample itee = new InvocationTargetExceptionExample; Method method = InvocationTargetExceptionExample. class. getMethod("divideByZero"); try { method. invoke(itee); } catch (InvocationTargetException ite) { ite. printStackTrace; } } } In this example, the main method invokes divideByZero using Method. invoke. Since divideByZero throws an ArithmeticException, it is wrapped within an InvocationTargetException thrown in the main method: java. lang. reflect. InvocationTargetException at java. base/jdk. internal. reflect. NativeMethodAccessorImpl. invoke0(Native Method) at java. base/jdk. internal.... --- ### Best Practices for Moving from a Monolith to Microservices - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/webinar/best-practices-for-moving-from-a-monolith-to-microservices/ Transitioning from a Monolith to a Microservices architecture can take years to complete. Companies are under more pressure than ever before to innovate faster and decrease the time to market while maintaining best-in-class customer experience. In this webinar, we'll discuss: - Organizational changes that will help you adopt a Microservice architecture - How to bring change to your organization - How you develop applications in a Microservice architecture - Setting up your Monolith for Microservices and optimizing your local development environment --- ### Warmup Inbox's Story with Rollbar > At PLUM, we focus on crafting custom software solutions tailored to specific needs. Our projects range from helping startups launch their initial products to assisting established enterprises in scaling and enhancing their software infrastructure. - Published: 2024-06-10 - Modified: 2024-06-10 - URL: https://rollbar.com/blog/warmupinbox/ - Categories: company, User Stories - Tags: User Stories Warmup Inbox automatically raises your email sending reputation through a network of inboxes that talk to each other. 1. Describe your company and the service(s) offered. WarmupInbox is a tool to help improve email deliverability. The tool increases your chances for your email to be in the main inbox rather than the promotion tab or worse the spam folder. 2. What are you most passionate about in your current and/or past roles? Email deliverability is an ever-evolving field. There are frequent updates from big players like Google and Yahoo. It is challenging to stay on top of the news but it is also really interesting. We have to iterate really quickly about product and marketing messaging. Rollbar is actually helping us iterate quickly by making sure we aren’t breaking things. 3. Is there anything in particular about Rollbar that has kept you a loyal user? Ease of use and smooth integration with Slack, and easy to read dashboards, which allows to solve the most important defects in accordance with the Pareto principle. Visit Fabian Maume's LinkedIn Page --- ### How to Fix java.lang.NoSuchMethodError in Java > A java.lang.NoSuchMethodError is a runtime error which occurs when a method is called that exists at compile time, but does not exist at runtime. Let's fix it. - Published: 2021-07-19 - Modified: 2024-07-24 - URL: https://rollbar.com/blog/how-to-fix-java-lang-nosuchmethoderror-in-java/ - Categories: Code Tutorials, Java - Tags: java A java. lang. NoSuchMethodError is a runtime error in Java which occurs when a method is called that exists at compile-time, but does not exist at runtime. The Java Garbage Collector (GC) cannot free up the space required for a new object, which causes a java. lang. OutOfMemoryError. This error can also be thrown when the native memory is insufficient to support the loading of a Java class. What Causes java. lang. NoSuchMethodError The java. lang. NoSuchMethodError occurs when an application does not find a called method at runtime. Some of the most common causes for ajava. lang. NoSuchMethodError are: Breaking change in an third party library If an application calls a method in a third party library, which exists at compile time but not at runtime, it can cause a java. lang. NoSuchMethodError. The third party library may have introduced a breaking change from one version to another - for example, it may have removed the method being called. This usually indicates a problem with the build, since the method does exist at compile time but not at runtime. The version of the library used in the build may be different from the one used in the application code. Breaking change within an application A change in the class structure within an application can also cause a java. lang. NoSuchMethodError. This can happen in a multi-module application where a method may have been removed from the code in one module, which was called by another module. This also indicates... --- ### How to Fix OutOfMemoryError: Permgen Space Exceptions in Java > Is your permanent generation area in memory exhausted? Here's how to adjust the maximum size of the PermGen area and find out what caused this Java error. - Published: 2021-04-08 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/how-to-fix-java-lang-outofmemoryerror-permgen-space-exceptions-in-java/ - Categories: Code Tutorials, Java - Tags: java A java. lang. OutOfMemoryError: PermGen Space is a runtime error in Java which occurs when the permanent generation (PermGen) area in memory is exhausted. The PermGen area of the Java heap is used to store metadata such as class declarations, methods and object arrays. Therefore, the PermGen size requirements depend on the number of classes and methods as well as their size. Java memory is separated into different regions - Young, Tenured and PermGen. The sizes of these regions, including the PermGen area, are set when the JVM is launched. If these sizes are not specified, platform-specific defaults are used. Since Java applications are only allowed to use a limited amount of memory, the PermGen can easily be exhausted if there are a large number of classes, objects or methods in an application. The size of the PermGen can be specified using the JVM arguments -XX:PermSize and -XX:MaxPermSize depending on the application needs. What Causes java. lang. OutOfMemoryError: PermGen Space The PermGen area of the Java heap mostly contains the following: Class declarations, including class names and fields Methods with the method bytecode Constant pool information Object arrays and type arrays associated with a class Just In Time compiler optimizations The PermGen size depends on both the number of classes loaded as well as the size of class declarations. Therefore, the main cause for java. lang. OutOfMemoryError: PermGen space is either too many classes or too large classes loaded in the PermGen. java. lang. OutOfMemoryError: PermGen space Example Here is... --- ### How to Fix the Array Index Out Of Bounds Exception in Java > To avoid this exception, ensure that your index values are within the valid range, from 0 to the length of the array minus one. - Published: 2024-05-30 - Modified: 2024-05-31 - URL: https://rollbar.com/blog/how-to-fix-the-array-index-out-of-bounds-excepiton-in-java/ - Categories: Code Tutorials, Java - Tags: java The ArrayIndexOutOfBoundsException is a runtime exception in Java that occurs when an array is accessed with an illegal index. The index is either negative or greater than or equal to the size of the array. Let’s put that in simpler terms with an analogy. Imagine you have a row of five boxes lined up in front of you. Each box has a number on it. If you want to put a toy in one of these boxes, you have to say which box number you're putting it in. For example, "Put this toy in box number 2. " But what if you say, "Put this toy in box number 6"? There's no box number 6 because you only have five boxes. So, it's like asking for something that doesn't exist, and that causes a problem. Think of ArrayIndexOutOfBoundsException then as Java's way of saying, "Hey, that box number doesn't exist! " What Causes ArrayIndexOutOfBoundsException The ArrayIndexOutOfBoundsException is one of the most common errors in Java. Since a Java array has a range of , when an attempt is made to access an index outside this range, an ArrayIndexOutOfBoundsException is thrown. Besides arrays, this exception can also happen with strings, ArrayLists, and any other data structure that uses indexing to access elements. ArrayIndexOutOfBoundsException Example Here is an example of a ArrayIndexOutOfBoundsException thrown when an attempt is made to retrieve an element at an index that falls outside the range of the array: public class ArrayIndexOutOfBoundsExceptionExample { public static void main(String args)... --- ### How to Fix the ClassNotFound Exception in Java > The Java ClassNotFoundException occurs when the JVM tries to load a class but does not find it in the classpath. Learn the three steps you can take to fix it. - Published: 2024-05-26 - Modified: 2024-05-27 - URL: https://rollbar.com/blog/how-to-resolve-classnotfoundexception-in-java/ - Categories: Code Tutorials, Java - Tags: error-handling, exception monitoring, java When you run a Java program, the Java Virtual Machine (JVM) needs to load various classes to execute the program. The java. lang. ClassNotFoundException occurs when the JVM tries to load a particular class but doesn’t find it in the classpath. One of the most common reasons for the ClassNotFoundException is missing third-party libraries. Double-checking that all necessary dependencies are included in the classpath and that the classpath is correctly configured can prevent this exception. What Causes ClassNotFoundException The classpath is a parameter that tells the JVM and the Java compiler where to look for user-defined classes and packages when running a program. When you use any of the following methods to load a class but the JVM can’t find it in the classpath, java. lang. ClassNotFoundException is thrown. Class. forName ClassLoader. findSystemClass ClassLoader. loadClass If you get the ClassNotFoundException but are sure the class is there, what probably happened is one of these: The classpath might be incorrectly set up. The JAR file or directory containing the required classes is incorrect or the classpath is overridden by a start-up script or build configuration. Typos in the class name specified in methods like Class. forName If the required class depends on other classes that are not present in the classpath, it can lead to the ClassNotFoundException. This is common in complex applications with many dependencies. Sometimes, using different versions of a library can cause this exception if the class you are trying to load is not present in the version... --- ### How to Resolve Java.lang Exceptions > Understand and resolve common Java.lang exceptions with this comprehensive guide, including NullPointerException, IllegalArgumentException, and more. - Published: 2024-05-24 - Modified: 2024-05-24 - URL: https://rollbar.com/blog/how-to-resolve-java-lang-exceptions/ - Categories: Code Tutorials, Java - Tags: java Java. lang exceptions are some of the most commonly encountered exceptions in Java programming. As one of the foundational packages in the Java Standard Library, you don't even explicitly import java. lang in your code; it’s automatically imported into every Java program. Thanks to java. lang you get essential classes such as String, Math, and System, among others. You also get a variety of base classes for handling exceptions and errors. The many java. lang exceptions reflect the complexity of Java itself, and each provides detailed feedback to address specific issues. This guide serves as a central hub summarizing what the most common java. lang exceptions mean and linking to our in-depth blog posts that provide detailed solutions and best practices. Understanding these exceptions is not just about fixing errors but about gaining deeper insights into the mechanics of your codebase. java. lang. NullPointerException A NullPointerException occurs when you try to use an object reference that has not been initialized. This is one of the most common exceptions in Java. It’s crucial to check for null before performing operations on objects to avoid this exception. Learn More: How to Catch and Fix NullPointerException in Java java. lang. ArithmeticException An ArithmeticException is thrown when an exceptional arithmetic condition has occurred, such as division by zero. Properly handling mathematical operations and validating input can prevent this. Learn More: Java ArithmeticException java. lang. IllegalArgumentException This exception is thrown to indicate that a method has been passed an illegal or inappropriate argument. Validating method... --- ### How to Handle java.lang.IndexOutOfBoundsException > The IndexOutOfBoundsException is thrown when an index used in arrays, lists, or strings is not valid. Fixing it depends on the situation that led to it. - Published: 2024-04-30 - Modified: 2024-07-24 - URL: https://rollbar.com/blog/how-to-handle-java-lang-index-out-of-bounds-exception/ - Categories: Code Tutorials, Java - Tags: java The java. lang. IndexOutOfBoundsException in Java is thrown when an index used in arrays, lists, or strings is not valid. A valid index must be a number from 0 up to one less than the total number of items. For example, in a list of 3 items, the valid indices are 0, 1, and 2. Here’s a quick example: List list = new ArrayList(Arrays. asList(1, 2, 3)); int element = list. get(3); // This will throw IndexOutOfBoundsException The error message you’d get would look something like this: Exception in thread "main" java. lang. IndexOutOfBoundsException: Index: 3, Size: 3 Here are some other common ways the IndexOutOfBoundsException might be thrown: Sublist Operations: When creating a sublist from a larger list, if the start or end index is out of bounds. For example, list. subList(-1, 3) or list. subList(2, 10) where the list size is less than 10. String Manipulation Methods: Beyond just accessing characters, methods like substring, charAt, and split can throw this exception if the indices provided are out of range. Vector or Stack: Other data structures in the Java Collections Framework like Vector and Stack can also throw this exception when trying to access elements with an invalid index. Custom Data Structures: Developers can implement custom data structures that use indexing, and they may throw IndexOutOfBoundsException to indicate misuse, such as accessing elements not present in the structure. You may also see StringIndexOutOfBoundsException and ArrayIndexOutOfBoundsException, which are more specific subtypes of the IndexOutOfBoundsException, indicating out-of-bounds conditions for strings and... --- ### Sergey's story with Rollbar > From the very beginning, Rollbar has been integral to our operations, utilized even prior to our official launch. Our commitment to delivering exceptional service to our clients relies on the efficacy of our alerting and monitoring tools, with Rollbar being an important component. - Published: 2024-04-23 - Modified: 2024-04-23 - URL: https://rollbar.com/blog/sergeys-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Sergey Belogurov Sergey has now been using Rollbar for 100 months! 1. My Role I've worked for a marketing data analytics company called Attribution (www. attributionapp. com) for 8 years now. My role as Tech Lead is to ensure reliable operation of our services and continued delivery of new features with the help of the development team. Attribution’s mission is to make marketing performance more transparent. Marketers spend much of their time trying to understand what marketing efforts are working and which are not. The Attribution marketing analytics platform provides marketers with the insights to understand the cost, revenue and profit resulting from marketing programs by channel and down to the individual customer level so they can make better decisions, faster and with more confidence than ever before. 2. My Passion in the Role From early ages, I was always passionate about all types of tech: the first one being wooden bricks, I guess. So it's no surprise that over the years it transformed into the profession of my life. I like to build things and what could be more fun than building software in digital era? Don't be afraid to experiment and keep learning. The world of technology is constantly evolving, and there's always something new to discover. Embrace the challenges, and who knows, maybe your next creation will change the world! 3. The Rollbar Experience If everything always worked perfectly, Rollbar wouldn't be necessary, but in reality, it's a vital tool that works tirelessly behind the scenes for... --- ### How to Fix Unterminated String Literals > In other words, you probably forgot a closing quotation mark somewhere. This causes an error because the compiler doesn't know where your string ends. - Published: 2024-04-22 - Modified: 2024-10-09 - URL: https://rollbar.com/blog/how-to-fix-unterminated-string-literals/ - Categories: Code Tutorials - Tags: c++, java, JavaScript, PHP, Python, ruby Imagine you want to leave a note for someone. You write the message on a piece of paper and put it in an envelope. The envelope around your note keeps the message contained and separate from other things. It's the same idea with terminating string literals. A string literal is like the note you wrote, while terminating it is like sealing the envelope. Here's an example: "Hello, world! " The phrase "Hello, world! " is the string literal, while the double quotation marks tell the computer where the string begins and ends. An unterminated string literal then would be like: "Hello, world! See the missing closing quotation mark? When a string literal is not closed properly, it confuses the compiler or interpreter, which expects every opening quote to have a corresponding closing quote. The result is an error that can halt the execution of your program and can sometimes be tricky to spot, especially in longer blocks of code. In this post, we'll explore how unterminated string literals manifest in popular programming languages like Python, Java, JavaScript, C#, PHP, and Ruby. You'll learn not only how to identify but also how to resolve these common yet troublesome coding errors. Unterminated String Literals in Python When you run code like print("Hello, world! ), Python will throw a SyntaxError because it reached the end of the line and couldn't find the closing quotation mark. The error message looks like: SyntaxError: EOL while scanning string literal Here, EOL stands for "End Of Line.... --- ### Robin's story with Rollbar > From the very beginning, Rollbar has been integral to our operations, utilized even prior to our official launch. Our commitment to delivering exceptional service to our clients relies on the efficacy of our alerting and monitoring tools, with Rollbar being an important component. - Published: 2024-04-18 - Modified: 2024-04-18 - URL: https://rollbar.com/blog/robins-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Robin Dunlop Software Business Owner     Robin has now been using Rollbar for 103 months! 1. My Role I am now self-employed. I am a software consultant for various clients, I work mostly in a maintenance capacity. 2. My Passion in the Role I am passionate about maintenance. I have enough experience that I think that large re-writes are generally a bad idea. Identifying and fixing issues on existing systems are more important than replacing the system wholly. 3. The Rollbar Experience It works, it's easy to integrate, it's notification system (through email) with grouping works well (usually... sometimes the grouping is not quite right, but I haven't taken the time to figure out how to fix that on my end) --- ### Benoit's story with Rollbar > From the very beginning, Rollbar has been integral to our operations, utilized even prior to our official launch. Our commitment to delivering exceptional service to our clients relies on the efficacy of our alerting and monitoring tools, with Rollbar being an important component. - Published: 2024-04-16 - Modified: 2024-04-16 - URL: https://rollbar.com/blog/benoits-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Benoit Tremblay Chief Technology Officer Benoit has now been using Rollbar for 100 months! 1. My Role I work for UEAT Technologies, an ordering platform for restaurants. I am managing the engineering team that is building the online ordering and self-serving kiosk. 2. My Passion in the Role I am not only proud of the quality of the product that we built, I am even more proud of the amazing team of engineers that we built. We try as hard as we can to foster teamwork and I couldn't be more proud of my team. 3. The Rollbar Experience Rollbar is amazing at tracking issues, making it easy to get alerts and find information on how to reproduce them. We tried consolidating all our observability tools within Google Cloud but Rollbar saves us so much time, especially on the frontend projects, we will probably keep it forever. --- ### Pay directly from your bank account > Pay for your Rollbar subscription directly from your bank account, thanks to ACH payments! This is for customers in the United States looking for a simple, more direct way to handle subscription payments. - Published: 2024-03-29 - Modified: 2024-03-29 - URL: https://rollbar.com/blog/ach-payment-support/ - Categories: product You asked, and we listened. Now it’s here. Pay for your Rollbar subscription directly from your bank account, thanks to ACH payments! This is for customers in the United States looking for a simple, more direct way to handle subscription payments. What is ACH and why would I use it? ACH payments are electronic payments made through the Automated Clearing House network, a secure system that connects all U. S. financial institutions. They’re secure and fast, and sometimes easier than a usual credit payment. As with our credit cards, it's a set-it-and-forget-it way to keep your Rollbar subscription up and running. How to Switch to ACH Payments Switching to ACH payments is straightforward. Account owners can navigate to the 'Payment Details' section within the Rollbar settings. From there, clicking the 'Change Payment Method' button will allow you to select ACH as your preferred payment method. Once you've entered your bank account details and saved your settings, future payments will be automatically deducted from your bank account, making your payment process smoother and hassle-free. Tell Us What You Think! This new feature is all about making your life easier. If you have questions or need a hand setting things up, our support team is here to help. And we’re always here for your feedback, too. Do you have ideas, or thoughts, or just wanna chat about how we can make Rollbar even better for you? Shoot us an email at product@rollbar. com. Thanks for being such an awesome part of the... --- ### How to Fix a Circular Import in Python > An ImportError (most likely due to a circular import) happens when two or more modules depend on each other to function, creating a loop in the import statements. - Published: 2024-03-25 - Modified: 2025-03-17 - URL: https://rollbar.com/blog/how-to-fix-circular-import-in-python/ - Categories: Code Tutorials, Python - Tags: Python Think of two pieces of code (let's call them A and B) that need each other to work. A says, "I need B to do my job," and at the same time, B says, "I need A to do my job. " But if A is waiting for B to work, and B is waiting for A to work, neither can start working. This "waiting on each other" situation causes Python to get stuck and throw a circular import error. Example Here’s a real life example of this error message: importerror: cannot import name 'db' from partially initialized module 'app' (most likely due to a circular import) This indicates that at some point in the code, there's an attempt to import an entity named db from a module named app. What does the error actually mean? The term partially initialized module 'app' means that when the import of db is attempted, the module app hasn't been fully loaded yet. Python needs to execute the entire body of a module to consider it fully initialized. If this process is interrupted or made conditional by a circular dependency, not all definitions within the module will have been executed, leading to this partial initialization problem. The error hints at a circular import being the likely culprit. The phrase (most likely due to a circular import) means that app might be trying to use something from another module, which in turn, directly or indirectly, tries to import app again (or something from app). Python... --- ### Ibrahim's story with Rollbar > From the very beginning, Rollbar has been integral to our operations, utilized even prior to our official launch. Our commitment to delivering exceptional service to our clients relies on the efficacy of our alerting and monitoring tools, with Rollbar being an important component. - Published: 2024-03-22 - Modified: 2024-04-15 - URL: https://rollbar.com/blog/ibrahim-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Ibrahim Menem Co-Founder at Stomio     Ibrahim has now been using Rollbar for 100 months! 1. My Role I am Ibrahim Menem, co-founder of Stomio. io, a cutting-edge voice-of-customer platform dedicated to empowering product teams in crafting exceptional products. Our platform equips teams with great tools to gather customer feedback and execute top-tier beta programs effectively. Stomio was founded in 2021, with roots spanning from San Francisco, CA to Madrid, Spain. 2. My Passion in the Role From the very beginning, Rollbar has been integral to our operations, utilized even prior to our official launch. Our commitment to delivering exceptional service to our clients relies on the efficacy of our alerting and monitoring tools, with Rollbar being an important component. We integrate it to Stomio's production and staging environments and every exception report undergoes meticulous review, enabling us to proactively address any potential issues before they impact our clients. Moreover, Rollbar is connected to our engineering slack channel, ensuring that the entire team remains promptly informed about any emerging issues. 3. The Rollbar Experience We chose Rollbar because we already used and liked it from previous jobs. After a quick comparison with other options in the market, we found that Rollbar's free plan was really generous and was perfect for our traffic at that moment, once we started to have higher traffic volume we changed to a paid plan. --- ### How to Fix java.lang Illegal Argument Exception Unsupported Class File Major Version 61 > The error is Java's way of saying, "I can't run this class because it was built with a version of Java that's newer than me." It's time to upgrade Java. - Published: 2024-03-20 - Modified: 2024-11-05 - URL: https://rollbar.com/blog/unsupported-class-file-major-version-61-error-in-java/ - Categories: Code Tutorials, Java - Tags: java The "Unsupported class file major version 61" error in Java means you're trying to run a Java program that's too advanced for the version of Java you have installed. To fix this, either update your Java to version 17 or newer, otherwise recompile the program with an older Java version that matches your runtime environment. This error often occurs when using libraries, frameworks, or tools that internally check class file versions and throw an IllegalArgumentException if they encounter a version they don't support. What’s “major version 61” mean? Each compiled Java class file contains metadata, including a "major version number," which indicates the version of the Java Development Kit (JDK) used to compile that class file. This version number helps the Java Virtual Machine (JVM) to identify whether it can support running the class file based on the JVM's own version. "Major version 61" refers to the internal version number used by Java to represent Java SE 17. Since you see this version number in your error, it means your current Java runtime environment is older than Java 17 and you need to update to Java 17 or higher to run the class file without issues. How to fix the error by updating your version of Java Updating Java to a newer version will solve compatibility issues and allow you to run applications compiled with newer JDK versions. Click the button below to go to Oracle’s website and install the latest version so you can run your program without this... --- ### Removing Support for TLS 1.0 and 1.1 Protocols - Published: 2024-02-29 - Modified: 2024-03-21 - URL: https://rollbar.com/blog/removing-tls-1-0-and-1-1/ - Categories: product - Tags: security Removing Support for TLS 1. 0 and 1. 1 Protocols On March 31, 2024, Rollbar will remove support for TLS 1. 0 and 1. 1 protocols. Rollbar is discontinuing the support for these older versions of TLS. This means any attempted connections using older browsers that only support TLS 1. 0 and 1. 1 will no longer be allowed. As of March 31, 2024, only TLS 1. 2 and higher are supported by Rollbar. What is changing? Transport Layer Security (TLS) is the protocol at the heart of HTTPS (the successor to SSL). Its primary purpose is to encrypt the communication, thus preventing eavesdropping and data tampering. In the past, several security vulnerabilities in TLS have been found, the most famous being BEAST and POODLE. The solution has been to update newer versions of TLS protocols that fixed those vulnerabilities and implement other minor security improvements. Currently, TLS 1. 2 and TLS 1. 3 are supported by all major browsers and modern software due to these improvements. To maximize compatibility with existing deployments, Rollbar has continued to support all TLS versions starting from 1. 0. But now, the time has come to retire TLS 1. 0 and 1. 1. As of March 31, 2024, the minimum version of TLS supported by Rollbar will be 1. 2. What actions are needed? If you are using TLS 1. 0 or 1. 1, you will need to upgrade to 1. 2 or higher in order to keep using Rollbar. Not sure if you're... --- ### Angular vs. React: Which is Better, and When? > Angular is a full-featured framework, while React is a library focused on UI components with the freedom to choose the rest of your tech stack freely. - Published: 2024-02-15 - Modified: 2024-02-22 - URL: https://rollbar.com/blog/angular-vs-react/ - Categories: topics - Tags: angular, react In a nutshell, here's the biggest difference between Angular and React: With Angular, you get a standardized approach to everything. It’s a structured environment that gives you clear direction and all the resources you need within arm's reach, minimizing venturing outside for additional tools or materials. React, on the other hand, resembles a playground where you're handed the basic building blocks and left to your own devices. It champions a more laissez-faire approach, focusing solely on the UI and entrusting you to select your own adventure with the rest of your stack. Choosing one over the other can significantly affect both your coding experience and project success. Let's dive into the specifics so you can make an informed choice. The basics: Angular is a framework, React is a library Angular is a full-fledged MVC (Model-View-Controller) framework for building web apps with out-of-the-box features like form handling, routing, and state management. Angular uses TypeScript, a superset of JavaScript, offering static typing and classical object-oriented programming features. React is fundamentally a library focused on building user interfaces. React apps are typically built using additional libraries for routing, state management, and more, giving you the flexibility to choose your tools. React uses JSX, a syntax extension that allows HTML to be written within JavaScript. Angular provides two-way data binding, React follows a one-way data flow Angular implements two-way data binding, meaning changes in the UI are automatically reflected in the app state, and changes in the app state are immediately reflected in the... --- ### New Source Map Error Workflow - Published: 2024-01-29 - Modified: 2024-01-29 - URL: https://rollbar.com/blog/new-source-map-error-workflow/ - Categories: product We're excited to unveil the latest enhancements to Rollbar’s Source Map handling. This new feature, directly influenced by user feedback, simplifies your debugging experience, making Source Mapping more intuitive and user-friendly. Source Map issues are a frequent concern, ranking among the top five monthly support requests. We recognize the challenges you face when dealing with errors that don't make sense due to Source Mapping configuration issues. So, we identified key areas where users struggled with Source Maps, such as understanding automated downloads, lack of feedback on processing failures, and the overwhelming noise on the Sourcemap screen. Our development efforts were tailored to address these specific concerns. First, we want to make error messages more actionable, so we moved the errors to a sidebar associated with your item. By clicking the new “source map error” button, We will provide a detailed error message and documentation allowing source maps to download automatically without issue going forward. You can manually upload the missing source map to deobfuscate the stack frame the next time an occurrence occurs (note this will create a new item). If your error handler contains multiple source maps, you must manually upload each source map to deobfuscate all stack frames for future occurrences. Additionally, we have broken down our documentation and directly linked it to specific issues and error messages, ensuring that you spend less time searching for solutions and more time resolving them. As always, your input is invaluable in shaping our platform. We encourage you to explore these... --- ### Auto-suggest item owner based on Git Blame data - Published: 2024-01-29 - Modified: 2024-03-12 - URL: https://rollbar.com/blog/auto-suggest-item-owner-based-on-git-blame-data/ - Categories: product Overview For projects integrated with GitHub, Rollbar now has the ability to show the user identified by Git Blame in the Assign Owner field. This can help identify the last user to have dealt with the code in question so they can be assigned as the initial owner in Rollbar. Benefits of assigning items to owners Assigning items to specific owners helps teams to manage the list of Rollbar items by making it clear who has ownership for each issue, meaning items are more likely to be investigated and resolved. Displaying the available Git Blame data helps to more easily identify the user who may have last been involved in working in the code, which is usually a good starting point to begin investigating. Suggested owner data When opening the Owner field on the item list or item detail page, if an associated Rollbar user for the Git Blame owner can be identified then they will be suggested as the potential owner for the item. The owner identified by git-blame is the same user shown inline in the stack trace. Once an owner has been assigned, the auto-suggestion for the item owner will no longer be displayed. Enabling owner auto-suggestion Pre-requisites The auto-suggest feature is only available for Advanced and Enterprise customers. At a project level, if the project has GitHub integration configured, there is a toggle to enable the auto-suggest feature. In order to be displayed in the suggested owner field, the GitHub user identified by Git Blame must... --- ### How to Fix “Function Object is Not Subscriptable” in Python > Simply put, you're trying to treat a function like it's a list, but you can't do that because they are different things. Try this other way to get what you want. - Published: 2024-01-24 - Modified: 2024-01-24 - URL: https://rollbar.com/blog/how-to-fix-function-object-is-not-subscriptable-python/ - Categories: Code Tutorials, Python - Tags: Python “Subscriptable” is just a fancy way of saying "something you can use square brackets on to get parts from it. ” For example, my_list and my_dict accesses the element at 0 and key, respectively. In Python you can only use square brackets to access elements of a list, array, or dictionary. If you try to do the same thing with a function, you get the “function object is not subscriptable” error. Simply put, you're trying to treat a function like it's a list, but you can't do that because they are different things. “Function Object is Not Subscriptable” Example Functions are objects. When you define a function, you create an object. For example: def my_function: return You mistakenly treat a function like it's subscriptable when you use square brackets on it. first_element = my_function Traceback (most recent call last): File "example. py", line X, in result = my_function TypeError: 'function' object is not subscriptable That raises the error because you’re trying to access the first element of a function, which isn’t possible. How to Fix “Function Object is Not Subscriptable” Continuing with the example above, if you want to return the first element in the function’s return value, you would need to call my_function first and then access the first element of its return value, like this: first_element = my_function 1 See the difference? When you try my_function, you’re using square brackets on the function itself, which doesn't make sense because a function isn't a list or array; it doesn't... --- ### Making Project, Item and Occurrence IDs accessible within Service Links - Published: 2024-01-23 - Modified: 2024-01-23 - URL: https://rollbar.com/blog/making-project-item-and-occurrence-ids-accessible-within-service-links/ - Categories: Uncategorized - Tags: Service Tags Create detailed workflows and integrations with third-party systems using IDs Overview In the latest release of Rollbar, we have updated our Service Links to include the project, item and occurrence IDs related to the item and occurrence being viewed. Rollbar Service Links allow users to launch specific actions using the data available within the current occurrence at the click of a button. For example - you could launch a Datadog query with a specific search value from the item and narrow down the time period based on the occurrence. In order to expand the usefulness and flexibility of Service Links, we have added the ability to access the Project ID, Item ID, Item Counter and Occurrence ID within each Service Link. When combined with the public Rollbar APIs, these fields allow the creation of sophisticated, detailed workflows that can be launched at the click of a button. Available fields The following fields are now available to add to Service Links: _{{item. counterid}} - the item counter / number (as seen at the top of the item page and in the item url) {{item. id}} - the item ID - as fed into the _Get an item (by ID) and Update an Item_ API calls _{{item. occurrenceid}} - the occurrence ID of the specific occurrence being viewed _{{item. projectid}} - the project ID for the item in question Usage Examples These fields can be included in the endpoint url defined in the Service Link, which when launched can then be used... --- ### Usage Visualizations > We are excited to unveil the latest enhancement to Rollbar's platform - the integration of graphical visualizations in the usage page. Building on our new usage page, this feature brings a dynamic and intuitive way to monitor and manage your occurrences. - Published: 2024-01-23 - Modified: 2024-01-23 - URL: https://rollbar.com/blog/usage-visualizations/ - Categories: product - Tags: Usage Notifications Introducing Rollbar’s Usage Visualizations New Account and Project Graphs We are excited to unveil the latest enhancement to Rollbar's platform - the integration of graphical visualizations in the usage page. Building on our new usage page, this feature brings a dynamic and intuitive way to monitor and manage your occurrences. Visualizing Your Occurrences and Budgets In response to your feedback, we've made some enhancements to the usage page. First, we’ve updated the default view to a daily perspective, allowing for a more granular understanding of occurrences. Alongside this, we’ve introduced a new graphical visualization of your occurrences. Users can now see a clear, color-coded graph showing their account's occurrences against a suggested budget for each time frame. Integrating daily insights and budget visualization offers a more transparent, practical view of your usage and where your application might have used more occurrences than expected. Project-Level Insights The projects tab now shows usage share per project for up to five projects, which users can select from their account. This flexibility allows for a tailored comparison of how different projects consume occurrences throughout the contract period. Whether you’re monitoring the top five projects by usage or a custom selection, this feature provides a straightforward way to compare and understand project-level data. If you need a deep dive into individual projects, clicking on a project title in the projects tab now brings up a slide-over with a new addition: a detailed graph showing the project's usage over the selected time frame. This graph supplements... --- ### How to Fix IndexError: List Index Out of Range in Python > The IndexError in Python occurs when an item from a list is attempted to be accessed that is outside the index range of the list. - Published: 2024-01-18 - Modified: 2025-03-17 - URL: https://rollbar.com/blog/python-indexerror/ - Categories: Code Tutorials, Python - Tags: Python The IndexError: list index out of range error occurs in Python when an item from a list is attempted to be accessed that is outside the index range of the list. The range of a list in Python is , where n is the number of elements in the list. Python IndexError Example Here’s an example of a Python IndexError: list index out of range thrown when trying to access an out of range list item: test_list = print(test_list) In the above example, since the list test_list contains 4 elements, its last index is 3. Trying to access an element an index 4 throws an IndexError: list index out of range: Traceback (most recent call last): File "test. py", line 2, in print(test_list) IndexError: list index out of range How to Fix IndexError in Python The Python IndexError: list index out of range can be fixed by making sure any elements accessed in a list are within the index range of the list. This can be done by using the range function along with the len function. The range function returns a sequence of numbers starting from 0 ending at the integer passed as a parameter. The len function returns the length of the parameter passed. Using these two methods together allows for safe iteration over the list up to its final element, thus ensuring that you stay within the valid index range and preventing the IndexError. Here's how to use this approach to fix the error in the earlier... --- ### JavaScript RangeError: Maximum Call Stack Size Exceeded > JavaScript RangeError: Maximum Call Stack Exceeded is thrown when there are too many function calls, or if a function is missing a base case. - Published: 2024-01-18 - Modified: 2024-01-18 - URL: https://rollbar.com/blog/javascript-rangeerror-maximum-call-stack-size-exceeded/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript The JavaScript RangeError: Maximum call stack size exceeded happens when a function keeps calling itself without any condition to stop, and eventually, the program runs out of space to keep track of these repeated calls. It's a sign that your program needs a way to stop the function from calling itself endlessly. This error typically occurs due to: Too many function calls. Issues in handling recursion, e. g. missing base case in a recursive function to stop calling itself infinitely. Out of range operations. RangeError: Maximum Call Stack Size Exceeded Example Here’s an example of a JavaScript RangeError: Maximum call stack size exceeded thrown when using a recursive function that does not have a base case: function myFunc { myFunc; } myFunc; Since the recursive function myFunc does not have a terminating condition (base case), calling it creates an infinite loop as the function keeps calling itself over and over again until the RangeError: Maximum call stack size exceeded error occurs: Uncaught RangeError: Maximum call stack size exceeded at myFunc (test. js:2:2) at myFunc (test. js:2:2) at myFunc (test. js:2:2) at myFunc (test. js:2:2) at myFunc (test. js:2:2) at myFunc (test. js:2:2) at myFunc (test. js:2:2) at myFunc (test. js:2:2) at myFunc (test. js:2:2) at myFunc (test. js:2:2) How to Avoid RangeError: Maximum Call Stack Size Exceeded If this error is encountered when calling recursive functions, make sure that the function has a defined base case to terminate the recursive calls. In case this error occurs due to an excessive... --- ### Adam's story with Rollbar > Rollbar has been great at letting our development team quickly identify issues, communicate them, and monitor their resolution. The very readable tracebacks and in-scope variable values across various environments are extremely useful across our team to solve issues quickly and transparently. - Published: 2024-01-17 - Modified: 2024-04-15 - URL: https://rollbar.com/blog/adams-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Adam Saunders Co-Founder at PiinPoint Adam has now been using Rollbar for 100 months! 1. My Role PiinPoint is a Location Intelligence platform for businesses that manage portfolios of real estate locations. Among other industries, we help retailers find the top opportunities to expand their network of locations, as well as help them plan market reconfiguration strategies to optimize for network performance. This is conducted through a SaaS platform and custom Service offerings that get rolled into the platform. 2. My Passion in the Role I'm passionate about providing useful spatial visualization tools and valuable analysis results to our customers. This often requires involvement between Data Science, and the Development team across Platform, DevOps, and Database skillsets to bring new results to the customer. In this process, Rollbar is extremely useful throughout initial integration, QA activities, and monitoring after go-live to make sure the customer experience of the solution is top-tier. 3. The Rollbar Experience Rollbar has been great at letting our development team quickly identify issues, communicate them, and monitor their resolution. The very readable tracebacks and in-scope variable values across various environments are extremely useful across our team to solve issues quickly and transparently. The integration with Slack is very useful in keeping the visibility of errors high and actionable to the appropriate teams. --- ### How to Fix “Client network socket disconnected…” in Node.js > Learn 6 things you can do to get the connection working. As a last resort, you can also set rejectUnauthorized to false, which ignores SSL validation errors. - Published: 2024-01-15 - Modified: 2024-01-15 - URL: https://rollbar.com/blog/how-to-fix-client-network-socket-disconnected-nodejs/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript, Node.js The error “Client network socket disconnected before secure TLS connection was established” indicates something went wrong when setting up a secure connection with the server you’re communicating with. This can happen because of an unstable internet connection, wrong security settings on the server, or things like firewalls getting in the way. Diagram of what happens to cause 'Client network socket disconnected... ' Although this blog post will use Node. js in examples to discuss this error, the underlying cause is related to the network layer rather than a language-specific issue. You can get this error in any programming language that supports network operations and TLS (Transport Layer Security) for secure connections. What causes “Client network socket disconnected... ”? Here are some of the typical causes: Timeout Issues: The client took too long to establish a connection with the server. This could be due to network latency, server overload, or other network-related issues. Proxy or VPN Interference: If the client is behind a proxy or using a VPN, these can sometimes interfere with or disrupt the TLS handshake process. Firewall or Security Software: Firewalls or security software on the client or server side may block the connection or interrupt the TLS handshake. SSL Certificate Problems: Issues with the server's SSL certificate, such as it being expired, self-signed, or not properly configured, can prevent a successful TLS connection. Incompatible TLS Versions: If the Node. js client and the server are using incompatible TLS versions or cipher suites, the handshake will fail. Server... --- ### How to Fix "Could not find or load main class" in Java > The Java “Could not find or load main class” error is thrown when the JVM fails to find or load the main class while executing a program. - Published: 2024-01-13 - Modified: 2025-03-17 - URL: https://rollbar.com/blog/java-could-not-find-or-load-main-class/ - Categories: Code Tutorials, Java - Tags: java The Java error “Could not find or load main class” is thrown when the JVM fails to find or load the main class while executing a program. This is often due to simple mistakes like typing the wrong class name or having the class file in the wrong place. It usually occurs when executing a Java program from the command line. Install the Rollbar Java SDK to identify and fix these errors What Causes "Error: Could not find or load main class" It typically arises from issues like an incorrect class name, a mismatch in the directory and package structure, or a misconfigured classpath. Here's a full list of things to check: The class being declared in the incorrect package. The file path of the class not matching the fully qualified name. Incorrectly specified classpath of the application. Missing dependencies from the classpath. Incorrect directory path on the classpath. A typo in the class name. "Error: Could not find or load main class" Example Here’s an example of the Java "Could not find or load main class" error thrown when an incorrect class name is specified during execution: Say you have an example Java class MyClass. java: public class MyClass { public static void main(String args) { System. out. println("Hello World"); } } You then compile the above class using the command line: $ javac MyClass. java The compiler generates an executable . class file for MyClass: $ ls MyClass. class MyClass. java Now if the java command is used... --- ### Saiqul's story with Rollbar > Since the early days of Hungry Hub, when we had just dozens of active monthly users, Rollbar has been a crucial tool in our development arsenal. As our user base expanded to over a million, Rollbar's real-time error tracking and comprehensive insights have been instrumental in ensuring the stability and reliability of our applications. - Published: 2024-01-09 - Modified: 2024-04-15 - URL: https://rollbar.com/blog/saiquls-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Saiqul Haq CTO (Chief Technology Officer) Saiqul has now been using Rollbar for 100 months! 1. My Role I am the CTO of Hungry Hub, Thailand's No. 1 dining app for special occasions. Our platform elevates the dining experience by connecting culinary enthusiasts with a curated selection of restaurants for those special moments. At Hungry Hub, we are dedicated to continuous innovation and improvement of our app, ensuring it remains the top choice for anyone looking to make their dining occasions extraordinary in Thailand. Our current projects revolve around enhancing user experience, incorporating advanced features for restaurant partners, and expanding our reach to encompass a more comprehensive array of unique dining experiences. . 2. My Passion in the Role My passion lies in building and leading a team of talented software developers, creating an environment where innovation thrives. I am deeply invested in developing systems that meet and exceed user expectations, ensuring high performance and reliability. The process of transforming complex technical challenges into seamless solutions energizes me. Moreover, I find it immensely rewarding to guide my team toward achieving their career goals while fostering a collaborative and efficient work culture. 3. The Rollbar Experience Since the early days of Hungry Hub, when we had just dozens of active monthly users, Rollbar has been a crucial tool in our development arsenal. As our user base expanded to over a million, Rollbar's real-time error tracking and comprehensive insights have been instrumental in ensuring the stability and reliability of our applications. Its... --- ### Kalle's story with Rollbar > My loyalty to Rollbar is rooted in its exceptional capabilities in real-time error monitoring and debugging, which are vital for our operations at Oneflow. Its ability to provide instant notifications, detailed error reports, and track bugs across our various projects is crucial for maintaining our high service quality. Rollbar fits perfectly with our aim to offer reliable and efficient service. Its user-friendly interface and comprehensive tracking capabilities make it an indispensable tool in our development arsenal. - Published: 2024-01-04 - Modified: 2024-04-15 - URL: https://rollbar.com/blog/kalles-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Kalle Moodh CTO (Chief Technology Officer) Kalle has now been using Rollbar for 100 months! 1. My Role I am the CTO and Co-Founder at Oneflow, a digital contract management platform that automates the entire contract process from start to finish. Our platform is designed to transform clunky, static contracts into dynamic, truly digital contracts, making processes faster and decisions smarter, leading to quicker deals. My current focus involves integrating external systems to automate customer workflows, enhancing our system's infrastructure for greater reliability and scalability, and maintaining top-tier security and stability. We strive to overcome the friction and complexity in traditional contract processes, ensuring a smooth, secure, and delightful experience for our users. 2. My Passion in the Role My passion in this role at Oneflow comes from the significant impact we have on simplifying our users' work lives. Our digital contract management system not only eliminates hours of manual, tedious tasks but also brings a level of ease and efficiency that was previously unattainable with paper-based methods. The trust our users place in us by entrusting their sensitive data is something I value deeply. It's incredibly fulfilling to offer a secure, reliable solution that not only saves time and money but also enhances creative freedom and overall satisfaction in the workplace. At Oneflow, we're not just about handling contracts; we're about enhancing life and work quality. 3. The Rollbar Experience My loyalty to Rollbar is rooted in it's exceptional capabilities in real-time error monitoring and debugging, which are vital... --- ### Rollbar Alternatives: Compare Before You Commit > Thinking of rolling past Rollbar? Dive into our comparison of 6 error monitoring tools and see why so many developers choose Rollbar. - Published: 2023-12-17 - Modified: 2024-01-23 - URL: https://rollbar.com/blog/rollbar-alternatives/ - Categories: topics Rollbar is acclaimed as the top error monitoring tool - with 4. 5 out of 5 stars on both Capterra and G2 - amongst a competitive field. That said, we recognize there are alternatives some people consider when also looking at us. Here is our perspective on what these other tools are for, and when to choose Rollbar instead. Rollbar (hey, that's us) Rollbar stands out in the error monitoring tool scene for a few key reasons. First off, it's super quick to know when something goes wrong in your app. You get instant alerts about errors so you can jump right on fixing them. This means less downtime and a better experience for your users. Rollbar also gives you detailed info about each error, like where exactly in your code it happened and what the data looked like at that moment. This makes it way easier to figure out what went wrong. And when it comes to sorting out the mess of errors you might get in a big app, Rollbar's got your back. It groups similar errors together, so you can see what needs your attention most. This feature is a lifesaver when you're dealing with lots of bugs at once. Plus, it works with lots of different programming languages and hooks up smoothly with other tools you might be using, like Slack, Jira, or GitHub. The reports and analytics Rollbar provides are super helpful for understanding what's going on over time. Another big plus for Rollbar is... --- ### Team Assignment > We’re excited to announce a new feature for Advanced and Enterprise customers - the ability to set a team as the owner of an item. - Published: 2023-12-11 - Modified: 2023-12-11 - URL: https://rollbar.com/blog/team-assignment/ - Categories: product - Tags: team Team Assignment Assign items to teams as well as individual owners! We’re excited to announce a new feature for Advanced and Enterprise customers - the ability to set a team as the owner of an item. Previously, Rollbar has only allowed users to assign a specific team member as the owner of an item. However, recognizing the need for flexibility in ownership, especially in collaborative environments, we now allow a team to be set as the owner of an item. This update is particularly beneficial when a team collectively oversees an item, but the exact team member responsible for handling the error has yet to be determined. Assigning the item to a team allows for a shared sense of responsibility and clarifies who's in charge, making the management of items more straightforward. This feature is accessible to any team granted access to a project, as outlined in the Project Settings / Members screen. How to use Team Assignment Teams can be assigned as an item owner on the current item assignment dropdown. The relevant teams are displayed on the second tab. If you need to filter your items by teams on the item list page, the Owners filter also includes the ability to filter by specific teams: Unlock the power of team collaboration now! Our new team assignment feature is available for Advanced and Enterprise users. Don’t miss out on this game-changing feature. Upgrade from Free and Essentials today to elevate and streamline your team’s workflow! --- ### Marc's story with Rollbar > What has kept us with Rollbar is that it’s always there when we really need it, and stays out of the way quietly ticking along when we don’t. It’s not needy, or trying to increase ‘engagement’ in any way, we can just jump in, do what we need to do as quickly as we can, and then we’re out and get back to business as usual. - Published: 2023-12-08 - Modified: 2024-04-15 - URL: https://rollbar.com/blog/marcs-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Marc Roberts CTO (Chief Technology Officer) Mark has now been using Rollbar for 101 months! 1. My Role I work at Hiyacar. We provide car sharing technology for peer to peer car sharing and for businesses to efficiently manage their pool cars. Our biggest project at the moment is to build out our recently launched pool car offering to support more businesses use cases. 2. My Passion in the Role I’m most passionate about ensuring our platform remains scalable, not just from a technology point of view but also ensuring the team growth and processes maintain an environment where we can build quickly and produce easily maintainable code with the least tech debt. 3. The Rollbar Experience What has kept us with Rollbar is that it’s always there when we really need it, and stays out of the way quietly ticking along when we don’t. It’s not needy, or trying to increase ‘engagement’ in any way, we can just jump in, do what we need to do as quickly as we can, and then we’re out and get back to business as usual. --- ### New Integration: Bird Eats Bug > We are introducing a new Snooze option for items. When Snoozing an item, the user will define how long an item will stop sending notifications for - once that time period expires then the item will return to normal and begin sending notifications again. - Published: 2023-11-28 - Modified: 2023-11-28 - URL: https://rollbar.com/blog/bird-eats-bug-integration/ - Categories: product New Integration: Bird Eats Bug We're excited to announce a new integration with screen capture tool Bird Eats Bug! What does the Bird and Rollbar integration do? Bird Eats Bug is a screen capture tool for Product Managers, QA Testers, and end users to easily report bugs as they see them. Integration with Bird Eats Bug connects errors in Rollbar to a Bird Eats Bug recording, allowing a much easier way to understand the user's experience when reviewing error data in Rollbar. There's a clear correlation between error data in Rollbar and issues reported from internal and external users with Bird Eats Bug. Prerequisites For the integration to work, you need to use both Rollbar and either Bird Eats Bug SDK or the browser extension. Rollbar configuration The data that Rollbar needs is known by the Bird SDK on the same page. We can make Rollbar aware of it using just a few lines of extra code in your rollbar. js configuration, as shown in the JavaScript code example below. This can be done in any SDK that Bird Eats Bug and Rollbar support. var const rollbarConfig = { // ... otherConfig transform: function (payload) { // Add the Bird Eats Bug session link to the payload, if it exists. const sessionLink = window. birdeatsbug? . session? . link || window. birdeatsbugExtension? . session? . link if (sessionLink) { payload. birdeatsbugSessionURL = sessionLink; } return payload; } }; Now you can view the Bird Eats Bug URL in Rollbar: The... --- ### Next.js or Vite.js: Which Framework is Better, and When? > Next.js excels in server-side rendering for SEO and fast load times, while Vite.js offers rapid development and reduced server load. - Published: 2023-11-13 - Modified: 2023-11-13 - URL: https://rollbar.com/blog/nextjs-vs-vitejs/ - Categories: topics - Tags: JavaScript, next Two names that have been making waves with their distinct approaches to building web apps are Next. js and Vite. js. Next. js is a React framework specialized in server-side rendering (SSR), static site generation (SSG), and hybrid applications. It provides features like file-based routing, image optimization, and is particularly suited for projects where SEO and fast initial load times are priorities. Vite. js, in contrast, is a build tool that supports various frameworks including React, Vue, and Svelte. It focuses on client-side rendering, offering fast development setup and hot module replacement. Vite. js is ideal for projects where rapid development and reduced server load are key considerations. As we dissect these frameworks, we’ll compare their strengths, weaknesses, and the unique flavor they bring to web development - and how choosing between them can profoundly influence the outcome of your project. What makes Next. js remarkable? Next. js offers many features that enhance the development experience and the performance of web apps, such as: File-system-based Routing: Next. js automatically creates routes based on the files in the pages directory. Image Optimization: Next. js provides an image component that automatically optimizes images for faster loading. It supports features like lazy loading, resizing, cropping, and quality adjustment. Internationalization: Next. js supports built-in internationalization and localization features that allow you to create multilingual web apps with ease. API Routes and Endpoints: Next. js allows you to create API endpoints in the pages/api directory. These endpoints can be used to handle requests from your... --- ### What are Sealed Classes in Java? > A sealed class is a class that explicitly specifies which other classes are allowed to extend it. Learn more about them here. - Published: 2023-11-10 - Modified: 2023-11-10 - URL: https://rollbar.com/blog/what-are-sealed-classes-in-java/ - Categories: Code Tutorials, Java - Tags: java Sealed classes are a feature introduced in Java 15 which bring a new level of control and predictability to class hierarchies. A sealed class is a class that explicitly specifies which other classes are allowed to extend it. This offers a way to restrict class hierarchies, making them more predictable and less prone to unintended extensions. Why Sealed Classes? In Java, class hierarchies can become complex, with numerous subclasses extending a common superclass. This can make it challenging to maintain and control the hierarchy. Unintentional extensions and modifications of classes can lead to unexpected issues and bugs in the codebase. Sealed classes were introduced to address this challenge. They provide a mechanism for specifying which classes can extend a particular class, which helps prevent unauthorized extensions. How to Use Sealed Classes The sealed modifier is used to declare a class as sealed. Additionally, the classes that are permitted to be its direct subclasses are specified using the permits keyword. Here’s an example: public sealed class Animal permits Dog, Cat, Bird { //Class implementation } In this example, the Animal class is declared as sealed and permits three subclasses: Dog, Cat and Bird. Any attempt to create a new subclass of Animal outside of this list will result in a compilation error. Preventing Errors with Sealed Classes Sealed classes offer several benefits in preventing errors and ensuring code correctness: Controlled Extensibility: By explicitly specifying which classes can extend a sealed class, fine-grained control is achieved over the class hierarchy. This ensures... --- ### Inga's story with Rollbar > Rollbar is extremely easy to integrate, but the real power is in the extended functionality. Rollbar telemetry can be a real time-saver, giving the context to user actions that preceded the actual issue. And for the actual deep-dive in errors, RQL (the query language) is invaluable. I'm also a big fan of the Slack notifications and the flexibility they offer. - Published: 2023-11-09 - Modified: 2024-04-15 - URL: https://rollbar.com/blog/ingas-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Inga Brūnava Lead FE Engineer Inga has now been using Rollbar for 100 months! 1. My Role I'm a Principal Software Engineer at Databox. Databox is a business analytics platform that allows users to connect all of their data in one place, visualize performance trends, monitor progress toward their goals, make more informed decisions, collaborate, and report. All data in one place, on any device. I'm mostly involved in the user-facing part of Databox Analytics app. 2. My Passion in the Role The ultimate goal for any app is to have a user experience without hiccups like bugs, sluggishness and unexpected behavior. That, combined with the personal challenges like "can I make this work", is why I enjoy doing what I do. 3. The Rollbar Experience It's extremely easy to integrate, but the real power is in the extended functionality. Rollbar telemetry can be a real time-saver, giving the context to user actions that preceded the actual issue. And for the actual deep-dive in errors, RQL (the query language) is invaluable. I'm also a big fan of the Slack notifications and the flexibility they offer. --- ### Mobile iOS Error Simulator > Ready to explore Rollbar without the coding hassle? The Rollbar Error Simulator iOS app is the ultimate solution for carefree error testing, designed for users without coding experience. - Published: 2023-11-07 - Modified: 2023-11-13 - URL: https://rollbar.com/blog/mobile-error-simulator/ - Categories: product Meet Rollbar’s Mobile Error Simulator Ready to explore Rollbar without the coding hassle? The Rollbar Error Simulator iOS app is the ultimate solution for carefree error testing, designed for users without coding experience. Seamlessly connecting to your Rollbar account, this user-friendly app lets you simulate errors effortlessly with just a single tap on a button. No technical expertise is needed! Just create a new account, opt for the Error Simulator experience, and you'll be guided. Detailed instructions can be found in our documentation. As always, please feel free to provide feedback via customer support or product@rollbar. com to discuss any ideas, suggestions, or problems when using Rollbar. --- ### How to Fix text.ParseException in Java > The ParseException is a checked exception in Java that signals an unexpected error while parsing an input. Learn how to fix it. - Published: 2023-11-06 - Modified: 2023-12-12 - URL: https://rollbar.com/blog/how-to-fix-java-text-parseexception/ - Categories: Code Tutorials, Java - Tags: java The java. text. ParseException is a checked exception in Java that signals an unexpected error while parsing an input. This typically happens when the input does not match the expected format. Since ParseException is a checked exception, it must be explicitly handled in methods that can throw this exception - either by using a try-catch block or by throwing it using the throws clause. What Causes ParseException Here are some common scenarios where a ParseException may occur when trying to parse an input: An input string doesn't match the format expected by the parsing method. Unexpected characters or symbols in the input string can throw this exception. Parsing can be sensitive to locale settings. If the input string format doesn't match the locale settings, it may cause a ParseException. Attempting to parse null or empty strings can also cause this exception. ParseException Example Here's an example of a ParseException thrown when trying to parse an input string that doesn’t match the expected format: import java. text. ParseException; import java. text. SimpleDateFormat; import java. util. Date; public class ParseExceptionExample { public static void main(String args) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); String dateString = "2023/01/01"; try { Date date = dateFormat. parse(dateString); } catch (ParseException pe) { pe. printStackTrace; } } } In this example, the input string "2023/01/01" is attempted to be parsed to a date in the "yyyy-MM-dd" format. Since the string does not match the expected format, a ParseException is thrown: java. text. ParseException: Unparseable date: "2023/01/01" at... --- ### Query Smarter, Not Harder - Published: 2023-10-17 - Modified: 2023-10-17 - URL: https://rollbar.com/blog/query-smarter-not-harder/ - Categories: product Meet Rollbar’s New AI Assistant for RQL We're excited to share an update to our Analyze package—introducing the RQL AI Assistant, a natural language AI assistant to help you write your RQL queries. If you've ever been frustrated by the complexity of Rollbar Query Language (RQL) or the time it takes to get your data, this feature is the solution you've been waiting for. We understand working with the RQL has been a steep learning curve for many. That's why we took your feedback seriously and developed a feature that allows you to use natural language for your queries. Imagine getting the needed data by simply typing your question as if asking another engineer. No more wrestling with complex syntax or table schemas; just type and go. The natural language interface allows query input in plain English, eliminating the intimidating barrier of learning a new query language. Our AI Assistant offers real-time intelligent query and table schema suggestions, making query construction seamless and straightforward. Once you double-check, you can submit and see your results. No more looking through documentation or being frustrated with understanding the query structure. We hope this increases your workflow and speeds up fetching the data you need. Efficiency is at the forefront of this new feature, as it helps you focus on what truly matters—analyzing data to make informed decisions to resolve your errors faster. This is an experimental feature, so we will limit the queries to 50 a month for the account. But we are... --- ### How to Fix java.io.IOException > The IOException happens while performing read, write or search operations in files or directories. Handle it using try-catch or by using the throws clause. - Published: 2023-10-16 - Modified: 2023-10-16 - URL: https://rollbar.com/blog/how-to-fix-java-ioexception/ - Categories: Code Tutorials, Java - Tags: java The java. io. IOException is a checked exception in Java that indicates a problem while performing Input/Output (I/O) operations. This usually happens when a failure occurs while performing read, write or search operations in files or directories. Since IOException is a checked exception, it must be explicitly handled in methods that can throw this exception - either by using a try-catch block or by throwing it using the throws clause. What Causes IOException A java. io. IOException occurs when an input or output operation fails or gets interrupted. This can happen for various reasons such as: File not found Permission issues Unexpected disruptions during file handling IOException Example Here's an example of a IOException thrown when trying to read from a file that does not exist: import java. io. BufferedReader; import java. io. FileReader; import java. io. IOException; public class IOExceptionExample { public static void main(String args) { String filePath = "file. txt"; try { BufferedReader reader = new BufferedReader(new FileReader(filePath)); String line; while ((line = reader. readLine) ! = null) { System. out. println(line); } reader. close; } catch (IOException e) { System. err. println("An IOException occurred: " + e. getMessage); e. printStackTrace; } } } In the above example, a file named "file. txt" is attempted to be read. Since this file does not exist, running the above code throws an IOException. The code catches the exception and prints an error message along with the stack trace: An IOException occurred: file. txt (No such file or directory) java.... --- ### Introducing Item Snooze > We are introducing a new Snooze option for items. When Snoozing an item, the user will define how long an item will stop sending notifications for - once that time period expires then the item will return to normal and begin sending notifications again. - Published: 2023-10-12 - Modified: 2023-10-12 - URL: https://rollbar.com/blog/item-snooze/ - Categories: product Introducing Item Snooze Introduction We are introducing a new Snooze option for items. When Snoozing an item, the user will define how long an item will stop sending notifications for - once that time period expires then the item will return to normal and begin sending notifications again. Currently, setting an Item to have a status of Muted prevents notifications from being sent until somebody changes the status back to Active. The new Snooze option will perform a similar function, but there will be an end date defined after which notifications will be sent again for an item, and the status of the item will not change. When Snoozed, all occurrences will still be processed and will count towards your occurrence budget, only notifications will be stopped. Why are we making this change? We are introducing the new Snooze option as a response to feedback users are not using Mute status due to concerns about the danger a muted item could still be an active issue, generating a lot of occurrences, but no notifications would be received. This could mean that users are not aware of the existence or scale of an issue in their system, as well as inadvertently using up the account’s occurrence allowance. Adding an end date will help mitigate this risk while allowing users to stop notifications being sent while a known issue is being investigated. Rollout process The Snooze option will be made available on the item list and item detail screens for paid tiers... --- ### How to Detect Memory Leaks in Java: Causes, Types, & Tools > If memory leaks are not handled, your application can eventually run out of memory and terminate. Learn what causes memory leaks in Java and how to handle it. - Published: 2021-04-01 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/how-to-detect-memory-leaks-in-java-causes-types-tools/ - Categories: Code Tutorials, Java - Tags: java A memory leak is a situation where unused objects occupy unnecessary space in memory. Unused objects are typically removed by the Java Garbage Collector (GC) but in cases where objects are still being referenced, they are not eligible to be removed. As a result, these unused objects are unnecessarily maintained in memory. Memory leaks block access to resources and cause an application to consume more memory over time, leading to degrading system performance. If memory leaks are not handled, an application can eventually run out of memory and terminate with an 'OutOfMemoryError', which is irrecoverable. What Causes Memory Leaks in Java In general, a Java memory leak happens when an application unintentionally (due to logical errors in code) holds on to object references that are no longer required. These unintentional object references prevent the built-in Java garbage collection mechanism from freeing up the memory consumed by these objects. Common causes for these memory leaks are: Excessive session objects Insertion without deletion into Collection objects Unbounded caches Excessive operating system page swapping Un-invoked listener methods Poorly written custom data structures Types of Memory Leaks in Java Memory leaks can be of various types, depending on how they happen. The most common types are detailed below: 1. Through static Fields Excessive usage of static fields can potentially lead to a memory leak. In Java, static fields usually remain in memory as long as the application is running. Here’s an example: public class StaticFieldsMemoryLeakExample { private static List integers = new ArrayList; public... --- ### How to Debug Java Code Faster with Eclipse > Modern IDEs like Eclipse provide debugging tools that make it easier for developers to walk through their code interactively. Learn all the best practices here. - Published: 2021-03-26 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/how-to-debug-java-code-faster-with-eclipse/ - Categories: Code Tutorials, Java - Tags: java Java Debugging with Eclipse Debugging is the process of identifying and fixing any issues in the source code of a program. Modern IDEs like Eclipse provide debugging tools that make it easier for developers to walk through their code interactively and inspect it to spot and resolve any issues. Debugging support in Eclipse Eclipse allows running an application in Debug mode which helps with stepping through each line of code in a program. Eclipse also provides a Debug Perspective which is a set of views grouped together that help inspect code and make the debugging process very effective. Let’s walk through the steps of debugging a Java application with Eclipse using a simple program, as shown below: public class EclipseDebuggingExample { public int add(int a, int b) { int result = a + b; return result; } public static void main(String args) { EclipseDebuggingExample ede = new EclipseDebuggingExample; int a = 3; int b = 7; int result = ede. add(a, b); System. out. printf("%d + %d = %d", a, b, result); } } Two simple methods mainandaddare defined in the above code example. The main method calls the add method to add two integers a and b and return their sum. The steps for debugging this program are shown below: Step One: Set Breakpoints A breakpoint is a point in code where the program execution pauses during debugging. This allows the programmer to inspect code and the flow of execution at the defined breakpoint. To define a breakpoint, either... --- ### Announcing the Rollbar Terraform Provider For Managing Rollbar Automatically - Published: 2021-03-23 - Modified: 2021-09-08 - URL: https://rollbar.com/blog/announcing-the-rollbar-terraform-provider-for-managing-rollbar-automatically/ - Categories: product - Tags: integrations It can be really exciting when your development team is growing fast! But then you soon realize that managing all the developer tools to constantly create new projects or add users is becoming a full-time job. Well, not anymore. At least, not for Rollbar. We’re releasing our HashiCorp Terraform Verified Provider for Rollbar today, built in partnership with HashiCorp. Organizations can now provision and manage Rollbar accounts automatically through Terraform, the world’s most widely used multi-cloud provisioning product. We know that managing tools can become harder as teams scale. This shouldn’t get in the way of discovering and resolving errors in real-time across applications to ensure the desired customer experience. Our partnership with HashiCorp allows teams to solve this by utilizing infrastructure-as-code to manage Rollbar for the first time ever. Teams can easily automate several account management processes while saving time and preventing manual errors. This offers an easier way to manage your Rollbar account instead of relying on the UI or the API directly. “With the new HashiCorp Terraform Verified Provider for Rollbar, our joint customers can manage their Rollbar projects, tokens, users, and teams with ease. ” said Asvin Ramesh, Director, Technology Alliances, HashiCorp “ We are pleased to have Rollbar as a technology partner and look forward to our future collaboration”. What can you do with it? Manage projects and users with ease Terraform can control resources such as projects, teams, and users in your Rollbar account. You can use declarative config files to - Create, read,... --- ### Infographic: The State of Software Code - Published: 2021-03-16 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/infographic-the-state-of-software-code/ - Categories: topics - Tags: error-monitoring We surveyed nearly 1,000 developers across the U. S. to uncover key development trends and insights. Today’s businesses are software businesses. If there was any positive in 2020, it’s the power software has to allow us to continue in some “normal” sense. Learn how this survey uncovers how too many companies and their development teams still have a major blind spot when it comes to errors in their code. Take a look at our recent infographics for the highlights of the state of software code today. --- ### Announcing The 2021 State of Software Code Report - Published: 2021-02-17 - Modified: 2023-06-20 - URL: https://rollbar.com/blog/announcing-the-2021-state-of-software-code-report/ - Categories: topics - Tags: error-monitoring When Cory Virok and I started Rollbar in 2012, we knew something was lacking in how software was being built. Developers continue to get better everyday at building applications — the widespread adoption of microservices architectures and open source are evidence of this. But, we realized something was still holding us back. And that was how we track and fix bugs. We both personally felt the pain of spending hours, days, or even weeks investigating issues, combing through logs, to not just figure out how to fix a bug, but to figure out what the bug was. We had application performance monitoring (APM) tools but they only told us the health of our system and infrastructure. The rise of observability is helpful to gain that systematic insight as software becomes more complex. But we didn’t need to understand the health of our systems, we needed to know where our code was broken. I knew we weren’t the only developers lacking that insight, and I know that pain is still felt in companies, large and small, today. That’s why I’m excited to share our first “State of Software Code Report” that provides insights into the current state of how developers are building software and dealing with the inevitability of bugs and errors. We surveyed nearly 1,000 developers across the U. S. to find out and uncover key trends and insights, including: Traditional Error Monitoring Falls Short. Nearly every developer surveyed responded that traditional methods fall short. They’re spending too much time... --- ### Spring Boot vs Spring MVC: How do They Compare? - Published: 2021-01-11 - Modified: 2022-06-21 - URL: https://rollbar.com/blog/spring-boot-vs-spring-mvc-how-do-they-compare/ - Categories: topics - Tags: frameworks It’s common to confuse Spring Boot and Spring MVC. They both, after all, include the word “Spring” and are used with the Spring Framework. However, both accomplish different purposes and can be used alongside each other, rather than one being better than the other. We unravel and demystify your frequently asked questions so you can grasp when to use which and reduce the development time of your web application. What Is Spring Boot? Spring Boot is an extension of the Spring framework that allows developers to shorten the process needed to build a web application by using auto-configuration. You can create a standalone application that uses Java and get it up and running without needing to install it onto a separate web server. Use Spring Boot anytime you need a production-ready application quickly. What Is Spring MVC? Spring MVC is a library within the Spring framework that simplifies handling HTTP requests and responses. It’s built on the Servlet API and is an essential component of the Spring Framework. The MVC stands for Model-View-Controller, which is its core function, allowing separation of the business logic, presentation logic, and navigation logic. Use Spring MVC’s ready-made components to build fully functional Java web applications. Difference Between Spring MVC and Spring Boot While Spring MVC is an essential framework that exists within Spring as a whole, Spring Boot is an optional module that is used to streamline the development process, which can include integrating Spring MVC during the build process. Without Spring Boot, Spring... --- ### Introducing AI-Assisted Workflows and Automation-Grade Grouping - Published: 2020-11-17 - Modified: 2022-12-07 - URL: https://rollbar.com/blog/introducing-ai-assisted-workflows-and-automation-grade-grouping/ - Categories: product - Tags: continuous-delivery Imagine you’ve been working on a new feature for weeks. Finally—after exhaustive QA and testing, and more late coding sessions than you care to count—you release with a feeling of both accomplishment and relief. Only to be woken up at 3am that something’s wrong. Or worse, you get flooded with customer complaints that it’s not working properly. Well, it’s probably a scenario you don’t need to imagine. Every developer has a version of this story to tell. But, it doesn’t have to be this way. At Rollbar, we help developers focus on continuously improving their code. Instead of just fixing it. That’s why we’re excited to announce our newest features that let developers do just that: AI-Assisted Workflows and Automation-Grade Grouping. Rollbar’s AI-Assisted Workflows are automated workflows made for development teams who want to get ahead of errors before they impact users. Automation-Grade Grouping, our next generation grouping engine, provides the foundation for these AI-Assisted Workflows. Powered by machine learning, it automatically groups similar errors together to give developers trustworthy alerts, while eliminating noise and missed alarms. Read on to learn more about how these new features help developers proactively discover, predict, and remediate errors faster at all stages from dev to staging to release. The Benefits of AI-Assisted Workflows Companies, and their development teams, invest significant time and resources in QA, testing, and the tools to support those efforts to find and fix errors. Because they know uncaught bugs can negatively impact user experience and, ultimately, revenue. But investing... --- ### Meet Continuous Code Improvement - Published: 2020-11-17 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/meet-continuous-code-improvement/ - Categories: company - Tags: company growth If your experience as a developer is anything like mine, the best moments are those known as the "flow state. ” When distractions drift into the background and all your energy is going in the creative direction of solving the problem at hand. Your brain is directly connected to your users through your code. Months of progress happens in hours. Unfortunately, those moments are rare. But it’s not emails or Slack messages that are the biggest distractions. The biggest headache is when things should work but don't. We spend too much time and effort banging our heads against the wall just trying to keep things from breaking. It’s not sustainable. Especially in 2020, when every business is now a software business. I believe that “flow state” is achievable. The entire Rollbar team and I are inspired by the challenge to make it a reality for every developer, every day. But we need to move the focus from fixing to building. And, after 8 years with more than 5,000 businesses relying on Rollbar to build software quickly and painlessly, I’m excited to share our vision for the future. Today, we’re announcing the next evolution of Rollbar as The Continuous Code Improvement Platform. In support of this evolution, we’re introducing a new brand identity—including a new logo—and we’re releasing unique features to enable a new way to code. We call them AI-Assisted Workflows and Automation-Grade Grouping. Now, it’s possible to deal with errors proactively, instead of being reactive. Introducing Continuous Code Improvement... --- ### Rollbar SDKs and the new Apple-Silicon Mac Platform - Published: 2020-11-11 - Modified: 2023-01-19 - URL: https://rollbar.com/blog/rollbar-sdks-and-the-new-apple-silicon-mac-platform/ - Categories: product - Tags: SDK Apple just introduced Apple M1, it’s new processor, along with their latest product versions. Back in June, when Apple had first announced the transition to Apple silicon, we applied for their Universal App Quick Start Program and, eventually, received an Apple Developer Transition Kit (DTK) so that we could try out our Rollbar-iOS and Rollbar. NET (via Xamarin) SDKs on the Apple new platform. After setting up a beta version of Big Sur macOS that came preinstalled on the DTK and installing our development tools, we downloaded the latest at the time source code of our Rollbar-iOS SDK v2 codebase and our latest Rollbar. NET SDK codebase. Here is a summary of our findings. Rollbar-iOS SDK v2 (Coming out soon as the Rollbar-Apple SDK) The SDK source code was fully compilable (using the latest available Xcode beta-version) and run-time operational with no issue at all. A payload sent from one of our SDK sample apps compiled and ran on the DTK was successfully transmitted to the Rollbar Project Dashboard and reflected some specifics of its origin: macOS 11. 0. 0 (Big Sur) and device code listed as arm64: Rollbar. NET SDK Since the SDK must be built on a Windows machine (due to the SDK also targeting . NET Framework that is only available on Windows), our test case for this SDK looked like this: After downloading the SDK source code, we opened one of our sample apps in Visual Studio for Mac (that installed on the DTK without a... --- ### 10 Developer Horror Stories To Keep You Up at Night - Published: 2020-10-19 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/10-developer-horror-stories-to-keep-you-up-at-night/ - Categories: topics - Tags: error-handling This is a guest post from our partners at LaunchDarkly. We software engineers like to think ourselves unflappable. Consider that we spend most of our days staring at glowing pages of eldritch horror that no mortal was meant to witness. We whisper and type our otherworldly incantations, all the while feeling the hungry gaze of a lurking cross-site scripting bug, or a shadowy use-after-free, or an accidental summoning of ZALGO. (H̨e̛ ̕c͢om͢es, you know. ) But no. Truthfully, we’re far more fragile than that. Living our lives on a tightrope over an ocean of chaos (or “unspecified behaviour”), we’re only one bad deploy away from a manic screaming fit, followed by a move to the countryside and banishment of any technology invented after 1947. So we consume horror novels by the truckload in an attempt to persuade ourselves that... well, things could be worse, you know? When you see that a senior engineer dresses all in black, listens to Sisters Of Mercy and Dimmu Borgir, and has a line of Melanie Tem novels above the O’Reilly manuals, remember that she uses them to calm down. Because she’s seen things. As, likely, have you. We know every developer has at least one horror story that still haunts them to this day. Likely, they have more than they’d care to remember. For All Hallows’ Eve, we decided to share some of the most dreadful stories we’ve come across over the years. We hope that some will be educational to the innocents in... --- ### Introducing Versions API to Automate Error Response for New Code Versions - Published: 2020-08-05 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/introducing-versions-api-to-automate-error-response-for-new-code-versions/ - Categories: product - Tags: API You know the feeling. You’ve just deployed a new version to production and are monitoring the Rollbar dashboard for any new errors or looking out for any Slack notifications. You’re keeping an eye on the number of new or reactivated errors, their severity level, and triaging to see which errors need to be assigned and to whom. Now what if you could automate these tasks? We’re continuing our focus on automation with the release of our new Versions API! Back in 2018, we released Versions that allowed users to monitor and respond to any new or reactivated errors for every version of code deployed. As continuous delivery and workflow automation becomes more widespread, we want to make sure our users can automate the monitoring and response to errors. Why Use Versions API The difference between retaining and losing customers often comes down to user experience and application quality. With this feature, you can release more frequently or implement continuous delivery while ensuring the best possible end-user experience at all times. In addition, we all know how valuable engineering time can be. And automating error monitoring can help developers focus their energy on just the most important errors or even writing new code. What Can You Do With It While there can be many applications depending on your tech stack and workflows, here’s a quick summary of what you can do with this API: Gain visibility into the affects of new deployed versions on error rates through integrated dashboards. As an... --- ### Introducing our new Java Spring Error Monitoring SDK - Published: 2020-07-20 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/introducing-our-new-java-spring-error-monitoring-sdk/ - Categories: product - Tags: java We’re excited to announce that we’ve strengthened our solution for Java Spring exception handling. Spring developers can now integrate Rollbar into their Java Spring Boot and Spring Web MVC applications even more quickly and easily. With our new SDK, instrumentation and getting real-time actionable error alerts takes just a few minutes. Spring has consistently been one of the most popular Java frameworks and we want to make sure we’re consistently offering the best possible solution for it. Get Real-time Error Alerts with Code Context Nobody likes to find out about errors from end users. For those unfamiliar with Rollbar, you can get real-time notifications of all errors with code context and metadata before your users get impacted. With telemetry, local variables, stack traces, and git blame all available at a click, debugging Spring errors can be a lot faster and easier. Here you can see the exact line of code that caused the error along with the avatar of the last person to edit that line of code - Notable Improvements Any exceptions raised by Spring will be handled automatically by Rollbar. Users don’t need to manually catch and send the exceptions. However, they do have the ability to catch and send custom events to Rollbar for debugging. The new integration automatically includes all the settings required for Spring, minimizing the number of changes and customization required by the users. The default setup already includes helpful components such as request's URL, parameters, etc. that can be powerful when debugging web... --- ### 5 Ways to Improve Your Dev Team Velocity > Velocity, much like the pulse rate of an individual, is a measure of health for your scrum team. Learn how to use velocity to ensure that throughput stays high. - Published: 2020-06-29 - Modified: 2022-06-21 - URL: https://rollbar.com/blog/5-ways-to-improve-your-dev-team-velocity/ - Categories: topics - Tags: business-impact Velocity, much like the pulse rate or oxygen level of an individual, is an important measure of health for your development team. A low velocity score for recent sprints limits your team's options for delivering value. Sustained failure to deliver to stakeholders can erode trust with those stakeholders quickly. But how do you know exactly what your velocity is and how you can improve it? In this article, we'll share some best practices for improving the throughput of your development team and how to use velocity as a measure to ensure that throughput stays high. The practices and ideas in this article come from the research of Dr. Nicole Forsgen and Jez Humble. Their research is shared in the 2018 book Accelerate and represents the distillation of over 23,000 survey responses over four years of annual DevOps surveys. Dr. Forsgren, VP of Research & Strategy at GitHub, has proved in her research that high performing IT organizations use the practices and techniques shared in this article. First, let's look at exactly what we mean when we say velocity. What Is Velocity and Why Does it Matter? What Is Team Velocity? Velocity is a capacity planning tool that was introduced in Agile methodologies like eXtreme Programming (XP) and Scrum. In both those methodologies, work is broken down into user stories, the team estimates how much effort each story will take to get done, and then uses this estimate to commit stories for that development iteration or sprint. Velocity is expressed in... --- ### How a Hackathon Led to 80% Fewer Rollbar Items - Published: 2020-05-26 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/how-a-hackathon-led-to-80-fewer-rollbar-items/ - Categories: company - Tags: customer-stories Earlier this year, we were invited to Thredup’s wonderful office space in Oakland to be one of the presenters at their quarterly Hackathon. Thredup, a fashion retail marketplace with over 35,000 brands, has been one of our key customers since 2013. We soon realized this wasn’t a normal Hackathon. This hackathon was dedicated to instrumentation and monitoring. Instead of asking the teams to work on new features or ideas that can be delivered in two days, they challenged the participants to learn how to monitor their application and the advance use cases for different tools, such as Rollbar, Pagerduty, and Datadog. Getting the Most Value from Rollbar The first day was focused on learning sessions. And the next two days were for instrumenting, triaging, and get more acquainted with the different metrics for the applications. As part of our Customer Success Program, we offer product training sessions for our customers. And our Solutions Engineer, Ivan, led one of their morning learning session as a training session for Rollbar. The goal of the training was to give a broader view of Rollbar making sure that it was useful for a wide spectrum of audience - from anyone who had just started to use Rollbar to those who have been using it for a long time. We touched on a wide array of topics and went over many product features. We talked about reducing noise by actively managing your Rollbar items using our custom grouping features and setting up the workflow that... --- ### Introducing the Rollbar Deploy GitHub Action - Published: 2020-05-15 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/introducing-the-rollbar-deploy-github-action/ - Categories: product - Tags: continuous-deployment We’re excited to announce our support for GitHub Actions with our new Rollbar Deploy GitHub Action. Teams using GitHub Actions for building their CI/CD pipeline can now easily send deploy information to Rollbar and respond to any new errors quickly. See and Respond to New Errors with Every Deploy At Rollbar, we love automation and GitHub Actions is the latest in the long list of CI/CD tools that we integrate with to automatically send deployment information to Rollbar. With this action, you'll be able to - Automatically notify Rollbar of any new deploys from GitHub Actions Easily link deploy information to new versions to gain visibility into the changes being deployed, the person deploying the changes, the environment impacted, and the new errors that are being generated Respond to errors with detailed code context You can click on deployed versions to see any new or reactivated errors for that specific version. With more visibility and confidence on the quality of each deployment, you can release code more frequently and ensure best possible experience for your customers at all times. Setting up Rollbar Deploy GitHub Action The action is available on the GitHub Action marketplace and you can set it up directly with your GitHub repository. From Source Code to Deployments - Get the Most Out of Rollbar for GitHub For the best user experience, we recommend using our GitHub integration for your source code repository. In case you missed it, we also recently launched support for Git blame allowing you... --- ### We Are Rollbar Support - Published: 2020-04-14 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/we-are-rollbar-support/ - Categories: company - Tags: Customer Support Hello, we are Rollbar support! At Rollbar, support has many limbs. We receive all the communication sent to Rollbar via chat or to support@rollbar. com. We then triage that information and take action on it as applicable. Get Solutions to Your Technical Problems We troubleshoot all your technical questions and try to replicate the issues that you encounter. If you are not able to start a new app, we will double check your app configuration for you. If the GitHub link on your stack trace is pointing to a different endpoint than what you would like, we help you figure out how to set the right path. If you don't see the data that you’d like to see in the logs, we check your settings and give you tips on how to get to what you want. If you think that two different errors belong together, we will help you write a custom fingerprinting rule to get there. Learn More About New Features Even after working at Rollbar for over a year, I keep learning new things about our product everyday. Rollbar is always developing new ways to debug, monitor and triage your data, and helping you organize the errors. If you have any questions about any product features, such as: What can these features do for you? What’s the best way to set them up or use them? Are they available on the plan that you currently have? Support will walk you through and get you where you want... --- ### Apache Kafka Example: How Rollbar Removed Technical Debt - Part 2 - Published: 2020-04-07 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/apache-kafka-example-how-rollbar-removed-technical-debt-part-2/ - Categories: topics - Tags: kafka In the first part of our series of blog posts on how we remove technical debt using Apache Kafka at Rollbar, we covered some important topics such as: Sizing the Kafka cluster Measuring your expected throughput to size the topics correctly Write and configure the Kafka producer so it gives the latency and throughput desired In the second part of the series, we’ll give an overview of how our Kafka consumer works, how we monitor it, and which deployment and release process we followed so we could replace an old system without any downtime. Kafka Consumer Most of our backend projects are coded in Python so we wrote a process using Python 3. 8 that would consume messages from a Kafka topic and write them to the database in batches. We decided to use the Confluent Kafka client since it has better performance and uses librdkafka. We decided to write a CLI that allows us to run it like this: $ . /bin/ingestion --kafka-brokers kafka:9092 --kafka-topics stream. raw_items. raw --kafka-group ingestion_raw_item --db-host db --db-user $DBUSER --db-password $DBPASSWORD --db-name mox_raw --consumer-timeout 0. 15 We basically set up the Kafka consumer configuration along the database configuration. An important setting that affects the user experience is consumer-timeout, which represents the maximum time the consumer will block consuming and/or waiting for new messages. This value affects the delay seen by the user, having different delays for the first and last message of the batch. A small timeout period will provide lower latencies while will... --- ### Rollbar Goes Remote - Recruiting From Home - Published: 2020-03-23 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/rollbar-goes-remote-recruiting-from-home/ - Categories: company - Tags: remote-work In the face of the coronavirus outbreak and sudden shift to working from home, Rollbar moved our entire recruiting process to function in a remote capacity in two days. Here's how we did it. Starting Point: Assessing Current Tools and Processes We prioritize in-person meetings for our final interview stage when possible, so most of our processes in place were set up for face to face meetings. For a fully remote panel, with a candidate, interviewers, and recruiting team all in different locations, we were concerned about glitches and confusion. Our strategy focused on anticipating the needs of both parties and be proactive in our communication so that both parties felt prepared for the interview. Here are some of the main gaps we found in our process when moving to fully remote panels: Candidate instructions and process: did not address unique situations for virtual interviews i. e. what to do when glitches occur, how to ask for breaks, how we use Zoom for panel interviews Team member panel instructions and process: did not address unique situations for virtual interviews i. e. ensuring panel knows the full lineup on the day of, how to handle a smooth virtual handoff, how to communicate with the team Tools and technology: no virtual whiteboard for coding interview Filling the Gaps In addressing these issues, our overarching goal was to ensure a continued positive experience and ensure that the panels were as effective as they would otherwise be as face to face meetings for both... --- ### Apache Kafka Example: How Rollbar Removed Technical Debt - Part 1 - Published: 2020-03-10 - Modified: 2025-02-19 - URL: https://rollbar.com/blog/apache-kafka-example-how-rollbar-removed-technical-debt-part-1/ - Categories: topics - Tags: behind-the-scenes In this two-part series of blog posts, we’ll explain how Kafka has helped us in removing parts of our architecture that we consider to be “legacy”. During the development of a project sometimes we need to take decisions on our architecture or software design that may not be the best decisions from a pure and perfectionist technical perspective. However, the compromise between the business needs and the engineering solution might push you to adopt a particular solution. That’s how companies create technical debt, that at some stage is considered legacy software or legacy design. Eventually, a company can decide to address that technical debt and invest resources in removing it. At Rollbar we are using Kafka to improve our service that ingests data in our databases. How does the current ingestion service work? The first stage of our events processing pipeline, and the ingestion service, is our API. These are few of the main responsibilities of the API: Validates the schema of the payload Identifies the project for the received access token Checks that the access token passes the rate limiting configuration Serialize the occurrence payload before it can be written to database You can see that storing the occurrences in database is not API’s responsibility. Instead, our API writes the received payloads to disk using a Node library we wrote a while ago, batchelor. This library allow us to stream the received payloads into a file that rotates after a defined period of time or maximum file size. We... --- ### Announcing our new $11M Series B funding - Published: 2020-03-04 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/announcing-our-new-11m-series-b-funding/ - Categories: company - Tags: funding Nearly eight years ago, Cory and I started on a journey to help developers build software quickly and painlessly. As software developers ourselves, we had felt the pains of being afraid to ship and spending late nights tracking down bugs. In 2013, we launched Rollbar so that developers could build software faster, shipping often without fear. Lots of people talk about continuous delivery, and nearly all of them focus on automating releases. This is important, but it’s only half of the problem: after you release your code, when it breaks, you need to respond. Companies need automated response. That means being able to see, understand, and resolve problems in real-time. This sounds great, and it turns out it actually works! Companies who adopt Rollbar, on average, triple their release velocity every year. Rollbar provides an automated error response platform centered around our proprietary, customizable grouping engine. It gives developers 100% visibility on errors across the software development lifecycle with all the context they need to fix errors in minutes and deploy more often. 100,000+ developers, 4,500+ customers, 40+ employees, and three offices across three countries later, we’re very proud of where we’ve come. But in many ways, we’re just getting started. Today, I’m excited to announce that we’ve closed a Series B financing of $11M led by Runa Capital with participation from Long Light Capital and Blossom Street Ventures, along with existing investors Cota Capital, Bain Capital, and Patagonia Capital. We’re also excited to welcome Dmitry Galperin from Runa Capital... --- ### Introducing Notifications API to Automate Notification Settings Across Projects - Published: 2020-02-21 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/introducing-notifications-api-to-automate-notification-settings-across-projects/ - Categories: product - Tags: Slack At Rollbar we love workflow automation. With our new Notifications API, you can automate setting up of custom notification rules for all your Rollbar projects. As more of our customers switch to microservices, we wanted to build a programmatic way to set up these rules for multiple projects or services in just a few seconds, without having to go to the UI. With this API, you’ll be able to - Set-up multiple Rollbar projects with the notification settings you want in a few minutes Get notified about new errors occurring in your production environment through Slack or PagerDuty Instantly see new errors happening in your environments right in your Slack channels In this article we will go through automating the Slack and PagerDuty integration setup and defining some custom rules for notifications. Prerequisites for Slack notifications First, make sure you have a Slack channel ready for the notifications. You can either integrate with an already existing channel or create a new one. Let’s assume you create a Slack channel called #alerts. Second, you need to obtain a write access token for your Rollbar project from the project general settings: Rollbar dashboard → Settings → Project Access Tokens. Third, obtain your Service Account ID. You can find it here in your Rollbar's user settings page for Slack: Rollbar dashboard → Click your username in the top right corner → Account Settings → Connected Account → Slack → look for Notifications API section at the bottom. Configuring Slack notifications Now it’s time... --- ### Introducing Git Blame Support for GitHub Integration - Published: 2020-02-12 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/introducing-git-blame-support-for-github-integration/ - Categories: product - Tags: debug At Rollbar, we care about reducing the time it takes developers to find and fix errors. This is why we’re making our integration with GitHub even stronger to provide more context around errors and reduce the mean time it takes to resolve them MTTR. Last year, we launched Code Context to show additional lines of code within each frame of the stack trace, reducing the back and forth between GitHub and Rollbar. Now, we’re excited to support git blame to help you identify the last person to write or edit the line of code that caused the error, directly within the Rollbar UI. Get More Context to Debug Faster Let’s say a new error pops up in Rollbar that you would like to investigate. As you click on the Traceback in the Item details page, you can see the exact line of the code that caused the error in each frame of the stack trace directly within the Rollbar UI. Now, you may want to get more context on who should be assigned to the error or why some changes to the code were made. You don’t have to go to GitHub anymore to get this information. You can directly see the GitHub User Avatar of the last person to edit the offending line of code in Rollbar. If you hover over the Avatar, you can directly visit the pull request and the commit for that code. No more switching back and forth between Rollbar and GitHub! In a nutshell,... --- ### Best Practices for Moving from a Monolith to Microservices - Published: 2020-02-10 - Modified: 2022-06-21 - URL: https://rollbar.com/blog/best-practices-for-moving-from-a-monolith-to-microservices/ - Categories: topics - Tags: business-impact In the first post of this series, we looked at the state of your organization, how to tell if Microservices are right for you, and wrapped up with a few challenges this architecture brings to the table.   In this article, we will look at organizational changes that will help you adopt a Microservice architecture. Additionally, we will touch on topics like how to bring change to your organization, how to embrace the primacy effect, and why you should embrace cross-functional teams. We'll also discuss several ways to change how you develop applications in a Microservice architecture. These items include topics like streamlining your build - optimizing how you build your Monolith, detangling your dependencies - setting up your Monolith for Microservices and optimizing your local development environment. Organizational Changes Here are best practices to prepare your organization to transition from a Monolithic codebase to a Microservices architecture. Establish Goals You should establish clear, measurable goals for your first projects. Everyone involved in the process, from the executive team down through the cross-functional team, should understand and agree on the initial goals. Since this will be a completely new and unfamiliar process, failure should be treated as a learning experience rather than punishable. Use these inaugural teams to flesh out your automation, streamline your development process, and experiment with different ways to build Microservices. Consider how people in your organization will be affected by the primacy effect, which is a cognitive bias that results in recalling what you first encounter... --- ### Transforming Engineering at Rollbar - Published: 2019-12-18 - Modified: 2023-06-26 - URL: https://rollbar.com/blog/transforming-engineering-at-rollbar/ - Categories: company - Tags: behind-the-scenes It's been a busy year at Rollbar! While many of the new features we built got all the needed attention (press, blog posts, conferences), the underlying work to transform and modernize our platform might have been less visible. With this blog post I'd like to share with you all the exciting initiatives we launched in this past year and recognize all the deserved credit for all the engineers that worked restlessly to get us where we proudly are today. In order to really understand the amplitude of the transformation and the reasons behind it, it's important you realize why and where all of this started. A year ago our Engineering team was less than half the size, our User Experience was struggling to keep pace with modern design and, at the same time, our business was growing double digits in constant and continuous expansion. The number one priority that every customer would have underlined was availability! The more Rollbar was getting adopted from teams focusing on deeply integrating it in their CD/CI pipelines thorough APIs and WebHooks, the more our ability of processing errors in real time was a dealbreaker for our customers. It was clear that to be able to match the forecasted demand, some parts of our architecture needed to change. At the same time it become evident that to win in the Error Monitoring space, we needed to be absolutely best in class in avoiding "noise" across our platform. We needed a way to maintain our leadership... --- ### How to Catch (and Fix) JavaScript TypeErrors - Published: 2019-12-18 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/how-to-catch-and-fix-javascript-typeerrors/ - Categories: Code Tutorials, JavaScript - Tags: debug It's Friday afternoon and you decide to check on your web logs one last time before you go out for the weekend. Since you've deployed recently, you want to make sure everything is going smoothly. You open your tool and suddenly you find your screen flooded with TypeErrors. Does this sound familiar? JavaScript TypeError is one of the most common browser errors because it wraps a number of different situations, each of which needs to be handled separately. What often makes fixing these problems difficult is the wide range of exception messages coming from different browser types, versions and languages. Looking at a list of TypeErrors in your logs makes it difficult to decide if it is one problem materializing in different forms or different issues altogether. When are TypeErrors thrown? According to the TypeError docs it's thrown “when an operation could not be performed, typically (but not exclusively) when a value is not of the expected type”. This can easily happen during a code refractor, when you reworked a function but didn't consider it being used in another part of your app that is now breaking. The most common cases of TypeError There are a number of different cases but we've found that the vast majority of errors can be categorized into one of the following. Case 1: Unable to get property of undefined or null reference This means that the object you are calling is null or you haven't defined it. Depending on the browser where the error... --- ### Error Handling with Angular 8 - Tips and Best Practices - Published: 2019-12-16 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/error-handling-with-angular-8-tips-and-best-practices/ - Categories: Code Tutorials, JavaScript - Tags: angular Handling errors properly is essential in building a robust application in Angular. Error handlers provide an opportunity to present friendly information to the user and collect important data for development. In today's age of advanced front-end websites, it's more important than ever to have an effective client-side solution for error handling. An application that does not handle errors gracefully leaves its users confused and frustrated when the app suddenly breaks without explanation. Handling these errors correctly across an application greatly improves user experience. Collected data from the error handling can inform the development team about important issues that slipped past testing. This is why monitoring tools like Rollbar are so important. In this article, we will compare several solutions for error handling in Angular apps. First, we will describe the traditional approaches using ErrorHandler and HttpClient. Then, we will show you a better solution using HttpInterceptor. We'll also show you how to use this interceptor to monitor and track errors centrally in Rollbar. The Shortcomings of console. log Beginners in JavaScript programming often start out using the console log because that is the default output in most development environments. Once you deploy your application to a production environment, you no longer have access to the console log. That's because the code is now running on the client browser. Unless you record the errors that clients experience in a centralized location, you won't have any visibility into them. In order to understand the user experience and how errors can affect it,... --- ### Introducing the New Rollbar UX - Published: 2019-12-15 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/introducing-the-new-rollbar-ux/ - Categories: product - Tags: error-monitoring Migrating to microservices is hard enough. Monitoring errors and debugging shouldn’t be. When we first built Rollbar, microservice architectures and continuous delivery practices weren't as common as they are today. Over time, we saw how our customers were setting up different projects for each code repository. As a complex distributed architecture becomes the norm, we want to make sure our core user experience reflects this new normal. Today, we’re introducing the new Rollbar user experience. We hope you like it as much as we have enjoyed building it for you! Here’s a quick look at what you can do with the new UX. Monitor all microservices with one tool in one view With the new Rollbar user experience, we’re adopting powerful and consistent multi-project views across the entire user workflow. Get intelligent, real-time alerts on errors across microservices in a single view using our new multi-project filter. Whether you’re looking at the main dashboard, the Items view, or Versions, you’ll only see what you care about. Debug faster with a consistent workspace and powerful filters Users now have their own personal workspace with powerful filters for projects, environments, and frameworks that persist across all views. Finding new errors is faster and easier with improved Timeframe and ‘New or Reactivated’ filters. Using our Versions feature, track every deployed code version across all of your microservices in a single view. Quickly identify new and reactivated issues, and triage items easily with information on who deployed each code version. Get insights on data... --- ### Monolith to Microservices: Is Your Organization Ready? - Published: 2019-12-15 - Modified: 2022-06-21 - URL: https://rollbar.com/blog/monolith-to-microservices-is-your-organization-ready/ - Categories: topics - Tags: business-impact Transitioning from a Monolith to a Microservices architecture can take years to complete. The internet is full of stories of companies famously making this transformation. But how do you know if it’s right for your organization? Is your organization ready? In this article, we will look at five questions you can ask to see if you’ll benefit from a Microservices architecture. We’ll also discuss five challenges you will face during this transformation. In part II of this series, we’ll look at strategies for moving from a Monolith to Microservices. There will be one prevailing theme during this process: change. Can your executive team stay focused on a long-term, company-wide transformation long enough to see it through completion? Like any large project, it can take years to complete this transformation, can your organization continue to allocate resources to this project while managing other company initiatives? Have you successfully implemented other large-scale changes? If so, your transformation will likely be a success. Determining your organization's readiness is an essential part of mapping out your implementation plan. Benefits of a Microservices Architecture You shouldn't adopt a microservice architecture simply because it's trending, but because your organization needs the specific benefits this type of architecture provides. Is your company ready for these benefits? Team autonomy - Microservices are loosely-coupled independently deployable services. They are resilient to failure and are elastic. Does your organization have experience with independent teams? Deploying a Monolith is usually a coordinated effort across teams and departments. Autonomous teams are the... --- ### Announcing the First Error Monitoring Solution for Salesforce Apex - Published: 2019-11-12 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/announcing-the-first-error-monitoring-solution-for-salesforce-apex/ - Categories: product - Tags: SDK We're very exited to bring all the error monitoring and debugging capabilities of Rollbar to Salesforce Apex applications. According to Salesforce, millions of developers and thousands of independent software vendors develop customized applications using Apex to extend the fuctionality of Salesforce. A few months ago, when some of our customers reached out and asked us for an error monitoring solution for their Salesforce Apex developers, our engineering team jumped on the task. The result - you can now monitor multiple organizations, apps, and users in real-time with one tool in one view. No more digging through emails or the developer console to find unhandled exceptions. Get real-time error notifications with stack traces For those unfamiliar with Rollbar, here’s a quick look at some of the key features - Rollbar tracks all Apex errors instantly as they occur and notifies you via your preferred channel (slack, email, and more). You can view all Unhandled Apex Exceptions in all your Salesforce apps in one consolidated view on the Items page With advanced filters such as multi-project selector, timeframe, error severity, you can monitor all applications, organizations, and users with one tool in one place We group similar errors using Rollbar's fingerprinting technology to reduce noise and all errors include detailed data to help you assess impact and assign priority. You can assign owners and create issues in your preferred issue-tracking tool directly from Rollbar You can see detailed metadata such as the stack trace, organization data, custom data with occurrences, request parameters,... --- ### Turbocharge QA with Pre-Production Monitoring - Published: 2019-11-05 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/turbocharge-qa-with-pre-production-monitoring/ - Categories: topics - Tags: debug Traditionally, Quality Assurance (QA) has been a very manual process. Our QA teams do an amazing job running through test plans, finding critical bugs, and logging reports. But it can be a lot of work to run through the tests again and again, dig into the errors to provide the contextual information developers need to fix bugs quickly, and prepare the reports your developers need to find and fix errors in the codebase. Sometimes, even with all this support from the QA team, development teams may have to spend considerable time trying to reproduce errors and locating the relevant source code. And in this era of "doing more with less," not all dev teams are lucky enough to have dedicated QA support, so triaging bug reports is one more thing developers are responsible for. With Rollbar's advanced reporting, reliability engineers can create reports to track performance and assess the effectiveness of staging and other pre-production phases. Test failures can also be associated with their original exceptions, providing software developers with rich context information. The bottom line is that QA without Rollbar can be hard. With a little help from Rollbar, it's easier, faster, and provides more complete data for crushing bugs. We'll explain how in the rest of this article. Demonstrating QA Error Monitoring with Rollbar Let’s say you’re a developer working for a company that creates line-of-business applications. As part of the development lifecycle, your colleague Kendall from QA routinely sends you reports containing bugs you must understand, reproduce,... --- ### Rollbar CTO, Cory Virok, Shares His Expertise on Creating an Enterprise Solution for Today’s Modern Software Company - Published: 2019-10-24 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/rollbar-cto-cory-virok-shares-his-expertise-on-creating-an-enterprise-solution-for-todays-modern-software-company/ - Categories: topics - Tags: business-impact We sat down with Rollbar CTO, Cory Virok, for a Q&A on how his leadership role and industry expertise helped create an enterprise solution for today’s modern software company. How does your technical expertise and leadership as a CTO play into how Rollbar focuses on the enterprise? Before Rollbar, I was building high-throughput, network security systems for the government. After moving to SF, I worked at VMWare, followed by a social gaming company where I was scaling a product, infrastructure, and team for a massively popular set of Facebook games. Being a deeply technical CTO has been incredibly important for me to be able to provide our enterprise customers with solutions that their development teams use every day to ship better software, faster. Whether it's support, or the initial diligence on our product, or customer success, Rollbar's enterprise customers have a very high level of expectation from our team and service. As our CTO, I am proud of our ability to exceed these expectations and provide a level of stability and performance that our most demanding customers have come to expect. How has your technical and learned business experience helped you to build an enterprise startup and run a “modern” software company? From my experience, enterprise customers tend to all have customizations that they require, making it very easy to "go wide" and build all of the requested integrations. That's a fine approach. Just be sure to structure your team, architecture, and processes around that principle. It's very easy to... --- ### Announcing Crash Monitoring for macOS with Rollbar - Published: 2019-08-29 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/announcing-crash-monitoring-for-macos-with-rollbar/ - Categories: product - Tags: macOS What’s better than an SDK that supports iOS? One that also supports macOS! With the latest version of rollbar-ios (v1. 8. 1), Rollbar now supports crash monitoring for macOS. You can use Rollbar to monitor, triage, and debug crashes and errors on both iOS and macOS. What else, you ask? We’re excited about some significant improvements for both iOS and macOS. Read on for the details. Real-time crash monitoring & debugging for macOS All the Rollbar features previously available for iOS only are now available for both Apple platforms, iOS and macOS. You’ll get notified in real-time of any exception or an application crash (on the subsequent application restart). We’ll also group similar crashes using our fingerprinting technology so you won’t have to deal with noise and can focus on the most important issues. Additionally, Rollbar gives you all the data you’ll need to debug within minutes. This includes the available error and crash details, stack traces, any useful telemetry metadata, affected users, relevant app versions, and details about runtime environments (OS version, SDK version, device details, etc. ). You can also clearly see the device OS (iOS or macOS) of a payload on the Items view in the Rollbar dashboard. Rollbar CocoaPod now supports both iOS and macOS as a single universal pod targeting both platforms as well. But wait, there’s more! We’ve made the rollbar-ios SDK easier to integrate into your app (iOS or macOS based). You can include it: Via CocoaPods - see examples for iOS app... --- ### Introduction to Error Handling in Angular 7 Using Rollbar - Published: 2019-08-15 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/introduction-to-error-handling-in-angular-7-using-rollbar/ - Categories: Code Tutorials, JavaScript - Tags: angular In this tutorial, you will be introduced to errors tracking in Angular 7 using the errorHandler class and Rollbar. This is the last part of the Angular 7 error handling series, you can refer to the first part here, and the second part here. In this series, you have been introduced earlier to handling client side errors and then HTTP errors gracefully in Angular 7 with tools like errorHandlers, Interceptors and even RxJS operators. In this post you will be shown how to track these errors in a remote tracking environment. For full tutorial, visit https://pusher. com/tutorials/error-handling-angular-part-4 --- ### New Integration - Create Microsoft Azure DevOps Work Items directly from Rollbar - Published: 2019-08-07 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/new-integration-create-microsoft-azure-devops-work-items-directly-from-rollbar/ - Categories: product - Tags: integrations Does your team use Azure DevOps for tracking work? You’re going to love our latest integration if that’s the case. You can now create and resolve Work Items in Azure DevOps directly from Rollbar, making error monitoring and debugging even faster. This is the latest addition to our toolkit for the Microsoft ecosystem (read about our Azure Active Directory integration). It reinforces our mission to help software developers build software quickly and painlessly. It also saves valuable time so that developers can stay in flow. With this integration, you can: Create an Azure DevOps Work Item directly from Rollbar, either directly or based on the ruleset (details below) View the stack trace in the Azure DevOps Work Item Auto-create tags and area paths, and view the Item in Rollbar with a single click Change the Work Item state automatically based on changes in Rollbar Resolve Azure DevOps Work Item automatically once resolved in Rollbar Rules for automatic Item related actions: You can create rules for specific actions to be triggered automatically. These include creating, resolving, or changing the state of a Work Item. An example can be setting up a rule that automatically creates a new Work Item when an error occurs for a specified number of times. You can also create a Work Item directly from the Rollbar item by clicking on ‘Create Azure DevOps Work Item’ if that works better for your workflow. Azure DevOps Work Item from a Rollbar Item: You can view key details of a... --- ### Exception Monitoring Across Environments - Published: 2019-07-31 - Modified: 2025-02-19 - URL: https://rollbar.com/blog/exception-monitoring-across-environments/ - Categories: topics - Tags: error-monitoring Tools like Rollbar have changed the way development teams are recording and managing their exceptions. What used to be a very personal developer-by-developer activity can now be a team-wide tool for greater transparency, and increased application quality. But many still treat exception monitoring as a developer activity, and they are not leveraging its benefits across all environments, from development to stage and integration, to systems testing and production. Let's review why exception monitoring in all environments is so beneficial, and some best practices for setting it up. By standardizing with Rollbar for exception monitoring across environments and clients, you have better visibility and better input into the application and development processes, and it’s a good way to ensure quality prior to delivering releases to customers. But even after release, the tool has been extremely useful for: 1. Support of CD and canary releases: More and more we are asked to consider using continuous delivery (CD) and canary release processes. While in many cases it is not possible or a good fit, when we do get an opportunity to implement CD, exception monitoring is the only way to support it, because code goes from developer to source repo and directly to prod as long as the basic tests show up green. We know very little about the code, and do not have the eyeballs on exceptions that we normally would. This way, an exception in prod is just one more trigger to let us know that a release should be rolled... --- ### Upload Source Maps to Rollbar - Published: 2019-07-22 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/upload-source-maps-to-rollbar/ - Categories: Code Tutorials, JavaScript - Tags: source-maps From https://michalzalecki. com/upload-source-maps-to-rollbar/ Upload source maps to Rollbar In production, the most important advantage of using a build tool like webpack is a smaller size and thus improved overall application performance. Although beneficial for our users, the bundled and minified code is harder to debug for developers as the code they have written doesn't map 1:1 to error stack traces. Multiple tools for minifying, bundling and transpiring JavaScript modules can generate source maps along with the resulting code. Source maps allow developer tools (Chrome DevTools, test runners, error reporting software) to find a reverse mapping from the optimized code back to the source code. Rollbar (and often other error tracking software) supports source maps to display error stack traces that point to the erroneous lines in the source code instead of an optimized client-size bundle your users download. The easiest, although not recommended, way to provide Rollbar with source maps is to make them available for download from your production server. Once Rollbar receives the error, it will schedule the download of the source map file. A reliable and recommended way to make source maps available for Rollbar is to upload them pre-deploy. It's also the only way if you don't wish to share the source code of your app by exposing it via publicly-available source maps. In this article, we will create a required configuration and write a script for uploading source maps to Rollbar. Read Full Article at: https://michalzalecki. com/upload-source-maps-to-rollbar/ --- ### How to Handle “IndexError: index out of range in self” in PyTorch > Incorporate index validation, masking strategies, and stringent data validation in your PyTorch code to prevent or avoid this error altogether. - Published: 2023-10-05 - Modified: 2023-10-13 - URL: https://rollbar.com/blog/how-to-handle-index-out-of-range-in-self-pytorch/ - Categories: Code Tutorials, Python - Tags: Python The popular deep learning and natural language processing framework PyTorch is renowned for being user-friendly and adaptable, so what’s the deal with the IndexError: index out of range in self error? This happens when a PyTorch embedding tensor attempts to access an index that is out of bounds. A lookup table that converts integers into vectors of real numbers is known as an embedding tensor. The valid indices for this tensor, which has a predetermined vocabulary size, run from 0 to vocabulary_size - 1. What causes the "IndexError: index out of range in self" error? This error is one of the most frequent in PyTorch and it mainly happens for two reasons. 1. Attempting to access out-of-range indices The most frequent cause of this error is attempting to access an index that is larger than the embedding layer's permitted vocabulary size. For instance: import torch # Create an embedding layer with a vocabulary size of 10 and an embedding dimension of 5. embedding = torch. nn. Embedding(10, 5) # Create an input tensor with an index that is out of bounds. input_tensor = torch. tensor # Try to access the embedding tensor using the out-of-bounds index. output_tensor = embedding(input_tensor) Output: When the above code is run, you get the following error (the code was run in Google Colab): —----------------------------------------------------------------------- IndexError Traceback (most recent call last) in 9 10 # Try to access the embedding tensor using the out-of-bounds index. —-->11 output_tensor = embedding(input_tensor) _________________________________________ 2 frames_____________________________________________________________________ /usr/local/lib/python3. 10/dist-packages/torch/nn/functional. py in... --- ### Continuous Delivery with Jenkins and Rollbar - Published: 2019-07-10 - Modified: 2023-06-20 - URL: https://rollbar.com/blog/continuous-delivery-with-jenkins-and-rollbar/ - Categories: topics - Tags: continuous-delivery Continuous delivery (CD) helps reduce the cost, time and risk of delivering changes by allowing for fast incremental updates to applications in production. However, it’s essential to monitor your application after each deployment. You need to be notified immediately if something is wrong or users are having a poor experience. Rollbar is a leading solution for error monitoring in the software development lifecycle. It alerts you when new errors occur after a deployment. It can also tell you which deployment the error was first seen in, and which code changes were likely responsible. This can dramatically speed up your troubleshooting time and help you fix problems faster. In the screenshot above, you can see that Rollbar has automatically identified the suspected deployment where the error was first seen (indicated by the second red circle). Additionally, it has identified the code change where the error was introduced (indicated by the third red circle). You can click on these links to go straight to the code change in GitHub or Bitbucket. Jenkins is a popular open source server to automate continuous integration and continuous delivery. We'll show you how to configure Jenkins to notify Rollbar when a new version is deployed. Then, Rollbar will tell you the suspected deployment for each error. Our pet clinic example Rollbar and Jenkins should work with pretty much all applications but we chose the Java pet clinic project to demonstrate the integration capabilities. It is freely available and simple to run or modify. The source code... --- ### How to Handle the "localStorage is not defined" Error in JavaScript > From unsupported browsers to server-side JavaScript environments, understand the root causes and learn three ways to handle this error effectively. - Published: 2023-10-05 - Modified: 2023-11-13 - URL: https://rollbar.com/blog/how-to-handle-localstorage-is-not-defined-error-javascript/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript The localStorage is not defined error generally occurs when you try to access the localStorage object in JavaScript, but the browser environment where your code is running does not support it. Using the localStorage web storage API, web applications can store key-value pairs locally in a web browser, allowing you to persistently retain data on the client-side even if the user shuts their browser or navigates away from the website. What causes the “localStorage is not defined” to occur The localStorage is not defined error can occur for several reasons, such as: Unsupported Browsers: Some older browser configurations might not support localStorage. So it’s a good option to either check the compatibility before using the browser or move to the latest version of the browser. Using ‘localStorage’ in Node. js: Since Node. js is a server-side JavaScript environment, it doesn’t have access to the browser's localStorage API. Therefore, using localStorage in Node. js might throw an error. For example: try { localStorage. setItem('key', 'value'); } catch (error) { console. error(error. message); //raises the error } Output: PS D: \BackEnd> node index. js localStorage is not defined Using ‘localStorage’ in React. js: Native apps do not have access to the browser's localStorage API, so you will get an error. Using ‘localStorage’ in Next. js: When using Next. js during server-side rendering, you do not have access to localStorage. When using a pre-built library or framework: If a library or framework that uses localStorage is executed in an environment where it is... --- ### How We’re Improving Error Grouping - Published: 2019-05-15 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/how-were-improving-error-grouping/ - Categories: product - Tags: grouping Imagine that you are developing an application and there's an error in the code. When you release it to production, this error causes hundreds of thousands of crashes. In this case, a logging tool would list all the crashes but an error monitoring tool, like Rollbar, would attempt to group the crashes together. Now you would receive just one notification about an error that crashed hundreds of thousands of times instead of many notifications about different crashes. Error grouping is hence essential to any error monitoring solution. Our commitment to helping software developers spend less time on debugging has recently led to the acquisition of Hungary-based Samebug, experts in the topic of error grouping. With an expanded team we now have the resources to operate an entire squad focused on grouping algorithm improvements. This squad is made up of computer and data scientists working full time on delivering various improvements to the algorithm, both small and large, that will be rolled out gradually. We are excited to announce the release of the first few improvements, solutions to specific issues that are small but can be very annoying when they come up. Recognize Missing jQuery First off, we have a JavaScript-related improvement. We know how annoying it is to see many different items created when jQuery is missing. We decided to group these together to reduce the noise and let you focus on the real errors. Every JavaScript project should use this migration, as you might see this error even when... --- ### How to Resolve “ReferenceError: Buffer is not defined” in Node.js > Check you're running the script with Node, not in the browser, and that you've mentioned the Buffer object before use. Also use the latest Node version. - Published: 2023-10-05 - Modified: 2023-10-05 - URL: https://rollbar.com/blog/how-to-resolve-referenceerror-buffer-is-not-defined/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript, Node.js Let me guess. You’re managing I/O activities and encountered this error? What happened is either: You’re using the Buffer class in a browser environment. Only Node. js, a server-side JavaScript runtime environment, offers the Buffer class. This error will appear if you attempt to use the Buffer class in a browser. The Buffer class is not supported by the version of Node. js you are running. The later versions of Node. js (4. x) included the Buffer class. The ReferenceError: Buffer is not defined error could appear if you are using an older version of Node. js. In Node. js, a buffer containing unprocessed binary data is represented by a global object called Buffer. For operations like reading from or writing to files, managing network packets, and encoding and decoding data, the ability to store and interact with binary data is quite useful. Therefore, when you attempt to use the Buffer class in Node. js but it is not available, ReferenceError: Buffer is not defined occurs. Example of “ReferenceError: Buffer is not defined” Buffer in Browser Now, the ReferenceError: Buffer is not defined error will be logged to the browser's developer console when you access this HTML file in a web browser. This is due to the fact that the Buffer class is exclusive to Node. js and is not accessible in a typical browser setting. Output: ReferenceError: Buffer is not defined at example. html:11:32 (anonymous) @example. html:16 How to resolve the “ReferenceError: Buffer is not defined” error You can... --- ### Welcoming Letania Ferreira - Published: 2019-04-15 - Modified: 2023-06-26 - URL: https://rollbar.com/blog/welcoming-letania-ferreira/ - Categories: company - Tags: team Letania is another new member of our support team and started as a Customer Service Engineer in December 2018. She’s new to the software engineering world and, like many other Rollbar employees, has a unique background that led her here. Letania has lived and worked in Europe, North America and South America. She is originally from Brazil, where she studied Portuguese and English as an undergrad. She went on to eventually earn her Master’s in Romance languages and a PhD in Romance Linguistics. She has previously worked as an English instructor in Belgium, has taught university classes as an assistant professor/visiting instructor at universities in Illinois and Brazil, and worked as a linguist in Brazil for an innovation technology company. After many years in this field, she attended Hackbright Academy to learn some basic coding skills but ended up falling in love with it and is now working towards becoming a full-fledged developer. When asked what drew her to pivot her career interests towards software engineering Letania responds that she was looking for a change to something new. Going from 20 years in academia to working for a startup may seem like quite the 180 but Letania finds a lot of similarities between the work and research she was doing in linguistics and coding. Both of them, she says, are based on finding and following rules and patterns. As a researcher she spent a lot of time running and analyzing large amounts of data to translate that data into actionable... --- ### Your Tokens, Your Control - Published: 2023-10-03 - Modified: 2023-10-05 - URL: https://rollbar.com/blog/your-tokens-your-control/ - Categories: product A New UI That Works as Fast as You Do In today’s fast-paced development environment, managing your project access tokens efficiently is more crucial than ever. That’s why we're excited to unveil a series of upgrades to Rollbar’s Project Access Token user interface to streamline your workflow and enhance your project’s security. Intuitive Status Indicators for Better Token Management One of the key updates we're introducing is the addition of token states, specifically 'Expired' and 'Expiring Soon' states. These states are designed to offer a quick and intuitive understanding of your tokens’ status. No more scouring through your list of tokens trying to figure out which ones need attention; now, a glance is all it takes. Bulk Editing: Efficiency, Supercharged Managing multiple tokens can be tedious, especially when each requires individual attention. That's why we’ve added the bulk editing feature. With just a few clicks, you can select multiple tokens and perform actions like 'Disable,' ‘Expire,’’ 'Regenerate,' or 'Delete. ' Whether you need to make large-scale changes or quickly adapt to new requirements, this feature is designed to make your life easier. Securing Your Tokens Post-Security Incident Our commitment to your project's security is unwavering, even more so in light of the recent data breach. The enhanced UI and new token states are our immediate response to help you manage your tokens securely and efficiently. While we're doubling down on our security measures to prevent such incidents in the future, we also want to equip you with the tools to... --- ### Introducing Interactive Slack Notifications - Published: 2019-03-12 - Modified: 2021-07-19 - URL: https://rollbar.com/blog/introducing-interactive-slack-notifications/ - Categories: product - Tags: Slack Quickly responding to new, reactivated, and otherwise important exceptions is a critical part of adopting continuous delivery and other DevOps best practices. Rollbar provides code version-specific dashboards and a live feed for proactively monitoring for exceptions during a deploy, but for those exceptions that happen when you aren't actively watching Rollbar, our Slack integration is the most popular way to get real-time alerts. Previously our Slack alerts were read-only, but it's now possible to take immediate action on exceptions from within Slack, including: Assigning items to a teammate for further investigation. Resolving, muting, or reopening items. Setting the level to critical, warning, etc. Slack actions require the acting user to be logged into Rollbar, so you'll have a full audit trail and only members of your team with Rollbar access will be able to update items from Slack. Already have Slack notifications set up? In order to use Slack actions the authorization token used by Rollbar needs to be updated with a new scope. This is a quick change and can be done by clicking the link in the banner that appears in-app and then re-authorizing Rollbar's access to your Slack account. Slack actions are enabled for by default in all new projects, with the option to turn them on/off for an entire project or per notification rule. Want to add the Slack integration to your project? Check out our docs for Slack and notification setup. Feedback? Questions? We're excited to hear what you think and ready to help if... --- ### Brian's story with Rollbar > Rollbar enabled our small team to support a large number of client applications in production. Their monitoring software works initially with almost no configuration and also allows for detailed customization for our clients at scale. We have stuck with rollbar on other stacks beyond Rails including iOS and Android as have a great, easy to use interface that always has the information devs needs to debug production issues. - Published: 2023-10-03 - Modified: 2024-04-15 - URL: https://rollbar.com/blog/brians-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Brian Samson Technologist, Entrepreneur, and CTO Brian has now been using Rollbar for 100 months! 1. My Role Ten Forward signed up with Rollbar in 2016 and began using it on a single client project. By 2023 we had rollbar deployed across more than 21 client projects that we managed, and 6 additional clients had become large enough that they signed up for their own paid Rollbar accounts and granted us access. As early as 2020 we positioned Rollbar as a "must-have" vendor for our clients - the service was extremely valuable and the cost was low enough that our clients did not balk at signing up and entering a credit card. 2. My Passion in the Role Many of our clients are small, local businesses who are not "tech startups" but instead use technology, specifically software, to grow, support, and maintain their existing business. These companies often have small margins and no room for full time technical ops staff. Rollbar has allows us to provide critical services with very low downtime, which is extremely cost effective for this class of clients. 3. The Rollbar Experience Rollbar enabled our small team to support a large number of client applications in production. Their monitoring software works initially with almost no configuration and also allows for detailed customization for our clients at scale. We have stuck with rollbar on other stacks beyond Rails including iOS and Android as have a great, easy to use interface that always has the information devs needs... --- ### Introducing the Rollbar Pipe for Bitbucket Pipelines - Published: 2019-02-28 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/introducing-the-rollbar-pipe-for-bitbucket-pipelines/ - Categories: product - Tags: continuous-delivery Automating your deployment process is a critical step towards adopting continuous delivery. For teams that use Bitbucket for hosting their source code, Bitbucket Pipelines provide an easy way to automatically build and deploy when changes are made in your origin repository. The Rollbar team is excited to participate in the launch of Bitbucket Pipes, which make it even easier to configure your pipeline. Bitbucket Pipes makes it easy to build and automate a CI/CD pipeline that meets your exact needs. Bitbucket Pipes replaces custom-written scripts with parameterized calls to vendor-supported 'pipes'. For instance, you can now report a deploy to your Rollbar project with a call to the rollbar/rollbar-notify pipe: As you can see in the example above, adding the rollbar/rollbar-notify pipe takes just a couple of lines of YAML and it unlocks several features in Rollbar which will speed up your debugging process when exceptions occur. Deploy Tracking in Rollbar Reporting deploys to Rollbar makes it easier to correlate exceptions to code changes which may have triggered them: Each exception in Rollbar has a 'Suspect Deploy' which is the last reported deployment before it became active. Deploys will appear as an entry in your live exception feed so you can quickly see when code changes occurred. If your Rollbar account is on an Advanced or Enterprise plan, you can track exceptions by version, providing a real-time dashboard of exceptions occurring in your last deployed version. Reporting Deploys via the Bitbucket Pipe When you add the rollbar/rollbar-notify pipe to your... --- ### Sébastien's story with Rollbar > But what's kept me a loyal Rollbar user? It's the trustworthiness of the tool. In an age where alert fatigue is real, Rollbar's machine learning-driven grouping ensures we only get alerts that matter. The seamless integrations with other tools and the detailed, actionable alerts mean we can resolve issues faster, ensuring our users always get the best experience. - Published: 2023-10-03 - Modified: 2024-04-15 - URL: https://rollbar.com/blog/sebastiens-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Sébastien Scoumanne Co-Founder & CTO Sébastien has now been using Rollbar for 100 months! My Journey as CTO of Ring Twice and the Power of Rollbar In the ever-evolving world of technology, I've had the privilege of being at the helm of some truly transformative projects. Today, I'd like to share a bit about my professional journey, my passions, and a tool that has been instrumental in our operations: Rollbar. 1. My Role and Ring Twice I currently serve as the Chief Technology Officer (CTO) for Ring Twice. Originally known as ListMinut, Ring Twice is a pioneering platform in the collaborative economy space in Belgium. We connect individuals in need of assistance for everyday tasks with trustworthy neighbors ready to lend their expertise. Whether it's electrical work, gardening, personal assistance for the handicapped, or event photography, Ring Twice offers a diverse range of services. Our platform has seen significant growth over the years. We've expanded our service range, introduced new categories like "event" and "personal assistance," and made strategic decisions like removing the "others" category to ensure better accuracy and matchmaking between clients and service providers. 2. My Passion in the Role What truly excites me about my role at Ring Twice is the impact we create. We're not just a platform; we're a community. Every time a student offers tutoring services, a retiree shares their expertise in gardening, or a part-time employee assists with IT tasks, we're fostering connections and empowering individuals. The ability to leverage technology to create... --- ### Welcoming Samebug to Rollbar - Published: 2019-02-26 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/welcoming-samebug-to-rollbar/ - Categories: company - Tags: behind-the-scenes Today we're announcing that we've acquired Hungary-based Samebug. This is an important moment for Rollbar and represents a big step in our mission to help companies build software better, faster, and our vision of a life without bugs. Two summers ago, Cory and I stumbled across the samebug. io website. We had been noodling on the observation that many of the bugs that developers find and fix via Rollbar are pretty similar to the ones that other developers are finding and fixing, and we were wondering if there could be a way that Rollbar could help connect those developers to each other and reduce that duplication of work. When we saw the stack trace search engine that Samebug had built, powered by what appeared to be a grouping algorithm not unlike ours, we were intrigued. Soon, we met Samebug's founders, Reni, Arpi, and Dani, and discovered kindred spirits. It was clear that we shared a vision of how much better building software could be, and an approach to business and life grounded in honesty and transparency. Over the past year and a half, we explored various ways we could work together, culminating in today's announcement. As a Rollbar customer, you can look forward to our core feature - grouping - getting better and better as we integrate Samebug's technology into the Rollbar grouping engine, and longer-term, to our combined team putting our heads together to solve this and other deep problems that remain unsolved by any error monitoring solution. And... --- ### Nacif's Story with Rollbar > Comprising a team of skilled software engineers, designers, and project managers, they have successfully developed multiple web applications for clients on all 6 continents. Leveraging technologies such as NodeJS, Ruby, Docker, and AWS, they emphasize rapid, high-quality, and efficient software development. The team believes in the combined strength of individual expertise and collaborative effort. They offer tailored solutions by understanding a client's business needs and are open to new collaborations. - Published: 2023-10-02 - Modified: 2024-01-31 - URL: https://rollbar.com/blog/nacif-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Nacif is a software consultancy specializing in building next-generation digital products with over 11 years of expertise. Comprising a team of skilled software engineers, designers, and project managers, they have successfully developed multiple web applications for clients on all 6 continents. Leveraging technologies such as NodeJS, Ruby, Docker, and AWS, they emphasize rapid, high-quality, and efficient software development. The team believes in the combined strength of individual expertise and collaborative effort. They offer tailored solutions by understanding a client's business needs and are open to new collaborations. 1. What company do you work for (describe their product/service) and what projects are you working on there? I work at Nacif which is a dev shop focused on developing web applications and mobile apps. Currently we are working on a project called Enzo Custom https://enzocustom. com/, which is a retailer on the Man fashion industry. 2. What are you most passionate about in your current and/or past roles? I love to be a part of the development of technology and the internet. As a kid, I've always wanted to be able to build software and complex applications, and I'm glad I'm able to do that now. I'm also passionate about the people I work with, I love to be able to help them grow and learn new things. 3. Is there anything in particular about Rollbar that has kept you a loyal user? Rollbar interface makes it very easy to spot the latest exceptions on the application, and when I need to... --- ### 4 Reasons Why You Need Error Monitoring - Published: 2019-02-19 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/4-reasons-why-you-need-error-monitoring/ - Categories: topics - Tags: business-impact Errors are a fact of life in web development, and even the world's greatest brands are not without fault. Errors can create unhappy customers, deter new ones and reduce revenues. An error monitoring solution offers a clear view of the most important errors based on how often they occur and how they impact users. It will give your engineering team confidence to deploy faster, and debug problems quickly, so they can get back to building new features. Here are four good reasons why you need error monitoring: 1. It Improves Customer Experience Most consumers now have high expectations for apps, and things like server errors, timeouts and missing resources can quickly degrade the user experience. A bigger issue is that the consumers don't even report many of the errors they encounter. Organizations that don't have an efficient system to identify and address errors will lose sales, customers, and market share should those errors persist or happen repeatedly. You shouldn't rely on customers to report problems, instead find and fix them proactively. An error monitoring solution gives you visibility into errors that affect the most users and highest value users. This helps your team prioritize errors by impact and efficiently allocate resources. The richer debugging capabilities of an error monitoring solutions can reduce Mean Time to Detect (MTTD) and Mean Time to Restore (MTTR), both of which can reduce outages and increase uptime. {: . highlightbox} “Rollbar is our early warning system for errors. The worst thing that can happen is... --- ### PLUM's Story with Rollbar > At PLUM, we focus on crafting custom software solutions tailored to specific needs. Our projects range from helping startups launch their initial products to assisting established enterprises in scaling and enhancing their software infrastructure. - Published: 2023-10-02 - Modified: 2024-01-31 - URL: https://rollbar.com/blog/plum-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories PLUM is a software company that specializes in creating tailored solutions We believe in teamwork, innovation, and delivering top-notch results. Our dedicated team is passionate about helping businesses grow with exceptional software. 1. What company do you work for (describe their product/service) and what projects are you working on there? At PLUM, we focus on crafting custom software solutions tailored to specific needs. Our projects range from helping startups launch their initial products to assisting established enterprises in scaling and enhancing their software infrastructure. 2. What are you most passionate about in your current and/or past roles? What I'm most passionate about in my role at PLUM is the opportunity to innovate and collaborate. Every project presents a unique challenge, and finding the best solution through teamwork and creativity is incredibly rewarding. I take pride in seeing our clients succeed and grow, knowing that our software played a part in that journey. 3. Is there anything in particular about Rollbar that has kept you a loyal user? Rollbar has been an invaluable tool for us. Its real-time error tracking and detailed insights allow us to catch and fix issues before they escalate. The ease of integration and the clarity it provides into our applications' health have made it an essential part of our development process. The proactive approach to error management that Rollbar offers ensures that we deliver the best quality software to our clients. Visit Plum's LinkedIn Page Visit WebSite --- ### Reduce noise in error monitoring with Grouping Suggestions - Published: 2019-01-16 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/reduce-noise-in-error-monitoring-with-grouping-suggestions/ - Categories: product - Tags: monitor One perennial problem we face in monitoring is dealing with noise. We don't want to miss important signals, but sorting through all the noise can be a chore. Ideally, we want to spend as little time as possible doing the setup work needed to achieve excellent signal-to-noise ratio. The feature we've just released will help you get closer to that optimal setup faster, with less work. Noise reduction using Rollbar Several major noise reduction mechanisms are built into Rollbar today: Automatic default grouping of all occurrences of an error, so if an error occurs 100 times, you'll see only one error item in your real-time error & crash reporting feed. Custom grouping rules you can set. For example, you can set a custom rule so that all future occurrences of an exception class are grouped as one error, regardless of the stack trace. You can also manually merge errors directly in the feed. When you do a manual merge all past occurrences get grouped, not just future ones. Custom grouping suggestions With Grouping Suggestions, Rollbar will now attempt to suggest a custom fingerprint rule whenever you manually merge errors. When you accept a suggestion a new custom fingerprint rule is created and you won't have to manually merge similar errors again in the future. How it works: Step 1: Perform a manual grouping Step 2: Review and accept suggestion The first release of this feature detects items with the same exception class and similar exception messages, and automatically generates the... --- ### Saved Views > We are introducing the ability to store a collection of applied filters as a named Saved View, so that users can quickly switch between different configured views of their items. - Published: 2023-09-27 - Modified: 2023-09-27 - URL: https://rollbar.com/blog/saved-views/ - Categories: product Saved Views On the new item list page, for Advanced and Enterprise customers we are introducing the ability to store a collection of applied filters as a named Saved View, so that users can quickly switch between different configured views of their items. For users with a large number of projects, switching between the different views of the data they are interested in can be a time-consuming manual process. To help resolve this, and to assist users in building up views of the data they are interested in, we have created the concept of a Saved View. When a combination of filters has been applied, a user can store that as a named Saved View. A particular view can be reapplied when a user wishes to see a specific view of the data again. Saved views are stored at the user level, so users can create and quickly switch between multiple views of the data that they find useful. Users can create, rename, update and delete Saved Views as required. --- ### Error Monitoring In Zend 3 - Published: 2019-01-14 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/error-monitoring-in-zend-3/ - Categories: Code Tutorials, PHP - Tags: PHP Zend Framework 3 is a free and open-source PHP framework. It uses a model-view-controller (MVC) pattern which makes its structure consistent and maintainable. It also accesses the database in an object-oriented way. Instead of directly interacting with the database using SQL queries, you can use doctrine object-relational mapping (ORM) to manage the structure and relationships of your data. This makes code easier to write and maintain. In production applications, it’s important to monitor errors so you understand your users experiences and can fix issues before more users are affected. In this tutorial, you will see how to set up Zend Framework 3 to handle errors natively and send errors to the error monitoring service Rollbar. The error message can be seen in your PHP error log or in Rollbar, including a stack trace that provides information about the line of code that caused the error. Native error handling in Zend 3 The easiest and most basic way to handle errors is using try, catch, and finally statements. When an error is thrown in the try block, the catch block executes and handles the error. For example, you may want to record the error or present a more friendly error message to the user. try { $value = 5 / 0; } catch (\Exception $e) { echo $e->getMessage; } In production, the application can crash due to uncaught or runtime errors, such as when an application tries to access invalid data or code or an illegal action is attempted. To avoid... --- ### How to Rotate Your Tokens > Before we dive into the specifics, let's understand what regenerating a token means. When you regenerate a token, you maintain the same scope(s), rate limits, and names. What changes is the access key and the created at date. We have added this to the name column so that you can quickly tell which access tokens are new. This will allow you to swiftly rotate tokens without going through the process of creating a new one. - Published: 2023-09-15 - Modified: 2025-04-22 - URL: https://rollbar.com/blog/rotate-tokens/ - Categories: product How to Rotate Your Tokens We take your data security seriously, and as some of you may be aware, we recently had a data breach affecting 'read' and 'write' scoped tokens. As a precaution, we've expired these tokens. Here's how you can regenerate them without breaking a sweat. What is Token Regeneration? Before we dive into the specifics, let's understand what regenerating a token means. When regenerating a token, you maintain the same scope(s), rate limits, and names. What changes are the access key and the created at date. We have added this to the name column so that you can quickly tell which access tokens are new. This will allow you to swiftly rotate tokens without going through the process of creating a new one. Regenerate Tokens on the Project Page Since we have expired all read and write tokens, we developed an easier way for you to regenerate your expired read and write tokens. When you navigate to your project's access token page, you'll find a banner informing you about the compromised tokens. Below the banner, you'll find two lists: one displaying your active tokens and another listing your expired tokens. To regenerate all expired tokens for that specific project, click "Regenerate All Tokens. " This action will not only regenerate all the expired tokens but also delete them. If you'd prefer to regenerate a specific expired token, just click on the "Regenerate Token" button next to it. Doing so will regenerate that token and remove it from... --- ### Error Handling with Angular 6 - Tips and Best Practices - Published: 2019-01-04 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/error-handling-with-angular-6-tips-and-best-practices/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript Handling errors properly is essential in building a robust application in Angular. Error handlers provide an opportunity to present friendly information to the user and collect important data for development. In today's age of advanced front-end websites, it's more important than ever to have an effective client-side solution for error handling, which is covered in this article. An application that does not handle errors gracefully leaves its users confused and frustrated when the app suddenly breaks without explanation. Handling these errors across an application greatly improves user experience. Data can also be collected from within the error handlers to inform the development team about important issues that slipped past testing. In this article, we will compare several solutions for error handling in Angular apps. First we will describe traditional approaches using ErrorHandler and HttpClient, and then we will show you a better solution using HttpInterceptor. We'll also show how you can use this interceptor to track errors centrally in Rollbar. The shortcomings of the console log Beginners in JavaScript programming often start out using the console log because that is the default output in most development environments. Once you deploy your application to a production environment, you no longer have access to the console log. That's because the code is now running on the client browser. When those clients experience errors, you'll have no visibility to them unless you record them in a centralized location. In order to understand the user experience and how errors can affect it, you need... --- ### Next.js vs. React Performance > This performance comparison looks at rendering, static site generation, code splitting, and SEO. Make an informed choice for your frontend framework. - Published: 2023-09-12 - Modified: 2024-02-15 - URL: https://rollbar.com/blog/next-js-vs-react-performance/ - Categories: topics - Tags: next, react In the early days of the web, the idea of performance was relatively straightforward. Pages were static, and the most dynamic thing you might encounter was a blinking banner ad. But as the web evolved, so did our ambitions. Today it's not just about building web pages anymore; it's about crafting experiences. Load speed time and search engine optimization (SEO) matter just as much as the content on the page. Thus, the choice between React and Next. js is an important one, with real-world implications. Let's explore how the rendering techniques of these two frameworks impact performance, user experience, and SEO and crown a winner. Next. js vs. React Rendering Comparison When a user goes to your website, their browser has to wait for your server to send a bundle of code that their browser will then render. In a traditional React app, this process leans heavily on Client-Side Rendering. The server sends a minimal HTML structure with links to JavaScript files. The bulk of the rendering responsibility lies with the user’s browser, which fetches, interprets, and then displays the content. This can lead to a noticeable delay before the user sees the full, interactive page. Contrast this with Next. js, which emphasizes Server-Side Rendering. Here, the server does most of the heavy lifting. When a user requests a page, the content is “pre-rendered” on the server, resulting in a fully formed HTML page being sent to the browser. This means the user sees the content faster, although not yet... --- ### How to Fix “IndexError: List Assignment Index Out of Range” in Python > Think of it like trying to drop a letter into a non-existent mailbox. The index you are trying to use for assignment lies outside the valid index range of the list. - Published: 2023-09-06 - Modified: 2023-09-06 - URL: https://rollbar.com/blog/how-to-fix-indexerror-list-assignment-index-out-of-range-python/ - Categories: Code Tutorials, Python - Tags: Python The IndexError: List Assignment Index Out of Range error occurs when you assign a value to an index that is beyond the valid range of indices in the list. As Python uses zero-based indexing, when you try to access an element at an index less than 0 or greater than or equal to the list’s length, you trigger this error. It’s not as complicated as it sounds. Think of it this way: you have a row of ten mailboxes, numbered from 0 to 9. These mailboxes represent the list in Python. Now, if you try to put a letter into mailbox number 10, which doesn't exist, you'll face a problem. Similarly, if you try to put a letter into any negative number mailbox, you'll face the same issue because those mailboxes don't exist either. The IndexError: List Assignment Index Out of Range error in Python is like trying to put a letter into a mailbox that doesn't exist in our row of mailboxes. Just as you can't access a non-existent mailbox, you can't assign a value to an index in a list that doesn't exist. Let’s take a look at example code that raises this error and some strategies to prevent it from occurring in the first place. Example of “IndexError: List Assignment Index Out of Range” Remember, assigning a value at an index that is negative or out of bounds of the valid range of indices of the list raises the error. Example: my_list = my_list = 6 #... --- ### What we've shipped in 2018 - Published: 2018-12-27 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/what-weve-shipped-in-2018/ - Categories: product - Tags: triage With 2018 almost coming to a close, let's take a look at all the product improvements we've shipped this year . New features and SDK releases Account dashboard: Track error trends account-wide Versions: Monitor errors by deployed code revisions All items view: View all and/or specific errors across projects Enhanced stack trace Enhanced deploy API Official . NET SDK - now v2. 1 Official Golang SDK - v1. 0 Official React Native SDK - v0. 4 Integrations customizable data retention Notifications: edit notification rules before turning on, disable email notifications for a new project User onboarding: email domain whitelisting, user provisioning via Okta Search: search items with issues, search by method name in stacktrace A brand new Docs site For the full list, check our changelog. Tutorials If you're new to Rollbar, or want to use Rollbar with a language or framework new to you, check out these tutorials we've written in 2018. Examples included. JavaScript source maps Vue. js ASP. NET Xamarin Android iOS PHP Symfony PHP Magento PHP Wordpress On to 2019 ! If you aren't using a tool like Rollbar yet, you're practically outsourcing bug discovery to users. Rollbar provides realtime error monitoring to help you release better software faster. Instantly see all errors as they occur, and debug them before users notice. Give it a try for free! --- ### How to Fix the “Variable Might Not Have Been Initialized“ Error in Java > This error occurs when a variable in Java is used without assigning a value to it. Learn how to resolve it. - Published: 2023-09-06 - Modified: 2023-09-06 - URL: https://rollbar.com/blog/how-to-fix-variable-might-not-have-been-initialized-error-java/ - Categories: Code Tutorials, Java - Tags: java Variables in Java should always be initialized and assigned a value before use, otherwise you’ll get the Variable Might Not Have Been Initialized error. Imagine walking into a coffee shop and ordering your favorite latte. The barista nods, grabs a cup, and then just stares at it. Confused, you ask, "What's the matter? " The barista replies, "Well, you didn't tell me how much sugar you want! " That's Java's quirky way of saying, "Hey, you forgot to initialize this variable! " Just like our barista refuses to make a drink without knowing the sugar content, Java refuses to run code when a variable hasn't been given a value. It's Java's way of avoiding any bitter (or overly sweet) surprises in your code. Let’s take a look at some common scenarios that raise this error and strategies for handling it. What causes the “Variable Might Not Have Been Initialized” error Using Uninitialized Variables: Accessing or using a variable before assigning a value to it raises this error. Example: public class Example { public static void main(String args) { int x; int ans = x + 10; //using an uninitialized variable System. out. println(ans); } } Output: java: variable x might not have been initialized Conditional Initialization: If a variable is only conditionally initialized within certain code paths, accessing it without ensuring its initialization can lead to an error. Example: public class Example { public static void main(String args) { int x; int val = 2; if(val%2! =0) { x =... --- ### Item Detail Page Updates > We’ve been listening to all the great feedback we’ve received on the new item detail page, and we’re pushing changes to help make investigating and understanding Rollbar items easier, quicker, and more efficient.The most visible change is that the context graphs have been moved to a single full-width view on the desktop so that you can immediately see the patterns of when occurrences happened, helping to spot patterns in behavior that can give insights into causes. - Published: 2023-09-01 - Modified: 2023-09-01 - URL: https://rollbar.com/blog/item-detail-updates/ - Categories: product Making the Item Detail page quicker and easier to use Layout changes We’ve been listening to all the great feedback we’ve received on the new item detail page, and we’re pushing changes to help make investigating and understanding Rollbar items easier, quicker, and more efficient. The most visible change is that the context graphs have been moved to a single full-width view on the desktop so that you can immediately see the patterns of when occurrences happened, helping to spot patterns in behavior that can give insights into causes. This also means that the full-width stack trace is displayed directly beneath this in the Detail tab; we have also optimized the page load to make this appear quicker. After the Detail tab, the Summary tab displays summarized information from across the occurrences that make up an item to help investigate patterns within the occurrence data. Following the Summary tab, we will have the new Occurrences tab, which has moved away from being displayed in a slide over so that the individual occurrences can be investigated in detail if needed. We have aimed to reduce the vertical height of the page so that the graphs and stack trace are more visible - we have achieved this by moving the Service Links button to the top action bar and moving the context statistics to be displayed horizontally beneath the main header. We hope these changes make it easier for you to use the item detail page and resolve items more quickly. As... --- ### Monitoring errors in Xamarin apps - Published: 2018-12-20 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/monitoring-errors-in-xamarin-apps/ - Categories: .NET, Code Tutorials - Tags: dotnet Xamarin is based on Mono, the open source implementation of Microsoft's . NET Standard. It allows us to create apps that easily run in multiple devices like phones and smart watches. It solves the difficulties many developers face when they’re developing cross-platform apps like different coding languages and UI paradigms. With Xamarin, you can use C# as a single language for iOS, Android, and Universal Windows apps. Apps freezing, crashing, or slowing down are the top reasons for a bad review. According to a survey by Dimensional Research, 49 percent of users expect mobile apps to start within two seconds. If an app crashes, freezes, or has errors, 53 percent of users will uninstall it. These problems not only cause existing users to delete your app, but they can also discourage new users from downloading your app. That’s why having visibility into the performance of mobile apps in real time and from real users is so critical—it helps identify customer problems and create great user experiences. We will show you how to handle errors using both native error handling in Xamarin and using Rollbar, which is a dedicated service for remote error monitoring. Below, you can see we’ve created an example app that triggers an exception when the user clicks on a button. The error message will be tracked by Rollbar, including a stack trace where you can see the line of code that caused the error. Rollbar captures errors that occur anywhere in the app. Native error handling in... --- ### New Item List > We are proud to announce that we are starting to roll out access to the new version of the item list page. The new page has been redesigned, refreshed and rebuilt from scratch; the fresh new look and feel is mobile friendly and also brings a number of immediate new benefits compared to the legacy page. - Published: 2023-08-22 - Modified: 2023-08-23 - URL: https://rollbar.com/blog/new-item-list/ - Categories: product Introducing the new item list page for all Rollbar users We are proud to announce that we are starting to roll out access to the new version of the item list page. The new page has been redesigned, refreshed and rebuilt from scratch; the fresh new look and feel is mobile friendly and also brings a number of immediate new benefits compared to the legacy page. Access will be available through a header to allow users to switch to the new page, with the ability to switch back to the legacy page if needed. New page designs Desktop The desktop view has been redesigned to have a cleaner, fresher feel with updated filters and more prominent time selector. Mobile The new item list page has been designed with mobile in mind, allowing users to view and manage items from any device. Benefits of the new item list page compared to legacy page The following features have been developed alongside the new page, which are not available on the legacy page Redesigned filters The filters have been reviewed and made clearer: When the filter sidebar is closed to allow more space to view items and their details, the applied filters can be viewed and removed from the applied filter list: Select multiple owners A new feature on the page is the ability to select multiple owners - on the legacy page it was only possible to select a single owner, now multiple individual owners can be selected in the filters, as... --- ### Win-Win Deployment Strategies for Modern Apps - Published: 2018-11-13 - Modified: 2023-06-20 - URL: https://rollbar.com/blog/win-win-deployment-strategies-for-modern-apps/ - Categories: topics - Tags: continuous-delivery These days, the biggest change to software development is the frequency of deployments. Product teams deploy releases to production earlier (and more often). Months or years-long release cycles are becoming rare—especially among those building pure software products. Today, using a service-oriented architecture and microservices approach, developers can design a code base to be modular. This allows them to write and deploy changes to different parts of the code base simultaneously. The business benefits of shorter deployment cycles are clear: Time-to-market is reduced Customers get product value in less time Customer feedback also flows back into the product team faster, which means the team can iterate on features and fix problems faster Overall developer morale goes up However, this shift also creates new challenges for the operations or DevOps team. With more frequent deployments, it’s more likely that the deployed code could negatively affect site reliability or customer experience. That’s why it’s important to develop strategies for deploying code that minimize risk to the product and customers. In this article, we’ll talk about a few different deployment strategies, best practices, and tools that will allow your team to work faster and more reliably. Challenges of Modern Applications Modern applications are often distributed and cloud-based. They can scale elastically to meet demand, and are more resilient to failure thanks to highly-available architectures. They may utilize fully managed services like AWS Lambda or Elastic Container Service (ECS) where the platform handles some of the operational responsibility. These applications almost always have frequent deployments.... --- ### Alfredo's story with Rollbar > One primary reason we utilize Rollbar is its ability to provide real-time feedback as soon as we deploy code to production. Aligned with the DevOps culture, we encourage our teams to deploy frequently, experiment, and embrace risks. Rollbar has proven invaluable in swiftly tracking errors in our production environment. Its feature allowing us to attach user identifiers empowers us to proactively reach out to affected customers once we've addressed bugs. Furthermore, Rollbar's ease of integration is unmatched, making it a seamless fit across all Audiense projects. - Published: 2023-08-17 - Modified: 2024-04-16 - URL: https://rollbar.com/blog/alfredos-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Alfredo Artiles Larralde Audiense Co-founder and CTO Alfredo has now been using Rollbar for 100 months! 1. What company do you work for (describe the product/service) and what projects are you working on there? I am the co-founder and CTO of Audiense, recognized as a leader in Audience Intelligence. Our software is enabling thousands of marketers and consumer researchers to be innovative and develop more relevant audience-centric strategies through proprietary social consumer segmentation, by providing insights on who consumers are and how to engage with them in the most meaningful way. Audiense unifies rich and varied social data to provide a better understanding of the unique cultures and changing social behaviors of consumer segments. Audiense makes it easier to rapidly understand and describe the real affinities and segments needed to define and deliver content and marketing to optimize engagement, campaign performance, and return on investment. 2. What are you most passionate about in your current and/or past roles? I've always been driven by the challenges and rewards that come with architecting scalable and resilient systems. Our distributed architecture, which manages high-volume transactions, is a testament to this. We've incorporated a robust stack that includes Scala, Spark, Node. js, Kafka, Clickhouse, Redis, MongoDB, RabbitMQ, Solr, and MySQL. Each technology was chosen meticulously to cater to specific demands, and seeing them work in harmony to handle real-time updates from over 2000 million social profiles is incredibly fulfilling. Moreover, we've embarked on refining our software development process, aligning with best practices such as... --- ### How to Show Errors in WordPress - Published: 2018-11-06 - Modified: 2024-03-07 - URL: https://rollbar.com/blog/monitoring-errors-in-wordpress/ - Categories: Code Tutorials, PHP - Tags: PHP WordPress is an open source blogging and website creation tool written in PHP and MySQL. It is a highly flexible content management system (CMS) that enables you to build and manage your website using just your web browser. According to a W3Techs survey, WordPress is used by 31. 8% of all websites. WordPress sites generate errors that can negatively affect users, but they are not reported in tools like Google Analytics. You need to examine server-side logs to determine how often they happen. These errors are not just generated by Wordpress, but by the dozens of plugins and custom themes that businesses add. Common WordPress errors experienced by users include the "white screen of death," “internal server error,” “connection timed out,” and many more. We’ve created an example app to demonstrate how errors are handled in WordPress. Also, we’ll show you how Rollbar can help you monitor and display errors on a dashboard. Rollbar will show you the error message along with contextual information to see the impact and debug the root cause. Native WordPress error logging WordPress has a built-in mechanism to log errors but it's not enabled by default. To turn it on, add the WP_DEBUG constant in your wp-config file. WordPress will turn on debugging and generate a debug. log file under {your website}\wp-content\debug. log. define ('WP_DEBUG',true); WordPress does not create debugging logs by default because it displays all the PHP errors on the live site. To prevent errors from being displayed and only record them in... --- ### Item Summarization > Our new item summarization feature introduces a more profound complexity accessible through two areas - the new summary tab and the typicality value found within the details tab. The summary data provides an overview of the data found within each parameter value, while the typicality value indicates how typical an individual occurrence’s parameter is within all the occurrences in the item. While these elements hold the potential for greater insight, the sheer volume of occurrences and the varying nature of parameters can create a maze of information. This may lead to missed patterns, incorrect interpretations, or extended investigation time. - Published: 2023-08-14 - Modified: 2023-08-14 - URL: https://rollbar.com/blog/item-summarization/ - Categories: product - Tags: Summarization Introducing Item Summarization We are happy to announce the release of item summarization - a powerful tool to help users understand and utilize the data contained within the occurrences that make up an item. Organizations and engineers often deal with many occurrences within an Item when investigating underlying causes. With such vast amounts of data, spotting patterns and insights can be incredibly challenging and time-consuming. Even with a comprehensive occurrences table, the specific details and typicality of individual occurrences can be difficult to interpret, leading to delays and potential confusion and delays in the investigation process. Our new item summarization feature introduces a more profound understanding of the complexity within the occurrence data, accessible through two areas - the new summary tab and the typicality value found within the details tab. The summary data provides an overview of the data found within each parameter value, while the typicality value indicates how typical an individual occurrence’s parameter is within all the occurrences in the item. While these elements hold the potential for greater insight, the sheer volume of occurrences and the varying nature of parameters can create a maze of information. This may lead to missed patterns, incorrect interpretations, or extended investigation time. Item summarization offers an elegant solution to make use of this maze of data. In the new summary tab, users can see the top 3 values within each summarized key:value pair and the proportion of occurrences with each particular value. By assisting in ruling in or out the... --- ### React.js vs. Next.js: Which Framework is Better, and When? > In the ever-evolving world of web development, staying stagnant isn’t an option. Learn the pros and cons of these two giants of front-end frameworks. - Published: 2023-08-14 - Modified: 2024-02-15 - URL: https://rollbar.com/blog/react-js-vs-next-js/ - Categories: topics - Tags: JavaScript, next, react When React arrived on the scene in 2013, it quickly became the darling of developers by making everything about UI delightful and component-y. Yet as millions embraced React, they also demanded more than just delightful UI. Developers craved snappier performance and better search engine optimization (SEO). That's when Next. js waltzed in, whispered "server-side rendering," and changed the game. Next. js builds on React's legacy and takes it to new horizons. But what does this evolution mean for the everyday developer? How does one navigate the nuances between React and Next. js? And perhaps most importantly, when should you choose one over the other? These are not mere academic questions, but ones that have tangible implications for website performance, user experience, search engine rankings, and overall project success. In this article, we'll unpack the journey from React to Next. js, delve into the unique strengths each brings to the table, and provide insights to guide your next project decision. What is React? React is an open-source, front-end JavaScript library that was originally created at Facebook to address challenges that they had in building and maintaining complex user interfaces. Since open-sourcing it, React has grown immensely popular in the developer community thanks to its effective management of state and the creation of reusable UI components. React's virtual DOM speeds up rendering by updating only the user interface elements that have changed, making interactions faster and more fluid. Example: How to Create a Simple Counter App in React Create a React app... --- ### How to Integrate ChatGPT with React > Unlock the potential of AI in your React apps. From signing up to the OpenAI API to writing React code, our step-by-step tutorial has got you covered. - Published: 2023-08-14 - Modified: 2023-09-22 - URL: https://rollbar.com/blog/how-to-integrate-chatgpt-with-react/ - Categories: Code Tutorials, JavaScript - Tags: OpenAI, react If you're not thinking about integrating AI into your apps, you're missing out. In this tutorial, we will walk you through how to set up a React app that harnesses the vast knowledge of ChatGPT via the OpenAI API, allowing you to take your UI components to a whole new level. Step 1: Sign up for the OpenAI API To use the ChatGPT language model in a React app, first go to https://beta. openai. com/signup/ and sign up to get an API key that you will use to authenticate your requests. Sign up for the OpenAI API Step 2: Setup the development environment Create an empty folder, for instance ‘chat-gpt-app’, and open it in an IDE like VSCode. Now open the terminal in VSCode and type the below command to create a Vite app with a React template. npm create vite@latest app -- --template react The below folder structure will be created: Setup the ChatGPT development environment Now enter the following command in the VSCode console to access the app folder: cd app Run the npm install. npm install To build your chat interface, you'll also need to install the chatscope UI kit. npm install@chatscope/chat-ui-kit-react Step 3: Write React code to connect to the OpenAI API Now enter the following code into the App. jsx file located within the src folder: import { useState, useEffect } from 'react'; import '. /App. css'; import '@chatscope/chat-ui-kit-styles/dist/default/styles. min. css'; import { MainContainer, ChatContainer, MessageList, Message, MessageInput, TypingIndicator, } from '@chatscope/chat-ui-kit-react'; const API_KEY ="YOUR_API_KEY_HERE"... --- ### Diego's story with Rollbar > Having readily available, almost plug-and-play libraries to add Rollbar in our apps, and being rock solid for all these years it's what seals the deal for me. Also, the ability to easily connect Rollbar to our monitoring system and alerting is one of the most helpful things that it provides for us. - Published: 2023-08-09 - Modified: 2024-04-16 - URL: https://rollbar.com/blog/diegos-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Diego Fernández Engineering Manager Diego has now been using Rollbar for 100 months! 1. What company do you work for (describe the product/service) and what projects are you working on there? I work for BeBanjo, now part of MEDIAGENIX (https://www. mediagenix. tv/bebanjo/). We build products to help manage editorial and availability information for video-on-demand content. We offer our products as a service (SaaS) just like Rollbar, but we do plenty of integrations with our customer's systems or 3rd party services. I work as an Engineer Manager in the team in charge of such integrations, the Projects Team. 2. What are you most passionate about in your current and/or past roles? I'm in a manager position now, so my main focus is to help the development team perform in the best way possible. To do so it's imperative to provide guidance on how people can grow professionally, so I really like to mentor and foster a culture where people can feel that they are becoming better at their job while maintaining a healthy relationship with it. 3. Is there anything in particular about Rollbar that has kept you a loyal user all this time? Having readily available, almost plug-and-play libraries to add Rollbar in our apps, and being rock solid for all these years it's what seals the deal for me. Also, the ability to easily connect Rollbar to our monitoring system and alerting is one of the most helpful things that it provides for us. --- ### Sam's story with Rollbar > I've used Rollbar in all my apps for 10+ years. What is great about Rollbar is that it works just as well for a relatively simple web app like Addressable as it does for complex, enterprise web apps like ReadyTech. - Published: 2023-08-09 - Modified: 2024-04-16 - URL: https://rollbar.com/blog/sam-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Sam Giffney Chief Information Officer Sam has now been using Rollbar for 100 months! 1. What company do you work for (describe the product/service) and what projects are you working on there? I'm the CIO at ReadyTech www. readytech. com. au. ReadyTech make mission critical SaaS for people-centric businesses in vertical markets such as education, employment, and local government. I'm leading our cloud, information security and platform engineering teams. We're currently working on how we can leverage the latest in large language model technologies to provide copilot functionality for case managers in our return-to-work product. This is exciting as we believe we can add massive efficiencies that improve outcomes for many jobseekers. 2. What are you most passionate about in your current and/or past roles? At ReadyTech, we have many teams building many complex systems and are constantly growing. I enjoy the challenge of scaling a high performing technology organisation. I have always loved building software. My current role in leadership doesn't allow for much time on the tools but I do have some side projects which keep me hands on after hours. One is www. addressable. dev, which provides a simple RESTful API for address autocompletions in Australasia. 3. Is there anything in particular about Rollbar that has kept you a loyal user all this time? I've used Rollbar in all my apps for 10+ years. What is great about Rollbar is that it works just as well for a relatively simple web app like Addressable as it does... --- ### How to Fix the “List Index Out of Range” Error in Python Split() > When accessing an index that does not exist within the valid range of entries in a list in Python, the "List Index Out of Range" exception is raised. - Published: 2023-08-04 - Modified: 2023-08-17 - URL: https://rollbar.com/blog/how-to-fix-list-index-out-of-range-in-python/ - Categories: Code Tutorials, Python - Tags: Python One of the most common operations in Python is splitting strings into lists based on a specified delimiter. However, when using split, you may encounter the error List Index Out of Range . This guide will unpack what this error means, why it occurs, and some common strategies to prevent it. What Causes the “List Index Out of Range” Error 1. Incorrect Index Usage This happens when using a negative index that exceeds the range of valid negative indices or trying to access an index greater than or equal to the length of the list of substrings. Example code: Incorrect Index Usage # Incorrect index usage causing the error sample_string = "apple,banana,mango" delimiter = ',' # Splitting the string into a list of substrings fruits = sample_string. split(delimiter) # Accessing an index greater than or equal to the length of the list print(fruits) In the above example, the sample_string is split using the delimiter , . As a result, the split method returns a 3-element list . Now, when accessing an element at index 5 in the list of fruits, it results in the List Index Out of Range error because index 5 exceeds the valid range of indices and causes the IndexError to be raised. Output: Traceback (most recent call last): File"C:\Users\name\AppData\Local\Programs\Python\Python311\check. py", line11, in print (fruits IndexError: list index out of range 2. Invalid or Missing Delimiter Using an invalid delimiter for the split operation leads to an incomplete or incorrect split, and if the delimiter doesn't exist,... --- ### Stacktrace Enhancements - Code Context in each Traceback Frame - Published: 2018-10-26 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/stacktrace-enhancements-code-context-in-each-traceback-frame/ - Categories: product - Tags: stacktrace Rollbar item stacktrace has a new UI and this change was done to support the new and advanced stacktrace. Users hosting their code on GitHub, GitLab or Bitbucket can now view code context within each frame of the stacktrace! Code context is a new feature in stacktrace through which we show additional lines of code for each entry in a traceback, saving you the trouble of jumping to your source code to figure out where exactly an exception occurred. One of our lovely engineers decided to demonstrate the benefits of the new stacktrace into her workflow. Of course if you're already well aware of the benefits, feel free to check out How to set up code context for your project in our docs. Debugging stacktrace without the code context Let’s go through a Rollbar item where I actually used the code context in the new stacktrace to fix a bug quickly (Easter egg - I realized this was a bug IN the code context feature itself! ) The Rollbar title/exception message for this item reads - AttributeError: 'SCMRepoNotAccessible' object has no attribute 'api_name'. From this, I know that SCMRepoNotAccessible. api_name has failed. From working on this feature, I know that SCMRepoNotAccessible is a custom exception. Now I take a look at the last frame of the stacktrace. From here I see the exact line of code where the error occurred - error_data = e. api_name. Based on this information solely, here's my hypothesis - It looks like we tried to... --- ### Nicholas's story with Rollbar > Rollbar continues to be an invaluable tool in my day to day work at AppFolio. I have specifically enjoyed their responsiveness when I have encountered issues with the product. Recently, I was most impressed with Rollar's UI redesign as it showed a dedication to providing the best possible user experience. I often tell the story of when Rollbar first released the new UI that I encountered a bug and reported it on a Sunday to then have that bug fixed and in production the very next day! - Published: 2023-08-02 - Modified: 2024-04-16 - URL: https://rollbar.com/blog/nicholas-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Nicholas L. Staff Software Engineer Nicholas has now been using Rollbar for 100 months! 1. What company do you work for (describe the product/service) and what projects are you working on there? I currently work for AppFolio and I work specifically on the payment processing platform. 2. What are you most passionate about in your current and/or past roles? Working in payment processing is a uniquely challenging space in software development; It requires a level of attention to detail that is often far higher than most other spaces due to the precision required. This is the type of environment I thrive in as I am passionate about creating a consistent and dependable experience to the customer by developing a highly available, robust, and fault tolerant system. Using Rollbar, my team and I have been able to efficiently address issues in a timely manner as it is one of few irreplaceable tools we use to diagnose problems in real time. 3. Is there anything in particular about Rollbar that has kept you a loyal user all this time? Rollbar continues to be an invaluable tool in my day to day work at AppFolio. I have specifically enjoyed their responsiveness when I have encountered issues with the product. Recently, I was most impressed with Rollar's UI redesign as it showed a dedication to providing the best possible user experience. I often tell the story of when Rollbar first released the new UI that I encountered a bug and reported it on a... --- ### How to Monitor Errors in Magento 2 the Easy Way - Published: 2018-10-25 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/how-to-monitor-errors-in-magento-2-the-easy-way/ - Categories: Code Tutorials, PHP - Tags: PHP Magento is the largest open-source eCommerce platform in the world, used by more than 250,000 merchants. While Magento makes setting up a store easier, there is complexity with custom plugins and extensions, and custom site behavior. Sophisticated stores also introduce more opportunity for problems with errors, exceptions, bugs, performance, and more. A critical production issue might not just cost you a sale, but also customer trust. Errors can affect your business in surprising ways. To avoid impacting customers, your team needs visibility into problems that affect user experience to fix issues as quickly as possible. In this post, we’ll show you how to enable exception printing and monitor errors in Magento 2 applications, both using the native exception log and the popular error monitoring solution Rollbar. Rollbar will give you an overview of all the errors happening on your store, how many customers are affected, and debugging information to find the root cause. We will walk you through the process of setting up Rollbar with Magento 2. We’ve created an example app that will trigger an exception when the user clicks on a button. The error message is recorded on Rollbar with a stack trace so you can see the exact line of code that caused the error. Native exception handling in Magento 2 Magento 2 gives you exception logs in a file by default. If you get an error message that says “There has been an error processing your request, Magento exception printing is disabled by default for security... --- ### André story with Rollbar > Most of our applications use Ruby. Adding Rollbar to an application and seeing errors on the UI or sending notifications to our Slack channels is plug-and-play. It just works. - Published: 2023-08-02 - Modified: 2024-04-16 - URL: https://rollbar.com/blog/andre-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories André Luis Leal Cardoso Junior Principal Software Engineer André has now been using Rollbar for 100 months! 1. What company do you work for (describe the product/service) and what projects are you working on there? I work at RD Station, one of the largest SaaS companies in Latin America. I spend most of the time working on RD Station Marketing. Which is a marketing automation tool. Our customers can manage Email Marketing campaigns, landing pages, analytics, leads, etc. We handle tons of processes and data from our customers. 2. What are you most passionate about in your current and/or past roles? I'm crazy about software health and architecture. How can we build something that will need to keep evolving fast, have new features, and will be available for a long time, while still being uncomplicated for new software engineers. 3. Is there anything in particular about Rollbar that has kept you a loyal user all this time? We started using Rollbar for its simplicity and price back when we used to host our services on Heroku. Most of our applications use Ruby. Adding Rollbar to an application and seeing errors on the UI or sending notifications to our Slack channels is plug-and-play. It just works. Over time we also had to learn some valuable lessons. For example, grouping and managing the volume of errors is a must. An application that throws thousands of exceptions without care may be a maintenance hell and hold a lot of technical debts. The service... --- ### Enhancements to the Rollbar Deploy API - Published: 2018-10-09 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/enhancements-to-the-rollbar-deploy-api/ - Categories: product - Tags: monitor Rollbar introduced Versions a few months ago, providing developers a way to easily see whether their most recently deployed code changes are introducing new or reactivated errors. As a follow-on improvement, we've updated our Deploys API so you can notify Rollbar immediately when starting a deploy as well as when it completes. Notifying Rollbar immediately when a deploy starts will ensure that notifications about the new version will include as much information as possible, including the number of commits since the previous deploy as well as the user who started the deploy. Read on to see how to use the updated Deploy API to notify Rollbar when your deploy starts and finishes. Starting a Deploy For this post I'll show you how to notify Rollbar using a Bash deploy script, but any tool that is able to make HTTP calls can be used to report deploys to Rollbar. The example relies on curl and jq, both of which can be downloaded and intalled for free, and come pre-installed in many environments. At the start of your deploy script, you'll need to send a POST request to report a new deploy and save the deploy_id into a variable so it can be used later: # ... # set variables for the POST command ROLLBAR_ACCESS_TOKEN=YOUR_POST_SERVER_ITEM_ACCESS_TOKEN_HERE ENVIRONMENT=development GIT_SHA=YOUR_GIT_SHA_HERE # ... ROLLBAR_DEPLOY_ID=`curl https://api. rollbar. com/api/1/deploy/ \ --form access_token=$ROLLBAR_ACCESS_TOKEN \ --form environment=$ENVIRONMENT \ --form revision=$GIT_SHA \ --form local_username=$USER \ --form status=started | jq -r '. data. deploy_id'` # Additional steps for your deploy... Running deploys... --- ### Nick's story with Rollbar > I am able to quickly and easily see what is going wrong with the platform and trace the errors across multiple environments when needed. A quick glance at the dashboard or items list can tell me if a deploy went smoothly, if the system is having some broader issues, or if users may be experiencing a degraded experience. - Published: 2023-08-02 - Modified: 2024-04-16 - URL: https://rollbar.com/blog/nicks-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Nick Mathis Lead Software Architect Nick has now been using Rollbar for 100 months! 1. What company do you work for (describe the product/service) and what projects are you working on there? I've worked with a few companies and projects that have used Rollbar. The largest and longest project was a fintech product focused on modernizing check writing. That was a Ruby on Rails project with a 10+ year history. Currently I'm working for a local startup that is focused on a B2B application for an internal process. We're also using Rollbar and it's been helpful, even pre-launch, to see what errors are happening in remote environments. 2. What are you most passionate about in your current and/or past roles? I love making software, or helping others make software that solves users needs and is a joy to use. Not all software is solving exciting problems, but even the most mundane task should leave users with a sense of "this worked, I had no hurdles, and everything was easy", even if the task is inherently boring or not exciting. Seeing users as people. and not just a feature consumer, helps tremendously. 3. Is there anything in particular about Rollbar that has kept you a loyal user all this time? I am able to quickly and easily see what is going wrong with the platform and trace the errors across multiple environments when needed. A quick glance at the dashboard or items list can tell me if a deploy went smoothly,... --- ### Error Monitoring in Symfony - Published: 2018-09-27 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/error-monitoring-in-symfony/ - Categories: Code Tutorials, PHP - Tags: SDK Symfony is a PHP model-view-controller framework used to develop web applications. The main reasons Symfony has acclaimed fame among the developer community are its database engine compatibility, its faster development and its robust system. These features make it easy to develop and customize web applications. To make your web application successful, you should consider how user experience is affected by the inevitable errors that pop up in production. Customers can walk away from a purchase or churn out from a subscription when applications do not run properly. A fast response to critical problems is essential. To minimize customer impact, it is important to track and fix issues quickly. In this tutorial, we’ll show you how to add native error handling so you can capture handled and unhandled errors. Doing so lets you present a clear message to the user as well as track the error to prioritize fixes. Then, we’ll show you how to monitor errors using Rollbar. Rollbar is an error monitoring service that tracks errors centrally and gives you tools to better monitor and troubleshoot problems in production. We'll show a working example for Symfony 3, but Rollbar also supports Symfony 4. Native error handling in Symfony 3 Starting at the most basic level, error handling can be achieved using try, catch and finally statements. These statements can be used to handle caught exceptions in Symfony components. try { $value = 5 / 0; } catch (\Exception $e) { return $e->getMessage } Symfony 3 also offers multiple approaches... --- ### David's story with Rollbar > I've used Rollbar for over 5 years now, across different roles and when I switched positions, it was one of the first tools I set up. It's enabled us to move quickly, secure in the knowledge that if any errors occur we will be the second to know.We're big fans of the slack integration -- and our incident response team leverages that heavily. - Published: 2023-08-01 - Modified: 2024-04-16 - URL: https://rollbar.com/blog/davids-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories David Bell Senior Software Engineer David has now been using Rollbar for 100 months! 1. What company do you work for (describe the product/service) and what projects are you working on there? I'm a senior software developer who currently works for Bold Collective, who provide digital ad services. The main project I'm working on is our ad server, which serves millions of ad impressions and clicks a month. We also perform real time fraud detection and provide analytics on our traffic. 2. What are you most passionate about in your current and/or past roles? I'm most passionate about problem solving and, in my current role, ensuring that our traffic is flowing through correctly and quickly. 3. Is there anything in particular about Rollbar that has kept you a loyal user all this time? Rollbar is incredibly helpful in minimizing downtime, resolving errors, monitoring warnings and preventing disruption to our traffic flow, which is ultimately the most important thing for Bold. I've used Rollbar for over 5 years now, across different roles and when I switched positions, it was one of the first tools I set up. It's enabled us to move quickly, secure in the knowledge that if any errors occur we will be the second to know. We're big fans of the slack integration -- and our incident response team leverages that heavily. The different message levels are an incredibly useful tool, enabling us to zoom in on behaviour when necessary. --- ### Error Handling in React Native > Learn how to catch unhandled exceptions in React Native, perform tasks to provide the best experience for users, and handle these errors using our SDK. - Published: 2018-09-20 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/error-monitoring-in-react-native/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript React Native has recently gained popularity among the mobile app developer community due to its cross platform compatibility, quick development cycle and better user experience. It is easier to develop, build and maintain apps using React Native. For mobile apps, business success or failure is determined by user experience and retention rate. The retention rate can drop immediately if the application does not work properly, causing customers to switch to other apps or leave poor reviews in the app store. A fast response to critical errors is essential to minimize customer impact. Let’s start by covering how to handle errors in vanilla React Native. We will then show you how Rollbar is a game changer to get better error monitoring. How to handle errors in React Native Error handling in vanilla JavaScript can be achieved using try, catch and finally statements. You can use these statements to handle caught exceptions in React Native components. try { var test; test. color; } catch(err) { // handle error here } React Native has its own mechanism to handle uncaught exceptions. This allows you to track the error, display a message to the user, or attempt to recover. See the example below: const previousHandler = ErrorUtils. getGlobalHandler; ErrorUtils. setGlobalHandler((error, isFatal) => { // handle the error here console. log(error); }); Logging to the console works fine during development, but there is no out-of-the-box way to track these errors centrally after they are installed. This is essential to see how many of your users... --- ### Sebastian's story with Rollbar > Over the years, Rollbar has been a progressive partner, constantly evolving and improving with new features and better UX. I love the way we're able to integrate Rollbar as part of our engineering processes and with our other tools, to streamline our operations. - Published: 2023-08-01 - Modified: 2024-04-16 - URL: https://rollbar.com/blog/sebastians-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Sebastian Wallin CTO and co-founder of Castle Sebastian has now been using Rollbar for 100 months! 1. What company do you work for (describe the product/service) and what projects are you working on there? I'm the CTO and co-founder of Castle (castle. io). I oversee our technical platform and work closely to our customers to make sure we develop our product in the right direction 2. What are you most passionate about in your current and/or past roles? I'm passionate about using technology and software to solve important problems and change the ways we work for the better. 3. Is there anything in particular about Rollbar that has kept you a loyal user all this time? Over the years, Rollbar has been a progressive partner, constantly evolving and improving with new features and better UX. I love the way we're able to integrate Rollbar as part of our engineering processes and with our other tools, to streamline our operations. --- ### Introducing Versions - Published: 2018-08-31 - Modified: 2021-07-19 - URL: https://rollbar.com/blog/introducing-versions/ - Categories: product - Tags: monitor We built Versions for customers who are adopting software development practices like Continuous Delivery. One important habit to cultivate when you're seeking to adopt Continuous Delivery is to deploy early and often. This is easier to do when you have a tool like Rollbar that allows you to see all production errors instantly and quickly prioritize and debug them as needed. With Versions, we're making it even easier for you to use Rollbar to monitor errors from code revisions you've just deployed. {: . highlightbox} If you haven't heard about All Items View - another Advanced feature we've broadly released recently - I encourage you check out this post. What Versions is for Versions allows you to see all new and reactivated errors from each deployed code version across multiple projects in your account, from a single screen. This feature comes in handy if you deploy continuously or have multiple code versions running in production. With Versions, it’s easy to tracking how the quality of each deployed version improve or regress over time. Triaging becomes easier too, because each version entry comes with information on who deployed it, which errors have been resolved, and which have not. Versions is deploy pattern agnostic, so it works with any pattern you use, including canary, blue/green, or anything else. It gives you the information that helps you decide whether to do a full rollout or a rollback. In addition to the account-level Versions, you also get a project-level Versions feed for each of... --- ### Introducing All Items View - Published: 2018-08-30 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/introducing-all-items-view/ - Categories: product - Tags: error-feed Increasingly more software teams - ourselves and our customers included - are adopting practices like microservices and/or Continuous Delivery. What this typically means in terms of how our customers use Rollbar is two-fold: First, they set up multiple projects in Rollbar. A common setup is to have one project for each code repository of a deployable service. Second, they deploy to production often. Each time they deploy a release, they monitor Rollbar Items feed closely for errors. We built the All Items View to make error monitoring much easier for those using Rollbar in such ways. What All Items View is for The All Items View is very useful when you want a specific view across projects, because you can apply filters or search across them to create that view. For example, you're a Front-end Engineer and you have 10 different Rollbar projects, and you want to see specifically just the JavaScript errors from those ten. It's also handy when you are tasked to monitor multiple Rollbar projects as part of a deployment, because you can see not only the errors across projects, but also if they've been assigned to anyone and triage accordingly - all from a single screen. Sometimes errors from different projects may be correlated. A client-side error may result from a database error, and so on. All Items View makes it easier for you to notice such correlations. Try it yourself All Items View is one of two new features we've been incubating in Labs for... --- ### When to Use Try-Except vs. Try-Catch > Python uses try-except, whereas languages like Java and C++ use try-catch. Here are the parallels and discrepancies you need to know to master both. - Published: 2023-07-31 - Modified: 2023-07-31 - URL: https://rollbar.com/blog/when-to-use-try-except-vs-try-catch/ - Categories: Code Tutorials, Java, Python - Tags: java, Python Are you confused when to use try-except versus try-catch? Both are popular mechanisms that gracefully handle unexpected situations. Both share a similar philosophy in syntax, where a block of code is 'tried,' and if an exception occurs, it's caught and handled in a designated way. There's one big difference between them though: try-except is for Python while try-catch is for Java. No matter what language you're more experienced in, here are the parallels and discrepancies you need to know to master both. How Are Try-Catch and Try-Except Blocks Similar? Both follow a similar syntactic pattern. You encase potentially error-prone code within a try block and then the catch and except blocks define actions to handle those errors. The syntax of the try-except block in Python is as follows: try: # some code here that might raise an exception except ExceptionType: # handle the exception here In Java, the syntax for the try-catch block is as follows: try { // some code here that might throw an exception } catch (ExceptionType e) { // handle the exception here } What Are the Differences Between Try-Catch and Try-Except? Besides the syntax difference in how you write each, there is also an additional else code block available in Python that is different. Python try: Code that might cause an exception. except: Code that handles the exception. else: Code that runs if the try block does not raise an exception. finally: Code that always runs, whether an exception occurred or not. Java try: Code... --- ### Error Monitoring in iOS - Published: 2018-08-30 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/error-monitoring-in-ios/ - Categories: Code Tutorials - Tags: mobile In mobile apps, it’s important to monitor errors so you can understand your user’s experience. Your team should know quickly when there are problems with the app itself or your backend services so you can fix the issue before more customers are affected. We’ll show you how to handle errors in iOS apps. We’ll then show you how Rollbar error monitoring can give you better visibility into errors and help you troubleshoot them faster. Native error handling in iOS There are multiple ways to implement exception handling in Objective-C and Swift. We’ll focus on Swift in our examples as its a newer language. You’ll commonly use NSError to create runtime errors and use do-catch statements to handle them: do { throw NSError(domain: "my error description", code: 42, userInfo: ) } catch let error as NSError { // handle the error print("Caught NSError: \(error. localizedDescription), \(error. domain), \(error. code)") } Swift also offers a mechanism to handle uncaught exceptions. This allows you to track the error, display a message to the user, or attempt to recover. See the example below. NSSetUncaughtExceptionHandler { exception in // handle the error print("Uncaught exception", exception) } This lets you easily track the error in logs during development. However, it doesn’t offer an easy way to track errors once the app is installed on your customer’s phone. Error monitoring with Rollbar Rollbar offers an easy way to track exceptions and errors in your apps. It automatically captures errors that occur anywhere in the app, and reports... --- ### Error tracking with Vue.js - Published: 2018-08-09 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/error-tracking-with-vue-js/ - Categories: Code Tutorials, JavaScript - Tags: error-handling, vuejs Vue (pronounced /vjuː/, like view) is a progressive framework for building user interfaces on the web. Vue can power sophisticated single-page applications and is often used in combination with modern tooling and supporting libraries. We’ll show you how to add error handling in a Vue application to capture caught and uncaught errors. This gives you an opportunity to recover and update what’s presented to the user, as well as track the error to prioritize fixes. We’ll also show how to monitor errors in production using Rollbar. How to handle errors in vanilla Vue You can catch exceptions in vanilla JavaScript using basic try, catch and finally statements. You can use these statements to handle caught exceptions in Vue components. In this example, we are simply logging to the console. try { JSON. parse("non-JSON data") } catch(e) { console. log('Exception: ', e) } Vue provides a standard API to add a custom errorHandler. You should configure this on your root Vue instance, typically in a main. js file. However, it only captures errors that occur during component rendering. That means it won’t catch errors that happen later as a result of user behavior, etc. Vue. config. errorHandler = err => { console. log('Exception: ', err) } To handle errors globally across your entire page, you can add a handler to the onerror function on the window. window. onerror = function(message, source, lineno, colno, error) { console. log('Exception: ', error) } While this is great for handling errors during development, when you... --- ### Top 10 PHP errors from 1,000+ projects (and how to avoid them) - Published: 2018-07-30 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/top-10-php-errors-from-1000-projects-and-how-to-avoid-them/ - Categories: topics - Tags: Top Errors To give back to our community of developers, we looked at our database of thousands of projects and found the top 10 errors in PHP apps. We’re going to show you what causes them and how to prevent them. Avoiding these "gotchas" will make you a better developer. Because data is king, we collected, analyzed, and ranked the top 10 PHP errors. Rollbar collects all the errors for each project and summarizes how many times each one occurred. We do this by grouping errors according to their fingerprints. We group two errors if the second one is just a repeat of the first. This gives users an excellent overview instead of an overwhelming big dump like you’d see in a log file. We focused on the number of projects experiencing an error because we wanted to see the errors that affect the most developers in different companies. If we looked only at the number of times each error occurred, high-volume customers could overwhelm the data set with errors that are not relevant to most readers. The errors below are the ones most likely to affect you and your company. We'll describe each error in more detail starting with the most common. At the end, we'll share best practices to avoid shipping them to production. 1. PHP Parse error: syntax error, unexpected end of file A parse error occurs when code that contains a syntax error is executed. Syntax errors needn’t be large, not complicated, as the following example demonstrates. $test=... --- ### How to Resolve ChatGPT Rate Limit Errors > Bypass rate limit woes with our detailed guide. Discover how to monitor and manage your requests and troubleshoot issues without losing a beat in your tasks. - Published: 2023-07-31 - Modified: 2023-10-16 - URL: https://rollbar.com/blog/chatgpt-api-rate-limit-error/ - Categories: Code Tutorials, Java - Tags: java, OpenAI Ever get overwhelmed by a chatty best friend asking a lot of questions? That's what the ChatGPT API "Over the Rate Limit" error is like. It's telling you, "Woah, slow down! Let me take a sip of water before we continue. " In this guide, we will shed light on the rate limit and show you several ways to make your API requests more efficient to ensure you face as few interruptions as possible. What is the Rate Limit? ChatGPT’s API imposes a constraint on the number of times you can send requests or messages to the server within a given time period. This limitation is called the rate limit. There are actually two rate limits: RPM (requests per minute) TPM (tokens per minute) The below table showcases the default rate limits for ChatGPT’s API. Text & Embedding Chat Edit Image Audio Free trial users 3 RPM 150,000 TPM 3 RPM 40,000 TPM 3 RPM 150,000 TPM 5 images / min 3 RPM Pay-as-you-go users (first 48 hours) 60 RPM 250,000 TPM 60 RPM 60,000 TPM 20 RPM 150,000 TPM 50 images / min 50 RPM Pay-as-you-go users (after 48 hours) 3,500 RPM 350,000 TPM 3,500 RPM 90,000 TPM 20 RPM 150,000 TPM 50 images / min 50 RPM However, there is also an option to fill out the OpenAI API Rate Limit Increase Request form in order to increase your limit, in case you have higher rate limit requirements. What causes the “Over the Rate Limit” error? Simply put,... --- ### Error monitoring in Golang - Published: 2018-07-03 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/error-monitoring-in-golang/ - Categories: Code Tutorials - Tags: golang Rollbar is proud to announce its error monitoring SDK for the Go language (aka Golang). It’s an open source programming language originally created by Google and is growing in popularity. It’s a low-level language like C, but also offers garbage collection, an easy-to-use package system, and other features. If you’re used to languages like Java or Javascript, then Go’s way of handling errors will be new to you. We will give a brief introduction on how error handling works in Go, then cover how you can monitor errors in production apps. Using the error type Go uses an error type to indicate an abnormal state. For example, the os. Open function returns an error value when it fails to open a file. Many people think this is more clear than throwing an error or returning a nil value. The error type is an interface that you can implement to create your own errors. The error interface requires an Error method which returns a string. This allows you to print errors out in the console or in a log message. Specific error implementations might have additional methods. type error interface { Error string } Go also allows you to implement functions with multiple return values. This is commonly used to provide one value upon success, and a second value upon an error. Let’s dive into an example showing how we can handle multiple return values. Below, the calculateSqrt function will return an error when you pass a negative number. That’s because... --- ### How to Use the ChatGPT API with Java > Today we're taking a deep dive into the fusion of two giants: the revolutionary ChatGPT and the long-standing warhorse of programming, Java. - Published: 2023-07-26 - Modified: 2023-08-18 - URL: https://rollbar.com/blog/how-to-use-chatgpt-api-with-java/ - Categories: Code Tutorials, Java - Tags: java, OpenAI Imagine harnessing the power of ChatGPT's human-like responses right from your Java code! It'd be like adding a supercharger to your already powerful engine. This step-by-step, hands-on guide (with full example code at the end) will show you exactly how to integrate, interact, and leverage this union so you can build smarter applications. Before you know it, you'll have Java and ChatGPT playing nice to deliver a user experience that's nothing short of mind-blowing. Step 1: Set up the development environment Install the Java Development Kit (JDK) if not already installed. Set up a Java project using your favorite IDE or command-line tools. Step 2: Sign up for the OpenAI API Go to https://beta. openai. com/signup/ and sign up to get an API key that you will use to authenticate your requests. Sign up for OpenAI API Step 3: Write Java code to connect to the OpenAI API Import necessary Java classes: Import the required classes for handling HTTP connections and I/O operations. Create a class named ChatGPTAPIExample: The main class where the integration code is written. Define the ChatGPT method: The method takes the user prompt as input and returns the response from ChatGPT. It sends the request to the ChatGPT API endpoint and then extracts the response. Define the necessary parameters: URL: The URL for the ChatGPT API endpoint. OpenAI API key: The OpenAI API key which is obtained in step 2. Model: The ChatGPT model that will be used. For example, gpt-3. 5-turbo . Create an HTTP... --- ### Errors on the world’s top 100 websites and how to avoid them - Published: 2018-06-13 - Modified: 2023-04-27 - URL: https://rollbar.com/blog/errors-on-the-worlds-top-100-websites-and-how-to-avoid-them/ - Categories: topics - Tags: Top Errors When you think of the top 100 sites in the world, you think of high-traffic domains and pages coded to perfection. In fact, even the most popular sites in the world have errors hidden behind the scenes that are still visible in your browser’s developer tools. These can affect your experience as a user directly, create inaccurate tracking data and security vulnerabilities, and even lose the company revenue. We found that most of the top 100 sites had several errors which could be easily monitored and prevented by their IT team. If errors happen on these popular sites, it can happen on your company’s website too. We’ll show you the most common errors and how to avoid them. {: . imgcaption} Overview of Errors found on the Top 100 Alexa Sites How We Found The Errors We used Alexa's ranking to identify the top 100 websites based on number of visitors. We visited each of these websites using the popular Google Chrome browser and disabled all extensions to capture the most native experience. We then recorded which errors displayed in the developer tools console. You can see these errors yourself by opening your browser’s developer tools feature. In Chrome it’s in the menu under More tools -> Developer tools. Here is what it looks like at Huffington Post: {: . imgcaption} Chrome Developer Tools showing a list of HuffingtonPost errors That’s a mess to read! We’ll make it easier to understand by grouping these errors into common themes. Then, we’ll... --- ### How to Use the ChatGPT API with Golang > This guide will take you step-by-step on how to bring together the text-generating wizardry of ChatGPT with the simplicity and efficiency of Golang. - Published: 2023-07-26 - Modified: 2023-08-18 - URL: https://rollbar.com/blog/how-to-use-chatgpt-api-with-golang/ - Categories: Code Tutorials, GoLang - Tags: golang, OpenAI ChatGPT is like that cool, incredibly talented artist every band wants to collaborate with. When you need something extra, something that will give your application a bit of zing, that's where ChatGPT comes in. It's got that rhythm that gets feet tapping. This guide will take you step-by-step on how to bring together the text-generating wizardry of ChatGPT with the simplicity and efficiency of Golang, opening up exciting new possibilities for crafting more intelligent applications. Before getting in the weeds with the steps though, here is the complete code block to call ChatGPT within Golang and get a response. package main import ( "encoding/json" "fmt" "log" "github. com/go-resty/resty/v2" ) const ( apiEndpoint = "https://api. openai. com/v1/chat/completions" ) func main { // Use your API KEY here apiKey := "YOUR API KEY HERE" client := resty. New response, err := client. R. SetAuthToken(apiKey). SetHeader("Content-Type", "application/json"). SetBody(mapinterface{}{ "model": "gpt-3. 5-turbo", "messages": interface{}{mapinterface{}{"role": "system", "content": "Hi can you tell me what is the factorial of 10? "}}, "max_tokens": 50, }). Post(apiEndpoint) if err ! = nil { log. Fatalf("Error while sending send the request: %v", err) } body := response. Body var data mapinterface{} err = json. Unmarshal(body, &data) if err ! = nil { fmt. Println("Error while decoding JSON response:", err) return } // Extract the content from the JSON response content := data. (interface{}). (mapinterface{}). (mapinterface{}). (string) fmt. Println(content) } Output: PS D: \chatgpt go> go run chatgpt. go Yes, the factorial of 10 is calculated as follows: 10! = 10... --- ### Data, Privacy, and Compliance - How We Prepared for GDPR - Published: 2018-05-21 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/data-privacy-and-compliance-how-we-prepared-for-gdpr/ - Categories: product - Tags: security Over the past couple of months it has been very difficult not to overhear conversations about GDPR and its implications on how we build and maintain software. Some were particularly memorable. "No, I can't fire you right now, not when we're a month away from GDPR! " - Random person overheard yelling on the phone in San Francisco At Rollbar, we've been working hard to be ready. This is a story about how we prepared for GDPR. What is GDPR? GDPR{:target="_blank"} is a new, EU-wide regulation that replaces the 1995 EU Data Protection directive. It strengthens the privacy and control EU residents have over their personal data, and is broad in reach because any organizations that process data on EU residents must be compliant, even if they aren't based in the EU. Failure to comply may result in severe penalties of up to 4% of an offending organization's global revenue. GDPR challenges To us, GDPR changes everything. We've gone from a world where data is always an asset, to one where data is both an asset and a liability. This fundamentally changes how we think about collecting, keeping, and deleting data, and where the value for our customers is in each of those things. We were faced with a few challenges in this project, including: Hard deadlines We practice agile software development. What that means to us is while we have a rough idea of when we'd like to release a feature, the exact release date depends on the progress... --- ### Usage Notifications > We're thrilled to announce the launch of Rollbar's latest initiative to provide greater transparency and control over your occurrences. Our team has worked hard to address customers' feedback and concerns based on your occurrences and overages. We are excited to introduce a new level of observability to our platform. - Published: 2023-07-25 - Modified: 2023-07-26 - URL: https://rollbar.com/blog/account-usage-notifications/ - Categories: product - Tags: Usage Notifications Introducing Rollbar’s Usage Notifications Email and Slack Integration We are pleased to announce the latest upgrade to Rollbar’s usage visibility tools - a comprehensive notification system. Following our commitment to continuous improvement, this new feature will provide immediate alerts about usage milestones via email and Slack. The newly added 'Notifications' button can be found at the top right corner of the Rollbar usage page. It is the link to a slide-out panel with two distinct tabs, 'Email' and 'Slack. ' These sections enable account owners to customize and manage alerts, strengthening awareness and control over the usage status. Notably, notifications are triggered when usage hits critical milestones: 80%, 90%, 95%, and 100% of the account’s occurrence allotment. Users will find that the account owner's email is pre-set to receive notifications within the' Email' tab. However, the system is flexible to accommodate additional recipients. Up to ten more emails can be added simply by entering each address into the input field and selecting 'Add. ' Importantly, these additional emails are not required to be linked with other Rollbar account users. If the need arises to remove an email from the list, the process is straightforward: identify the email and click the adjacent red 'x' button. On the other hand, the 'Slack' tab caters to managing notifications sent via Slack. Before setting this up, ensuring that your Rollbar account is connected to your Slack workspace is crucial. After confirming that the Rollbar Slack bot is a member of the selected channel, you... --- ### Monitoring Errors in Android Apps - Published: 2018-05-09 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/monitoring-errors-in-android-apps/ - Categories: Code Tutorials, Java - Tags: java When developing mobile apps it’s important to monitor errors so that you can understand your user’s experience. You need deeper insight than just a crash report because errors could cause a degraded user experience or a drop in key behavioral metrics. Your team needs to know quickly when there are production problems either with the app itself or with your backend services so you can fix the issue before more customers are impacted. Rollbar’s Android SDK lets you track and analyze errors that happen in your Android native applications, and even trace problems to backend services and third party APIs. It provides you with a live error feed from your application, including complete stack traces and contextual data to debug errors quickly. We also track the environment the error is coming from (prod or staging), the server that generated the error, and even the user’s session data. You can then quickly assign ownership of errors to your team and track when they are fixed. Learn more about Rollbar’s product features for Android. Below, you can see that we've created an example app that triggers an exception when the user clicks on a button. The error message is tracked in Rollbar, including a stack trace where you can see the line of code that caused the error. Rollbar captures errors that occur anywhere in the app. You can follow along with our example using the source code on GitHub. Adding Rollbar in your code Visit https://rollbar. com and sign up for... --- ### Alison's story with Rollbar > Rollbar fulfills an important need for us with its grouping of items, so that we can track over long periods of time. This allows us to see trends, when issues started, how many of our customers are affected. We also find the integrations very helpful with slack messages of new items and ability to create jira issues with all the details from rollbar automatically included. - Published: 2023-07-24 - Modified: 2024-04-16 - URL: https://rollbar.com/blog/alisons-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Alison Gianotto Founder / Chief Mohawk Officer Alison has now been using Rollbar for 100 months! 1. What company do you work for (describe the product/service) and what projects are you working on there? I am the founder, lead developer and CEO of Grokability, Inc. We make the open source IT asset management software Snipe-IT (https://snipeitapp. com), and the email address validation system GoodForms (https://goodforms. com). Snipe-IT has been around for 10 years, and aims to provide a low-cost IT asset management platform that you don't have to be a rocket surgeon to use, but is flexible enough to customize to your own bespoke IT needs via our powerful REST API. You can download and run Snipe-IT yourself for free, or you can sign up for a hosted version where we take the hassle out of maintaining yet another server. GoodForms is an email address validation and certification platform that allows websites that contain email address forms ensure that the emails they collect are actually deliverable. With one line of javascript, you can be sure that the email addresses submitted are real, which prevents accidental typos (because who among us hasn't fat-fingered their own email before) and also protects your IP address reputation. 2. What are you most passionate about in your current and/or past roles? Open source is critical to Grokability, so I'm very passionate about open sourcing everything we can while building an ethical, compassionate company. I've been a contributor in open source for over 25 years and... --- ### Cameron's story with Rollbar > Rollbar fulfills an important need for us with its grouping of items, so that we can track over long periods of time. This allows us to see trends, when issues started, how many of our customers are affected. We also find the integrations very helpful with slack messages of new items and ability to create jira issues with all the details from rollbar automatically included. - Published: 2023-07-21 - Modified: 2024-04-16 - URL: https://rollbar.com/blog/camerons-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Cameron Priem Chief Technology Office (CTO) Cameron has now been using Rollbar for 100 months! 1. What company do you work for (describe the product/service) and what projects are you working on there? I work for Pet Loyalty, we produce easy-to-use software that simplifies animal shelter operations. We are used by animal welfare organizations world wide to assist them in caring for animals at their shelter, fostering animals, adopting them out online and helping lost pet find their way back to their owner. We also include some people management tools such as volunteer management, donor management and foster parent coordination. One of our flagship products is ShelterBuddy that animal welfare organizations use as their management tool and we use ShelterBuddy with Rollbar. 2. What are you most passionate about in your current and/or past roles? We are all very passionate about animal welfare, and we are very proud to be working for a company that helps to make a difference in saving animals lives. Many of our team members have pets of their own, but we also foster animals while they need some time to find their "furever" home, volunteering at our own local shelters and assisting in rescuing wildlife animals in need. 3. Is there anything in particular about Rollbar that has kept you a loyal user all this time? Rollbar fulfills an important need for us with its grouping of items, so that we can track over long periods of time. This allows us to see trends, when... --- ### Top 10 errors from 1000+ Ruby on Rails projects (and how to avoid them) - Published: 2018-04-18 - Modified: 2022-11-08 - URL: https://rollbar.com/blog/top-10-errors-from-1000-ruby-on-rails-projects-and-how-to-avoid-them/ - Categories: topics - Tags: Top Errors To give back to our community of developers, we looked at our database of thousands of projects and found the top 10 errors in Ruby on Rails projects. We’re going to show you what causes them and how to prevent them from happening. If you avoid these "gotchas," it'll make you a better developer. Because data is king, we collected, analyzed, and ranked the top 10 Ruby errors from Ruby on Rails applications. Rollbar collects all the errors for each project and summarizes how many times each one occurred. We do this by grouping errors according to fingerprinting. Basically, we group two errors if the second one is just a repeat of the first. This gives users a nice overview instead of an overwhelmingly big dump like you’d see in a log file. We focused on the errors most likely to affect you and your users. To do this, we ranked errors by the number of projects experiencing them across different companies. We intentionally looked at the number of projects so that high-volume customers wouldn't overwhelm the data set with errors that are not relevant to most readers. Here are the top 10 Rails errors: You’ve probably noticed some familiar faces in there already. Let’s dig in and take a look at the errors in a bit more detail to see what might cause them in your production application. We'll provide example solutions based on Rails 5, but if you’re still using Rails 4 they should point you in the... --- ### Albert's story with Rollbar > The availability or Rollbar libraries with all of our apps and environments makes it easy to have efficient and accurate error reporting at all times. We couldn't be happier with the features Rollbar has implemented and continues to implement. - Published: 2023-07-21 - Modified: 2024-04-16 - URL: https://rollbar.com/blog/alberts-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Albert Leao Founder Albert has now been using Rollbar for 100 months! 1. What company do you work for (describe the product/service) and what projects are you working on there? My name is Albert Leao I'm the founder of homesync. com, a social media management company that primarily helps real estate agents market their business online. We integrate with various social media platforms and offer content publishing tools, analytics, and ad-management. 2. What are you most passionate about in your current and/or past roles? With the advent of A. I. , we've been focused on providing high quality content generation and more advanced scheduling options. These new tools allow our clients to easily have first-rate, original, and converting content generated that is scheduled at the click of a button. When it comes to social media marketing we work closely with real estate agents, so we feel their pain when it comes to trying to market online. It's a full-time job to just keep up with the changes in social media (and recently there's been quite a lot of changes! ) so we work hard to make sure that not only do we simplify the process but that we deliver the smoothest possible experience. 3. Is there anything in particular about Rollbar that has kept you a loyal user all this time? One of the difficulties of depending on so many 3rd party applications is having to deal with issues that may arise unexpectedly. Rollbar has been our most powerful tool... --- ### 5 Surprising and Sneaky Ways Errors Impact Your Business - Published: 2018-04-16 - Modified: 2022-12-07 - URL: https://rollbar.com/blog/5-surprising-and-sneaky-ways-errors-impact-your-business/ - Categories: topics - Tags: error-monitoring Every app is imperfect and generates errors, but do you know how errors affect your users and business? When you look at logs for a large application, you might see thousands of errors per day and not know where to start. Even worse are errors that are not tracked by your application. They could be buttons that stop working, input that isn’t saved, or any number of other issues. Without proper error tracking, you are flying blind to these user experience problems. Unfortunately, developers who are deep in the code are not expected to understand how these errors impact users, and ultimately, their company’s finances. Even if they know of an error that should be fixed, it can be difficult to articulate why they should be fixed instead of developing a new feature. Here are five ways developers can advocate to management about the importance of fixing errors. User Experience Customers don't report the vast majority of errors they encounter in your product or website. That means you could miss a large percentage of problems if you aren’t tracking and addressing them proactively. If a customer experiences a critical error during a trial period or onboarding you might lose that customer before they even get started. Established customers may be more understanding, but repeated errors over time can lead to death from a thousand cuts. Knowing who was affected by a problem and proactively reaching out can turn a frustrated user into a devoted one. Shortcut co-founder and CTO Andrew... --- ### Arthur's story with Rollbar > It's always been a straightforward service to implement thanks to its integration with the Laravel framework. It is also one of my pinned tabs that I always have open and refer to multiple times a day. On the odd occasion, we have a customer-facing bug I usually find that me or the team is rolling out a fix before the customer has even gotten in contact.It's also a nice product to use, the integration with GitHub usually means the problem is displayed alongside the error message. - Published: 2023-07-21 - Modified: 2024-04-16 - URL: https://rollbar.com/blog/arthurs-story-with-rollbar/ - Categories: company, User Stories - Tags: User Stories Arthur Guy Head of Engineering Arthur has now been using Rollbar for 109 months! 1. What company do you work for (describe the product/service) and what projects are you working on there? I am the head of engineering at Vestd (www. vestd. com) and lead our engineering teams. We specialise in building share scheme and equity management solutions for companies allowing businesses to easily and safely issue shares and equity to their team and investors. Our products are complex with a lot of business rules and restrictions that come into play at various stages. We are currently working on some exciting new tools for our larger users to help them manage more things in one place. 2. What are you most passionate about in your current and/or past roles? It's probably a cliché but I enjoy the challenge of building systems that solve problems. I really try and get to the underlying domain representation when designing a system, the better I can manage this, the more flexible and long-lasting the solutions tend to be. Over the years this has morphed from tackling small problems on my own to guiding engineering teams to solve problems for big businesses and thousands of users, however, the approach has always been the same. At Vestd we are solving some really big problems and doing so in a way that hasn't been done before so we are having to forge our own path. This can be frustrating as others in this space approach things a... --- ### New Relic vs Scout: Which APM is right for you? - Published: 2018-04-05 - Modified: 2022-11-30 - URL: https://rollbar.com/blog/new-relic-vs-scout/ - Categories: product - Tags: APM This is a guest post by Derek Haynes from Scout, an APM that integrates with Rollbar. When New Relic launched ten years ago, web applications had a tendency to fail hard and in more obvious ways: Today, it's easier to build resilient apps, but they fail in more complex, unique, and subtle ways. These issues are time-consuming to track down. While several niche New Relic alternatives have appeared, they've focused on a lighter feature set versus solving these increasingly hard performance problems. What is new relic used for? New Relic is a Software as a Service offering that focuses on performance and availability monitoring. It uses a standardized Apdex (application performance index) score to set and rate application performance across the environment in a unified manner. What does new relic do? New Relic is observability software that teams use it to monitor the performance of their applications and infrastructure. New relic tracing New Relic APM provides trace visualizations designed to help you quickly understand why a specific request is slow, where an error originated, and where you can optimize your code to improve the experience for your customers. Unlike existing "New Relic Lite" alternatives, Scout approaches performance monitoring much like Rollbar's best-of-breed error monitoring. Scout is designed to drastically reducing the investigation time for these complex performance issues. Let's investigate a modern-day performance issue with Scout and compare the experience to New Relic. A sudden increase in response time You hop into Scout and see this chart: There's a clear... --- ### How to Handle the ChatGPT “Model is Overloaded” Error - Published: 2023-07-21 - Modified: 2023-08-18 - URL: https://rollbar.com/blog/chatgpt-model-is-overloaded-error/ - Categories: Code Tutorials, Java - Tags: OpenAI ChatGPT is a champ, but sometimes, it needs a breather. Here's what you need to know about the Model is Overloaded error and how to give it that breather. What does the "Model is Overloaded" error mean? The Model is overloaded with other requests error occurs when the OpenAI API is under a lot of stress from concurrently high user demand. In such a scenario, the model may struggle to produce timely and accurate responses, leading to this error message. What causes the “Model is Overloaded” error? There are a few potential root causes of the model overloaded error: Increased user traffic: The model may get overloaded whenever there is a rapid increase in user traffic or a large number of concurrent requests. This happens when the model is being used by an excessive number of users at once, stressing its processing power. Complex or lengthy prompts: The model might struggle to process lengthy or complex user requests, which would increase computational work and possibly overburden the system. Hardware or infrastructure limitations: OpenAI splits traffic between servers located in different regions. You may have landed on a server that currently has resource restrictions. Due to insufficient CPU or RAM, the model may become overloaded, resulting in the error. System maintenance: There may be scheduled or unscheduled maintenance on their servers. You could check the status page for any announcements. Example: “Model is Overloaded” error The below Java code makes HTTP requests to the OpenAI GPT-3. 5 API endpoint to send... --- ### Error monitoring in ASP.NET MVC - Published: 2018-03-07 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/error-monitoring-in-asp-net-mvc/ - Categories: .NET, Code Tutorials - Tags: dotnet ASP. NET MVC is a modern web development framework that combines the features of MVC (Model-View-Controller) architecture for better separation of concerns and the best parts of the ASP. NET platform. We’ll show you an example of how to catch errors and exceptions in ASP. NET MVC using a global action filter. We’ll also show you how to track them in Rollbar’s error monitoring service. This will give you real time visibility into your errors in production. It also captures person data and other context from your app so you can solve errors faster. Above, you can see that we've created an example app that triggers an an exception when the user clicks on a button. The error message is tracked in Rollbar, including a stack trace where you can see the line of code that caused the error. Create a global action filter To track all of our exceptions, we have multiple approaches in . NET. Using a global action filter is the easiest way to catch all the exceptions. It receives uncaught exceptions for your whole application, not just an individual controller. We’ll show you how to override it to create your own global action filter with exception tracking. Here are some simple steps to create global action filter in your application. Open up your own ASP. NET MVC project or use our open source example on GitHub at Rollbar-Dotnet-Example. You can use this filter to add any error monitoring solution, but we will show an example of... --- ### How to Deal with ChatGPT's Prompt Too Long Error > Are you getting an openai.error.InvalidRequestError about exceeding the maximum context length? Explore 5 techniques for managing prompt length. - Published: 2023-07-17 - Modified: 2023-08-18 - URL: https://rollbar.com/blog/chatgpt-prompt-too-long-error/ - Categories: Code Tutorials, Python - Tags: OpenAI Are you tired of the Prompt too Long error interrupting your flow with ChatGPT? Let's crack this nut together and learn how to keep your prompts lean, mean, and error-free. How Long is Too Long to Trigger the Error? A prompt contains a question or query that sets the context for the AI's response. The token limit of the prompt in GPT-4, for example, is 8,000 tokens, which applies to the prompt as well as the output. These tokens include characters, numbers, words, subwords, etc. One token generally corresponds to about 4 characters of text for common English text. When a developer gets the error message Prompt too Long, it indicates that the prompt's length is longer than the permitted threshold of the tokens. The token limits of OpenAI’s API may vary according to the model you use. It is important to note that any prompts reaching this limit or exceeding it may be shortened by the AI, leading to inaccurate and partial responses or the Prompt too Long error. Let’s take a look at an example. Example: Prompt Too Long Error The below Python script interacts with the OpenAI API, generating the Prompt too Long error: import openai openai. api_key = 'YOUR API KEY' def generate_text(prompt): try: response = openai. Completion. create( engine='text-davinci-003', prompt=prompt, max_tokens=1000 ) return response. choices. text. strip except openai. error. APIError as e: print(f"Error: {e}") # Generate a long prompt long_prompt = "This is a very long prompt that exceeds the maximum limit of the... --- ### Send Rollbar Error Alerts to Cisco Spark - Published: 2018-03-01 - Modified: 2025-04-22 - URL: https://rollbar.com/blog/send-rollbar-error-alerts-to-cisco-spark/ - Categories: product - Tags: integrations Cisco Spark is a enterprise collaboration platform from Cisco that includes messaging, video conferencing, desk phones, and digital whiteboards to mention a few. If your organization uses Cisco Spark, using Rollbar with it has just got easier. Depending on your setup, you can now receive Rollbar alerts not just in your messaging apps but also on that giant screen in the meeting room. As a Cisco Spark customer you've invested a lot in enabling enterprise collaboration. With this new Rollbar integration, you can further extend the value of the platform for your engineering teams. You can now get notified directly in Cisco Spark when certain situations occur, such as when a new error is detected by Rollbar, or when an error occurs at a very high volume within a specified time period. If you've enabled deploy tracking in Rollbar, you can also notify Cisco Spark of deploys. Rollbar alerts in Cisco Spark: As always, you can customize what alert notifications Rollbar should send. You can also configure which space in Cisco Spark the alerts should go to. Cisco Spark integration settings in Rollbar: For more instructions on how to enable this integration for your account, check out our Docs page{:target="_blank"}. Please feel free to reach out if you have any questions! If you haven’t already, sign up for a 14-day free trial of Rollbar and reduce production issue resolution times. --- ### Hubert's story with Rollbar > I love Rollbar because of its incredibly powerful features, its freemium pricing model (which makes it really easy to start new projects with error tracking baked in from day 1, setting a good foundation from beginning rather than having to be distracted and set it up later on). - Published: 2023-07-12 - Modified: 2024-04-16 - URL: https://rollbar.com/blog/rollbar-story-hubert/ - Categories: company, User Stories - Tags: User Stories Hubert Liu Co-Founder & CTO Hubert has now been using Rollbar for 109 months! 1. What company do you work for (describe the product/service) and what projects are you working on there? I'm co-founder and CTO of Grayscale, https://grayscaleapp. com/ - we are a frontline engagement platform that helps talent acquisition and HR teams effectively communicate with their frontline workers. While we aim to reduce repetitive tasks or follow-ups through automation, we do want to keep the "human" in HR, but make it scalable for larger workforces. I work throughout the technology stack in all facets of the business, from R&D in emerging technologies to new features in our platform. 2. What are you most passionate about in your current and/or past roles? Grayscale aims to help a segment of the market that is typically underrepresented by technology. Frontline workers make up a large portion of our customers' workforce, so we want to make it easy to communicate with them, no matter what environment they work in. "Deskless" workers don't have consistent access to a desk with a computer, and therefore email is a less effective form of communication. It's a unique challenge to step into these workflows and help solve the problems they have in communication, and that's exciting. 3. Is there anything in particular about Rollbar that has kept you a loyal user all this time? I've used Rollbar across 3 organizations now in the last 9 years. Access to important information is critical to solving problems faster,... --- ### Announcing Our New .NET Error Monitoring SDK - Published: 2018-02-12 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/announcing-our-new-net-error-monitoring-sdk/ - Categories: product - Tags: dotnet Rollbar is happy to announce our official . NET error monitoring SDK. This new . NET SDK is more rreliable, supports all of the popular . NET platforms (NET Standard, . NET Framework, . NET Core, ASP. NET MVC, UWP, Mono, Xamarin), easy to configure, multithreading friendly, and more. Rollbar helps you monitor errors in production applications. It provides you with a live error feed from your applications, including complete stack traces and contextual data to debug errors quickly. It also lets you easily understand your user experience by tracking who is affected by each error. Check out our features page to learn more about how it can help you. {: . imgcaption} . NET error monitoring, as seen in Rollbar Improvements Multi-target support including . NET Standard 2. 0 and up, . NET Framework (or Full Framework) 4. 5 and up, and . NET Core 2. 0 and up. It also supports UWP, Mono, and Xamarin. Native asynchronous (“fire-and-forget”) implementation. Due to its async nature the SDK has very little impact on its host at runtime. A blocking (synchronous) implementation of the same methods is also available. Rate limiting and buffering of all messages. Automatic retries in case of network failure. Person information is now a part of a notifier configuration object, including field scrubbing for privacy. Improved interface by separately defining ILogger and IRollbar. ILogger also now supports chaining calls. Multiple instances of the notifier can be separately and differently configured, including different access tokens. Easier configuration including... --- ### Jonathan's story with Rollbar > I love Rollbar because of its incredibly powerful features, its freemium pricing model (which makes it really easy to start new projects with error tracking baked in from day 1, setting a good foundation from beginning rather than having to be distracted and set it up later on). - Published: 2023-07-11 - Modified: 2024-04-16 - URL: https://rollbar.com/blog/rollbar-story-jonathan/ - Categories: company, User Stories - Tags: User Stories Jonathan Tsai (jontsai) Software Ninja Geektrepreneur, Empowering Engineers Jonathan has now been using Rollbar for 127 months! 1. What company do you work for (describe the product/service) and what projects are you working on there? Currently, my day job is at EasyPost (www. easypost. com), and I've been there for 4+ working on a variety of projects, mainly building and scaling integrations with hundreds of carriers around the world. Sadly, at EasyPost, they were integrated with Sentry since before I joined, and did not seem to want to switch. Having used all of Sentry, New Relic, and Rollbar professionally at various engineering shops, I highly prefer Rollbar over the others. Also, in a former life, I was co-founder/CTO of Talentral. com which spun off a separate app/product called ZippyApp. com that is still up and running to this day. It's managed to carve out a niche for itself and is self-sustaining, and managed by a small, but mighty team. And I still consult for them as a part-time CTO. I'm also a mentor and entrepreneur, so I usually have no fewer than 3-5 side projects that I'm running concurrently. One of my longer-running side projects is Hacktoolkit (https://www. hacktoolkit. com/), which is an open-source tech community and a collection of various kinds of open-source code. My largest and most successful open-source project is django-htk (https://github. com/hacktoolkit/django-htk), and it has Rollbar baked-in, coupled very tightly, for application error tracking and reporting. It's so opinionated that it's impossible to inject any other... --- ### New Integration - Auto-create Shortcut stories with error data from Rollbar - Published: 2018-02-09 - Modified: 2022-12-07 - URL: https://rollbar.com/blog/new-integration-auto-create-shortcut-stories-with-error-data-from-rollbar/ - Categories: product - Tags: triage At Rollbar, we use Shortcut to manage our software projects. One of the many ways we use it is for tracking issues in product releases. We'd have an epic in Shortcut for each release, and create stories for bugs associated with the release that we need to fix. This is especially useful when we're working on service packs. If you're not familiar, Shortcut is a project and product management software designed for agile software teams. With this integration, you can now automatically: Create a story in Shortcut for a Rollbar error, based on rules you set Include in the story the stack trace and a link to the error details data in Rollbar Mark the story resolved in Shortcut when it's resolved in Rollbar Change the status of a Shortcut story when an error is re-activated Shortcut integration settings in Rollbar: Shortcut story from a Rollbar error: To get started, check out this integration guide from Shortcut. Let us know if you have any questions, or tell us what you think! If you haven’t already, sign up for a 14-day free trial of Rollbar and stop flying blind in production. --- ### Nat's story with Rollbar > I first encountered Rollbar in my day job when I worked for PatientsLikeMe. We switched from a competitor because Rollbar made it much easier to track exceptions across programming languages (not just on our Ruby backend) and made it easy to attach additional details to exception reports as needed. - Published: 2023-07-11 - Modified: 2024-04-16 - URL: https://rollbar.com/blog/rollbar-story-nat/ - Categories: company, User Stories - Tags: User Stories Nat Budin Staff Software Engineer Nat has now been using Rollbar for 108 months! NEIL is a small organization with a small budget and relatively low traffic. Rollbar has long maintained a pricing structure that scales down to the level we can afford, while offering higher-capacity plans for enterprises. This is a sharp contrast to most of Rollbar’s competitors, who have a larger minimum monthly price that typically exceeds our entire web budget. 1. What company do you work for (describe the product/service) and what projects are you working on there? I volunteer for New England Interactive Literature, a non-profit that runs Intercon, one of the largest and oldest live action roleplaying game conventions in the world. I developed their open source convention management platform, Intercode, and I help maintain NEIL Hosting, which hosts other conventions’ sites on our instance of Intercode. 2. What are you most passionate about in your current and/or past roles? Our attendees are extremely passionate about practically every aspect of the convention, and as a result, I get a lot of direct feedback from users. It’s very important to me that attendees have a good experience with our web site. Rollbar has been invaluable in helping me catch issues before attendees raise them to us, and helping me quickly find the root cause of issues that attendees have raised. 3. Is there anything in particular about Rollbar that has kept you a loyal user all this time? I first encountered Rollbar in my day job... --- ### Introducing the Account Dashboard - Published: 2018-02-07 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/introducing-the-account-dashboard/ - Categories: product - Tags: monitor {: . highlightbox} Update: As of Aug 1st, 2018 we've made Account Dashboard available to all users, including those on Essentials plans. The Account Dashboard for users in Advanced plans also includes information on deploys and when they took place. As part of this general release, we've removed the Labs label from the Account Dashboard feature. We are excited to release our new Account Dashboard! The Account Dashboard gives your engineering team insight into errors across multiple Rollbar projects. This insight provides an overview of how each application and service is performing, so you can quickly identify and drill down into problem areas and error trends. Your browser does not support the video tag. In today’s microservices world, applications consist of multiple services that interact together to deliver the full user experience. There is the client side of the application that the user typically sees, which may be a webpage or mobile app. Behind that, there may be an application server and multiple API services, often owned by separate development teams. This makes the job of monitoring more complex because you need to monitor all the services at once. Errors or a loss of availability in any one service can result in cascading failures to downstream services, and ultimately the user. Check out what Jason Kozemczak, Tech Lead at Instacart had to say about the Account Dashboard. The Account Dashboard makes it even easier than before to understand the overall health of the Instacart product as well as individual teams/systems... --- ### Free Plan Changes > We are standardizing our free plans to align with our current structure and ensure we can continue offering quality services to all our users. - Published: 2023-07-10 - Modified: 2023-07-12 - URL: https://rollbar.com/blog/free-plan-changes-2023/ - Categories: Uncategorized Changes to our Free plans What is changing? Rollbar is sunsetting our legacy Free 25K plans and standardizing all free plans to 5,000 occurrences per month starting August 15, 2023. Our paid plans start at $12. 50/month; you keep your occurrences limits and enjoy added features. Why is Rollbar changing the free plan occurrence limit? We are standardizing our free plans to align with our current structure and ensure we can continue offering quality services to all our users. What happens if I do not switch to the Essentials Plan within 30 days? If you choose to remain on our free plan after 30 days, your occurrence limit will be adjusted to 5,000 occurrences per month. How will this change affect my current projects? This change won't affect your projects if your monthly occurrences are consistently below 5,000. However, if you regularly exceed this limit, consider our Essential or Advanced Plans to avoid any service disruption. Visit our pricing page for more information. What are the differences between Free, Essentials and Advanced Plans? Please visit our pricing page to view the side by side comparisons of the different plan options. How do I switch to the Essentials or Advanced Plan Plan? We've made the transition as easy as possible. You can upgrade your plan directly from your account navigation by clicking the upgrade button. Our customer support team is also here to assist you in making this transition (email us at support@rollbar. com). Will the Essentials Plan rate ever increase?... --- ### Debugging JavaScript with Source Maps > Minified JavaScript code generates source maps that can help trace and debug problems back to the exact line of source code. - Published: 2018-02-06 - Modified: 2022-06-17 - URL: https://rollbar.com/blog/debugging-javascript-with-source-maps/ - Categories: product - Tags: JavaScript One of the frustrating situations I often encounter when debugging JavaScript, is tracking down JavaScript errors to line 23 col 63475. I felt as though I was right on the edge of seeing the offending code and being able to fix it. And then, reality came crashing down. I realized that I’ve managed to debug myself right into the middle of a minified JavaScript file . There is a better way - Source Maps. JavaScript source maps are the key to taking what you’ve narrowed down in the minified code, and then being able to map them back to the source code so that you can view and resolve the problem without having to figure it out in the minified code. Source maps are generated when JavaScript code is minified. By using the source map in production, you can trace your problems back to the exact line of source code. It also allows you to use your browser's developer console to step through the source code when debugging problems. We’ll look at how to generate a source map, and then we’ll look at how they work, and how we can use them to make our lives easier. You can download or clone the source for the following demo from https://github. com/echovue/javascript-calculator. The source includes the original JavaScript file, the minified JavaScript file, and the source map. If you already know how to generate a source map or just want to use the generated file, you can skip down to How... --- ### Account Observability > We're thrilled to announce the launch of Rollbar's latest initiative to provide greater transparency and control over your occurrences. Our team has worked hard to address customers' feedback and concerns based on your occurrences and overages. We are excited to introduce a new level of observability to our platform. - Published: 2023-06-14 - Modified: 2023-07-26 - URL: https://rollbar.com/blog/account-observability/ - Categories: product - Tags: Usage Notifications Introducing Rollbar's Enhanced Usage Visibility Gain Control Over Your Occurrences We're thrilled to announce the launch of Rollbar's latest initiative to provide greater transparency and control over your occurrences. Our team has worked hard to address customers' feedback and concerns based on your occurrences and overages. We are excited to introduce a new level of observability to our platform. At Rollbar, we understand that having clear visibility into how your occurrences are utilized is crucial for making informed decisions and effectively managing your projects and account. Our goal with this initiative is to empower you, the account owners, with the tools and insights you need to take control of your data and leverage Rollbar's platform to its fullest potential. The primary focus of this release is to enhance your usage page, providing you with comprehensive information about your occurrences across all projects and throughout your contract period. With this new feature, you can track your occurrences over time, gaining valuable insights into your consumption patterns and making alt="" width="2116" height="1394" /> Project-level Breakdown: Understand your consumption of Rollbar occurrences for individual projects. We've introduced a new text-based table layout that provides a clear overview of your project's usage. Additionally, we're exploring options for incorporating graphs in future phases to enhance the visual representation of your data. Contextual Insights: Get detailed visibility into how your projects consume occurrences, enabling you to optimize your tracking and allocate your budget more effectively. This launch marks the first phase of our ongoing efforts to... --- ### Top 10 JavaScript errors from 1000+ projects (and how to avoid them) - Published: 2018-01-24 - Modified: 2022-06-20 - URL: https://rollbar.com/blog/top-10-javascript-errors-from-1000-projects-and-how-to-avoid-them/ - Categories: topics - Tags: JavaScript To give back to our community of developers, we looked at our database of thousands of projects and found the top 10 errors in JavaScript. We’re going to show you what causes them and how to prevent them from happening. If you avoid these "gotchas," it'll make you a better developer. Because data is king, we collected, analyzed, and ranked the top 10 JavaScript errors. Rollbar collects all the errors for each project and summarizes how many times each one occurred. We do this by grouping errors according to their fingerprints. Basically, we group two errors if the second one is just a repeat of the first. This gives users a nice overview instead of an overwhelming big dump like you’d see in a log file. We focused on the errors most likely to affect you and your users. To do this, we ranked errors by the number of projects experiencing them across different companies. If we looked only at the total number of times each error occurred, then high-volume customers could overwhelm the data set with errors that are not relevant to most readers. Here are the top 10 JavaScript errors: Each error has been shortened for easier readability. Let’s dive deeper into each one to determine what can cause it and how you can avoid creating it. 1. Uncaught TypeError: Cannot read property If you’re a JavaScript developer, you’ve probably seen this error more than you care to admit. This one occurs in Chrome when you read a... --- ### A Web Developer's Guide to Common Website Error Codes > From the infamous 404 to the more elusive 500, this guide is your compass to troubleshoot, decode, and resolve these digital stumbling blocks. - Published: 2023-06-13 - Modified: 2023-06-13 - URL: https://rollbar.com/blog/common-website-error-codes/ - Categories: topics - Tags: Top Errors To err is not only human but also a fairly common occurrence on the world wide web. From misconfigured servers to mistyped URLs, three-digit error codes can turn an otherwise smooth browsing experience into a frustrating detour. From the infamous 404 to the more elusive 500, this guide is your compass to troubleshoot, decode, and resolve these digital stumbling blocks. 1. 404 Not Found “404 Not Found” is one of the most common website errors. It indicates that the server was unable to find the requested resource. This could be due to a broken link, a mistyped URL, or the resource being removed or relocated. Example of error code 404 Ways to resolve a 404 error: Examine any broken links. It's possible that a website has broken links that are to blame for the issue. To find any broken links the programmer or the website owner can use tools like Google Search Console or a link checker, and then fix them by changing the URL or eliminating the link entirely. Redirect the URL: The programmer can redirect the URL to another page on the website if the user is attempting to visit an outdated page. This can ensure that consumers can still obtain the information they need without getting a 404 error. Ask the user to delete their cache and cookies: A 404 error occasionally results from a cached copy of a website that is no longer available. The users can make sure the most recent version of the page... --- ### Monitoring tools for serverless environments and AWS Lambda - Published: 2018-01-08 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/monitoring-tools-for-serverless-environments-and-aws-lambda/ - Categories: Code Tutorials - Tags: AWS-lambda Serverless computing platforms like AWS Lambda represent a new computing paradigm. Over the past decade, we’ve been trying to abstract the application layer from the infrastructure layer. VMs started this by virtualizing hardware servers, and Docker containers extended this by packaging just the application code separate from the host system. The next step in this process is to completely remove the host from the equation, and simply focus on the application code—which is what serverless computing is all about. But as with most things new, serverless forces you to change how you used to do things, including the way you monitor functions. Below, I explain how monitoring changes in a serverless environment. I focus on Lambda in particular, although most of these observations apply to any type of modern serverless platform. How monitoring is different with serverless In traditional client-server apps, you typically monitor the performance of your servers, network latency, and more. However, with serverless platforms like Lambda, these metrics are irrelevant. This is because the vendor manages the underlying servers and plumbing, leaving you to focus exclusively on your application code. This means you don’t need to worry about how much compute power your servers have available to execute your code. Lambda automatically scales the available compute capacity to ensure your code is executed (there’s a caveat, but more on that later). You don’t have to worry about load balancing across multiple servers, or optimizing network latency. AWS takes care of this, too. Serverless metrics to monitor Yet... --- ### How to Resolve TypeError: ‘NoneType’ object is not subscriptable in Python > When you try to access an index or key of a variable that is of a NoneType sort, Python throws a NoneType error. Learn several solutions to fix this. - Published: 2023-06-12 - Modified: 2025-03-17 - URL: https://rollbar.com/blog/python-typeerror-nonetype-object-not-subscriptable/ - Categories: Code Tutorials, Python - Tags: Python When working with Python, attempting to access an index or slice of an object that has the value None may result in TypeError: 'NoneType' object is not subscriptable. Let’s delve into why this TypeError occurs and how to resolve it. None is a unique constant in Python that stands in for the lack of a value. It is employed to show that a variable or expression does not possess a value. The Python built-in class NoneType has an object called None that belongs to it. An instance of NoneType is assigned to a variable when None is assigned to it. For Example: my_var = None print(type(my_var)) Output: What Causes TypeError: ‘NoneType’ And How to Fix this Error Working with NoneType objects frequently results in the 'NoneType' object is not subscriptable error. The issue arises when you try to use the index or key of a NoneType object as if it were a list or dictionary. Python raises this error because NoneType objects do not support indexing or key access, preventing the programmer from doing an invalid operation. The following are some typical situations that may result in this issue and the solutions to fix them: 1. Forgetting to Assign a Value to a Variable If you forget to assign a value to a variable, it will default to a NoneType object. If you then try to access an index or a key of that variable, Python will raise the 'NoneType' object is not subscriptable error. Example One my_list = None... --- ### What We Shipped in 2017 - Published: 2017-12-28 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/what-we-shipped-in-2017/ - Categories: product - Tags: monitor At Rollbar, 2017 has been a year of exciting growth and development for the product and the team. We've grown the total number of users to over 100,000, processing billions of events per week, and the team has more than doubled in size. I know it's cliche, but, it genuinely does feel like we're just getting started. ;-) Before we put this year behind us and speed into 2018, I thought we'd look back, and share some of the highlights of what we shipped in 2017. Error Notifier SDKs PHP SDK 1. 0+ JavaScript SDK 2. 0+ Lambda support for Python and Node Laravel SDK Java and Android SDK 1. 0+ React Native SDK (Alpha) iOS SDK 1. 0+ Product Features JavaScript Telemetry JavaScript Source Maps Major JavaScript source map updates Un-minify JavaScript method names Automatic JavaScript source map processing Error Merging and Grouping Error merging and unmerging Edit and merge multiple errors at once Export RQL results as CSV View errors in each deploy Security and Compliance Compliance Compliant SaaS (HIPAA and ISO 27001) Security Encryption at rest Integrations GitLab source control and issues GitHub Marketplace Love and use Rollbar? We value your feedback. What do you think of our new features and improvements in 2017? What sort of things would you like to see shipped in 2018? Please leave a comment below this post or connect with us at hi@rollbar. com. If you haven’t already, signup for a 14-day free trial of Rollbar and let us help you... --- ### Error Resolution Unveiled > Introduce a new enhancement to our Improve package – the Mean Time to Resolution (MTTR) metric. Unlike other tools, our MTTR metric measures the time from when an issue begins in production to when it gets resolved, not from a ticket opening or alert trigger. This distinctive feature makes the Rollbar MTTR more accurate and reliable. - Published: 2023-06-07 - Modified: 2023-06-07 - URL: https://rollbar.com/blog/improve-mttr-metric/ - Categories: product - Tags: mttr Error Resolution Unveiled Unlock Insights with the new Improve MTTR Metric In today's fast-paced tech environment, swiftly and efficiently resolving software errors is essential to maintain the seamless operation of your application. A prominent problem for engineering leaders is they often need help tracking and effectively understanding their error resolution performance over time. With a comprehensive, real-time visualization of this data, making informed decisions, setting performance benchmarks, and optimizing resources become easier. Today, we are excited to introduce a new enhancement to our Improve package – the Mean Time to Resolution (MTTR) metric. Unlike other tools, our MTTR metric measures the time from when an issue begins in production to when it gets resolved, not from a ticket opening or alert trigger. This distinctive feature makes the Rollbar MTTR more accurate and reliable. The MTTR graph lets you view your resolved errors over set time periods. Whether these issues were manually resolved by a user or auto-resolved by our intelligent system, you can track your performance and gain valuable insights. Our intuitive MTTR graph is a sophisticated tool that dynamically monitors your application’s error resolution times. It diligently compiles data, transforming it into an interactive graphical format accessible at your convenience. We don't limit ourselves to just a part of the application; instead, we take a comprehensive view by looking at resolved errors across the entire application. This includes errors corrected manually in the UI, those resolved automatically on deployment, inactive items that auto-resolve themselves, and errors managed via API.... --- ### Spring MVC Exception Handling and Monitoring - Published: 2017-11-27 - Modified: 2023-01-19 - URL: https://rollbar.com/blog/spring-mvc-exception-handling-and-monitoring/ - Categories: Code Tutorials, Java - Tags: java The Spring Famework is the most popular framework for Java according to hotframeworks. com. It provides a model view controller (MVC) architecture and readily available components to develop flexible and loosely coupled web applications. If you are new to Rollbar, it helps you monitor errors in real-world applications. It provides you with a live error feed from the application, including complete stack traces and request data from the browser to debug errors quickly. It lets you easily understand user experience by tracking who is affected by each error. Learn more about our Java error monitoring product features. While Rollbar’s notifier works with any Java application, we’re going to show you how to set it up with Spring and how to try it out yourself with a working example app. Create a global exception handler To track all of our exceptions in Spring, we’ll be making use of a global exception handler. This receives uncaught exceptions for your whole application, not just an individual controller. Spring offers two main approaches: 1. ControllerAdvice When you create a class annotated with @ControllerAdvice{:target="_blank"}, it will handle exceptions created by all your controllers. Each controller advice defines a method with a @ExceptionHandler annotation which becomes the default handler. You can insert your custom code to print or track errors there. ControllerAdvice is only available in Spring 3. 2 and above. We won’t be covering this approach in detail but you can see our working example on GitHub{:target="_blank"}. You will need to uncomment the annotation at... --- ### How to Use CreateError for Crafting Custom Error Classes in Node.js > Unlock the full potential of JavaScript error handling with CreateError. Learn how to create custom error classes, pass additional error data, and more. - Published: 2023-06-05 - Modified: 2023-06-05 - URL: https://rollbar.com/blog/nodejs-error-handling-using-createerror/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript The npm createerror package is a helper that allows you to easily create custom error classes in Node. js. It provides a simple API to define and extend error classes with customizable properties and methods. CreateError Installation Node. js and npm should be installed before using the createerror package. To install createerror, the following command should be run: npm install createerror CreateError Example Here’s a simple example on how to use createerror in Node. js: var createError = require('createerror'); var MyError = createError({ name: 'MyError', message: 'Message describing the error' }); In the above example, the createerror package is used to create an error called MyError that has the name and message properties. How to Throw Errors Using CreateError After a custom error has been created using the createerror package, an instance of it can be thrown using the JavaScript throw keyword. Any instances of the error can also contain extra data about the error. Here’s an example that throws an instance of the MyError error created above: try { throw new MyError({ message: "My message", data: {restrictedIds: } }); } catch(e) { console. error(e. data); } Here, the MyError instance created in the try block contains a property called data that contains a set of restrictedIds. The error is caught in the catch block and the output is logged to the console with the error’s data property: { restrictedIds: } Track, Analyze and Manage Errors With Rollbar As you can see, creating custom errors can provide more detailed and... --- ### Announcing Our New Java Error Monitoring SDK - Published: 2017-11-17 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/announcing-our-new-java-error-monitoring-sdk/ - Categories: product - Tags: java Rollbar is proud to announce the first official 1. 0 release of our Java notifier SDK for error monitoring. Java continues to be one of the world’s most popular programming languages. It’s the most sought-after language for employers and has the second most pushes on GitHub according to Stackify’s 2017 rankings{:target="_blank"}. Rollbar helps you monitor errors in real-world applications. It provides you with a live error feed, along with stack traces and contextual data to debug errors quickly. It's important to select an error monitoring solution that supports all the languages your company uses for a clear picture across your whole stack from the front end to the back end. Some competing solutions just don't give you that full visibility. Learn more about our product features for Java. This new version of our Java notifier SDK supports many frameworks including web apps, Android, Scala, Kotlin, Spring MVC, and more. In web applications, it captures data about the request including the user's IP address and browser so you can narrow the problem down. It helps you identify root cause quickly, by giving you contextual data on what changed and when from your source control and deployment systems. You can also react proactively by seeing which users were affected and prioritize fixes. {: . imgcaption} Grouped Java exceptions, as seen in Rollbar Additional improvements in our 1. 0 release include: Support for both Gradle and Maven build systems. Synchronous and asynchronous senders, so that your application does not block sending events to... --- ### How to Fix AbortError in JavaScript > The JavaScript AbortError occurs when an operation is aborted before it completes. Learn three ways to handle it. - Published: 2023-05-29 - Modified: 2023-05-29 - URL: https://rollbar.com/blog/fix-aborterror-in-javascript/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript The JavaScript AbortError occurs when an operation is aborted before it completes, such as when an AbortController object cancels a fetch request in progress. What Causes AbortError In JavaScript, an AbortError is thrown when an operation is stopped or canceled before it completes. For example, when using the JavaScript fetch function, an AbortError is thrown if the abort function is called on the associated AbortController before the fetch operation completes. The AbortError is thrown only if the operation is canceled while it is actively in progress. If the operation completed successfully or failed for another reason, an AbortError will not be thrown. AbortError Example Here’s an example of an AbortError thrown when the AbortController. abort function is called while a fetch operation is in progress: const controller = new AbortController; const signal = controller. signal; fetch('https://example. com', { signal }); controller. abort; In the above example, the AbortController is used to create an AbortSignal object, which is passed as an option to the fetch request. When the AbortController. abort function is called while the fetch request is in progress, the request is canceled and an AbortError is thrown: Uncaught (in promise) DOMException: The user aborted a request. How to Fix AbortError Here are a few approaches to handle and fix an AbortError depending on the use case: Use try-catch blocks An AbortError can be caught and handled appropriately using a try-catch block. For example, the error can be caught in the catch block and handled with a message displayed to... --- ### Laravel error reporting now available - Published: 2017-10-30 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/laravel-error-reporting-now-available/ - Categories: product - Tags: PHP We're happy to introduce our latest error reporting SDK, for Laravel, which tracks and reports errors that happen in your Laravel applications. Laravel is a popular and powerful MVC framework for PHP, designed for developers who need a simple and elegant toolkit to create full-featured PHP web applications. In real-world production applications, it’s important to monitor errors so you understand your user’s experience and can fix issues before more are impacted. Rollbar helps by providing you with a live error feed from your application, including complete stack traces for instant visibility. To give you more context to debug problems, we also track the environment the error is coming from (prod or staging), the server that generated the error, and even the user’s session. Learn more about Rollbar’s product features. Below, we'll show you how to add Rollbar error reporting to your Laravel apps and even give you a code example that you can try yourself. Laravel error reporting with Rollbar Here are some simple steps describing how to integrate Laravel SDK in your code. You can find more details in the Laravel Documentation. Sign up for a Rollbar account if you haven’t done so yet. Create your project and select Other from the list of notifiers. Copy the server side access token that is generated for you. You’ll need this to configure Rollbar in the steps below. Open command prompt in your project directory and type following command to install the Laravel notifier SDK. composer require rollbar/rollbar-laravel Add the project... --- ### 10 Best Practices When Logging in Python > Harness the full power of Python's logging module. From best practices to advanced error tracking with Rollbar, learn everything you need to squash bugs. - Published: 2023-05-16 - Modified: 2023-05-16 - URL: https://rollbar.com/blog/10-best-practices-when-logging-in-python/ - Categories: Code Tutorials, Python - Tags: Python In the eternal hunt for elusive bugs, logging is an indispensable aid. By recording the events and messages that occur during the execution of your program, logging opens the door to unparalleled debugging and performance monitoring capabilities. It all starts with Python’s built-in logging module. However, the true power of Python logging is unlocked not merely by using it, but by mastering it. Keep reading to learn the fundamentals of logging in Python, get up to speed with best practices, and how one advanced error logging tool, Rollbar, can help you discover, predict, and resolve errors in real-time. The basics of logging in Python: words you should knowBefore we dive into the code, let's cover some basic concepts related to logging in Python: Logger: An object named a logger represents a named channel for message logging. You can add several loggers to your program, each with a unique name and set of configurations. The name of the logger you want to use is specified when you log a message. Handler: An entity that receives and processes logged messages is referred to as a handler. Each handler can have its own configuration, including a file name, a format string, and a level threshold. A logger may have one or more handlers. All of the handlers connected to the logger receive a message when it is logged. Formatter: A formatter is an object that transforms the logged messages into a string that can be read by humans. This can include placeholders for... --- ### Custom error handling for Angular - Published: 2017-10-24 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/custom-error-handling-for-angular/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript Angular 2+ and AngularJS (version 1) are popular open-source JavaScript MVC frameworks that let you build highly structured, testable and maintainable front-end applications. Angular is most commonly used on single-page applications. Stable and reliable single-page applications depend on solid client-side error monitoring tools and techniques. But getting the right exception data and context isn’t always easy. We’re going to dive into how to capture, handle and debug Angular errors. Error handling in vanilla JavaScript consists of using try, catch and finally statements. You can also use these statements in Angular modules. However, Angular has a special logic to handle uncaught exceptions. We’ll show you how to create custom error handlers for Angular that you can override to add your own functionality. Error logging in Angular The ErrorHandler class in Angular 2+ provides a hook for centralized exception handling. The default implementation of ErrorHandler prints error messages to the console. This service is very simple by design. To intercept the error handling we need to write a custom handler. On the other hand, uncaught exceptions in AngularJS are all funneled through the $exceptionHandler service. When unmodified, $exceptionHandler sends all uncaught exceptions to the $log. error service. The $log. error service passes the error through to the client’s console. Here’s how you can create your own error handler: Angular 2+ AngularJS 1. X class ErrorHandler { constructor {} handleError(error: any): void; } $exceptionHandler(exception, ); In Angular 2+ the handleError(error: any): void method allows you to implement your own code to do something... --- ### How to Solve an Undefined Variable NameError in Python > A Python NameError is raised when the program attempts to use a variable that has not been defined. Learn how to fix it. - Published: 2023-05-16 - Modified: 2025-03-17 - URL: https://rollbar.com/blog/undefined-variable-nameerror-python/ - Categories: Code Tutorials, Python - Tags: Python In Python, a NameError: name 'x' is not defined error is raised when the program attempts to access or use a variable that has not been defined or assigned a value. This can happen if the variable is spelled incorrectly, or if it is accessed before it has been defined. What Causes Undefined Variable In Python, a variable is not created until a value is assigned to it. If an attempt is made to use a variable before it is defined, a NameError: name 'x' is not defined error is thrown. The error message typically includes the name of the variable that is causing the problem and the line of code where the error occurred. Python Undefined Variable Example Here’s an example of a Python NameError: name 'x' is not defined thrown when using an undefined variable: for i in range(x): print(i) In this example, an undefined variable x is used in the range function, throwing the NameError: name 'x' is not defined error: Traceback (most recent call last): File "test. py", line 1, in for i in range(x): NameError: name 'x' is not defined How to Solve Undefined Variable in Python To solve the NameError: name 'x' is not defined error in Python, you need to make sure that the variable is properly defined and assigned a value before it is used. The variable should also be referenced correctly, with the correct case and spelling. The earlier example can be updated to define the variable before it is used:... --- ### Error Boundaries in React 16 - Published: 2017-10-11 - Modified: 2023-01-19 - URL: https://rollbar.com/blog/error-boundaries-in-react-16/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript React recently announced the release of version 16 with long standing feature requests including error boundaries, fragments, improved server-side rendering and more. Error boundaries are especially useful so that an error in one small part of the UI doesn’t break your entire application. Instead, it’s better to contain those errors to the affected components and recover gracefully. JavaScript error logging. When you open this page, you can activate an error boundary by clicking at least five times on the counter. You will then see the error message “Something went wrong. ” Let's dive deeper into this example to learn how error boundaries work. What are error boundaries? Error boundaries are React components that catch JavaScript errors anywhere in their child component tree. They can log errors and display a fallback UI to replace the component tree that has crashed. They are similar to try-catch statements in your code, but surround page elements instead. An error boundary is a React component with a componentDidCatch(err, info) method. Any errors occurring in a component tree get reported up to the nearest error boundary’s componentDidCatch function. Note that error boundaries only catch errors in the components below them in the tree. For simple apps, you can declare an error boundary component once and use it for your whole application. For more complex applications with multiple components, you can have independent error boundaries to gracefully recover each part. You can also report these errors to an error monitoring service like Rollbar. This will give you... --- ### Quickly edit and merge many error items at once - Published: 2017-09-20 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/quickly-edit-and-merge-many-error-items-at-once/ - Categories: product - Tags: monitor Rollbar just added a new feature that allows you to quickly edit and merge hundreds or thousands of items at once. In the past, you could only edit or merge items on a single page, which is limited to 30 items at a time. We added a new link that allows you to apply the change to all items in your view or matching a search. This feature provides a similar user experience to how Gmail lets you select all conversions, and then update or delete them. This is useful to perform bulk updates, such as assigning many items from a single component to a developer to fix. You might want to merge multiple errors that are similar but come from different parts of your application. You could also resolve all your errors before doing a deployment so that you have a fresh view with the new version. Thanks to our intelligent fingerprinting rules you only need to merge items once. New occurrences will remain in the merged item. This makes it much easier to manage the items in your account by keeping your view clutter free, and giving you accurate metrics on how often errors occur. As a result, you can focus your attention on new and high-impact errors. If you haven’t already, signup for a 14-day free trial of Rollbar and let us help you take control of impactful production errors. :-) --- ### Error Logging: A Complete Guide for Beginners > No matter the programming language, learn the universal principles of what to include in error logs, where to save them and how to debug effectively. - Published: 2023-05-15 - Modified: 2023-05-15 - URL: https://rollbar.com/blog/error-logging-guide/ - Categories: topics - Tags: Top Errors Today's applications are incredibly intricate and interconnected, often relying on numerous third-party services and libraries. With this complexity comes an increased likelihood of things going wrong. However, an error doesn't usually announce itself with great fanfare and a detailed explanation. More often than not, it shows up as an unexplained crash, a suspicious slowdown, or a surprising output. Error logging shines a spotlight on these problems. Error logging is a mechanism for capturing and recording errors or issues that occur in your application, providing a crucial lifeline during the debugging process. Think of it like having surveillance cameras in every corner of your application. These logs provide a wealth of information, from the nature of the error and where it occurred, to the state of the system when it happened. This data can be the difference between solving a problem in minutes and struggling with it for days. While the specifics of logging errors may vary based on the application and the environment, this beginner’s guide will illuminate the universal principles that underpin this crucial development practice. We'll delve into what you should include in an error log, where to save these logs, and how to use logs as your secret weapon in the debugging process. What to Include in an Error Log Error logging is a technique that transcends specific programming languages or environments. Whether you're working with Python, Java, JavaScript, or other languages, there are always key pieces of information that should be included in every error log... --- ### Introducing AWS Lambda Support for Node.js and Python - Published: 2017-09-07 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/introducing-aws-lambda-support-for-node-js-and-python/ - Categories: product - Tags: SDK We’ve just updated our Rollbar. js and Python libraries, making it easy for you to monitor errors on AWS Lambda. If you’ve been considering building apps with serverless architectures on Lambda, we’ve got the exception tracking covered so you can rest easy. Serverless architectures Serverless architectures have taken resource abstraction to the next level. We've now gone from having servers hosted and managed in the cloud, to having servers that require zero touch and are ephemeral in nature - they're spun up automatically only when certain events are triggered. They also scale out automatically with usage, and whereas before you paid for compute resources you allocated, now you only pay the resources your app actually uses. AWS Lambda In AWS Lambda, currently the most popular service for building serverless apps, how much you use is based on how many times you trigger functions and how long it takes for those functions to execute. Lambda functions come with limits, such as the concurrency execution limits. This is set at account-level and when you hit those limits, throttling kicks in. As a result, your functions don’t get executed and you get errors. This is just one of many things to consider and monitor when architecting your app to run on Lambda. Monitoring errors in Lambda Lambda uses Cloudwatch for monitoring and logging, providing metrics such as number of invocations, execution duration times, throttles, logs, and number of errors from failed invocations. For richer and more granular information on errors that helps you... --- ### Introducing JavaScript Telemetry - Published: 2017-08-16 - Modified: 2022-01-27 - URL: https://rollbar.com/blog/introducing-javascript-telemetry/ - Categories: product - Tags: debug We're excited to introduce JavaScript telemetry, which provides a timeline of events in the browser leading up to when an error occurred. This helps you find the root cause of JavaScript errors faster by providing critical information on user behavior, network activity, and more. You might also think of this timeline of events as a trail of breadcrumbs or a black box recorder which tells you what happened just before a crash or error. In the screenshot below, we see a timeline showing a complete story of how the user encountered an error. First they loaded the page, typed their email address into the sign up form, validated the email, navigated to an onboarding page, and then the error occurred. This gives clear context on what caused the error and which component needs to be fixed. {: . imgcaption} JavaScript telemetry data, as seen in Rollbar Troubleshooting can be difficult and time-consuming If you’re a web developer, you know it can be difficult to reproduce unusual errors and problems reported by users. There are many variables including inconsistent browser environments, unexpected user behaviors, network calls, state changes in the application, and more. Reproducing problems costs your team time in development, QA and support. Unfortunately, if your team cannot reproduce the problem it’s often put on the back burner which can leave users hanging with no resolution. Having enough contextual information can save you time because you can quickly see the cause of the problem without having to manually test different... --- ### How to Use the ChatGPT API with JavaScript > Step into the world of AI with this step-by-step tutorial on integrating the OpenAI API with JavaScript. Transform your app's user experience today. - Published: 2023-05-11 - Modified: 2023-08-18 - URL: https://rollbar.com/blog/chatgpt-api-with-javascript/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript, OpenAI Eager to infuse your JavaScript app with state-of-the-art AI? This comprehensive tutorial will show you how to embed ChatGPT, the titan of large language models, into your JavaScript code. Get ready to revolutionize your app's interactivity with natural language processing capabilities. First, follow these steps to integrate ChatGPT into JavaScript To use the ChatGPT language model in JavaScript, you make use of the OpenAI API library. Here are the steps to follow: First, sign up for OpenAI API access at https://beta. openai. com/signup/. Once you’ve signed up, you’ll get an API key to use to authenticate your requests. Create an empty folder on your computer named "Demo" and open it in an editor like VS Code to create the initial package. json file in it by writing the below command in the VS Code terminal: npm init -y To use the OpenAI API in your JavaScript application, you have to install the openai package using the following command in the terminal: npm install openai Next, install the . env package, which is a zero-dependency module that loads environment variables from a . env file into process. env. It allows you to separate sensitive data from your code and store it in a file that is not tracked by version control systems. You will use this to store your OpenAI API key. Now create two files: index. js, where you’ll write your code, and an . env file, where you will store your API key. This is how your project structure... --- ### Purpose-Built Error Monitoring Alternative to New Relic - Published: 2017-08-08 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/purpose-built-error-monitoring-alternative-to-new-relic/ - Categories: topics - Tags: APM One of the more frequently asked questions we hear is: "Doesn't my existing Application Performance Management (APM) solution, such as New Relic, monitor and track errors in our application? " The short answer is - it’s not enough. They are very complementary and most Rollbar users use both (we do) for various debugging scenarios. APM tools are great at telling you what's slow, when and where exceptions occur. Rollbar provides a lot more contextual information to help you determine what's broken, why they occur, who is affected, and how to fix them. It saves you a substantial amount of time dealing with errors and leaves more time for resolving issues and improving your product experiences. (/why-rollbar/" alt=""> Let’s see how New Relic and Rollbar compare when it comes to monitoring and managing application errors. Features Rollbar New Relic Error tracking ✓ ✓ Error analytics ✓ ✓ Stack traces ✓ ✓ Error frequency heatmap ✕ ✓ Infrastructure monitoring ✕ ✓ Transaction tracing ✕ ✓ Notifications and alerting ✓ ✓ Issue tracker integration ✓ ✓ Filter by host ✓ ✓ Data retention > 8 days ✓ (180 days) ✕ Custom rate limits ✓ ✕ (100 events per minute) Live error view ✓ ✕ Git repo integration ✓ ✕ Map errors to deployments ✓ ✕ Raw payload per error ✓ ✕ Replay requests ✓ ✕ People affected ✓ ✕ Telemetry ✓ ✕ Local variable values ✓ ✕ Custom error grouping rules ✓ ✕ Overview of New Relic's Error Analytics The New Relic APM... --- ### Introducing Rollbar Analyze > Analyze is designed to deliver even more powerful insights to help your teams better understand your code and make data-driven decisions. By packaging the capabilities of RQL and Metrics API, we are equipping you with a robust solution that addresses your unique data needs. - Published: 2023-05-04 - Modified: 2023-05-05 - URL: https://rollbar.com/blog/introducing-rollbar-analyze/ - Categories: product Introducing Analyze Your Key to Enhanced Insights and Faster Error Resolution We are excited to announce the rollout of our new Rollbar Improve component, Analyze. As we strive to provide you with the best possible tools to monitor, understand, and improve your code, we've combined two powerful features, RQL and Metrics API, into one comprehensive package. Analyze is designed to deliver even more powerful insights to help your teams better understand your code and make /> *Rollbar Analyze - Includes RQL and Metrics API Package Changes What to Expect With the introduction of Analyze, we are changing our pricing packages. We understand these changes affect some of our customers and want to be transparent about the details. Moving forward, Analyze will be available as part of the Advanced package. For our other packages, we would like to outline our plan: Free and Essential Packages Free and Essentials package users will have limited access to RQL following a transitional grace period. Free users will continue to have access to RQL for 30 days after the launch of Analyze, while Essentials users will have access for 60 days. To make our Advanced package more accessible, we are also introducing two new pricing tiers: Advanced 25K for $29. 00 and Advanced 50K for $59. 00. We encourage our Free and Essential package users to consider upgrading to one of these plans to enjoy uninterrupted access to RQL and full access to our Metrics API. View Pricing and Packages Enterprise Package Enterprise customers will... --- ### Security matters: Rollbar now offers advanced encryption at rest - Published: 2017-07-19 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/security-matters-rollbar-now-offers-advanced-encryption-at-rest/ - Categories: product - Tags: security Are your services secure? In today’s world, you can hardly go a week without reading in the news about security breaches, malware, and more. We’ve already had headline news this year for Wanna Cry{:target="_blank"}, and now there are dozens of copycat malware programs taking advantage of out-of-date systems. Think of all the services that your company uses from error monitoring to logging and APM. Some of them may be delivered by vendors and others set up by internal teams. Did your IT team evaluate these services to determine how secure they are? If not, you might want to reconsider the services you use or who can best deliver them. Unfortunately, many companies only do the bare minimum due to time constraints, limited budget, lack of expertise, etc. Real security is hard because threats are constantly evolving, and they target the weakest link across all layers of your organization. Companies make good targets because they concentrate data from potentially billions of customers in one place. Their infrastructure can have millions of lines of code that no one person fully understands. They often rely on a complex and poorly monitored network of third-party service providers, offshore contractors, platforms, modules, etc. These all present opportunities to attack. Sophisticated companies evaluate the security of their service providers when making a purchase, and they hold internal services to the same standards. They typically have a checklist of security requirements covering certifications, security audits, data management processes, etc. Companies in the EU or US-regulated industries like... --- ### How to Fix ReferenceError: $ is Not Defined in JavaScript > This error occurs when the jQuery library is used but is not properly loaded or is not available in the current scope of the code. Learn how to fix it. - Published: 2023-04-24 - Modified: 2024-09-13 - URL: https://rollbar.com/blog/fix-reference-error-is-not-defined-in-javascript/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript The JavaScript ReferenceError: $ is not defined occurs when the jQuery library is used but is not properly loaded or is not available in the current scope of the code. In JavaScript, the $ symbol is often used as a shorthand alias for the jQuery library. This error indicates that the code is trying to use jQuery functionality by referencing the $ symbol, but the library is not available or has not been loaded correctly. What Causes Javascript ReferenceError: $ is Not Defined This error can occur for several reasons, such as: The jQuery library is not included in the script that references it. The library is included with a typo or error in the script The script is executed before the jQuery library is loaded, which can be caused by incorrect placement of the script tag in the HTML file. The code is running in a different scope or environment where the $ symbol is not defined or has a different meaning. ReferenceError: $ is Not Defined Example Here’s an example of a Javascript ReferenceError: $ is not defined thrown when jQuery is not properly loaded in a script that uses it: Example Click me In this example, the code is trying to use the jQuery library. Since jQuery is not included in the above script, running it throws the error: Uncaught ReferenceError: $ is not defined How to Fix ReferenceError: $ is Not Defined To fix the ReferenceError: $ is not defined error, jQuery should be properly loaded... --- ### Merging versus Custom Fingerprinting - Published: 2017-06-23 - Modified: 2021-07-19 - URL: https://rollbar.com/blog/merging-versus-custom-fingerprinting/ - Categories: product - Tags: monitor With the recent announcement of support for manual merging, there are now multiple ways to combine occurrences of errors into a single item. Before merging was an option, if the default fingerprinting algorithm didn’t combine occurrences the way you wanted, then you needed to define custom fingerprinting rules. Custom fingerprinting rules require you to learn our JSON-based rule syntax, and that could be a deterrent against setting them up. Now that you can easily merge errors via the UI, is there still value in setting up custom fingerprinting rules? Absolutely, and this blog post will explain why! Rollbar’s Default Fingerprinting Algorithm To understand merging vs. custom fingerprinting rules, it helps to first look at how Rollbar combines occurrences of errors. Minus a few tweaks we’ve made over the years to optimize results, our default algorithm works as follows: Combine the filenames and method names from all of the stack frames Append the exception class name Take the SHA1 hash of the result The resulting SHA1 hash is what we call the ‘fingerprint’ of the error. All occurrences that have the same fingerprint will be combined into a single item. The default behavior can be changed to include the exception message, or any other occurrence data, when calculating the fingerprint too. This will result in more unique errors in your Rollbar projects, so use it carefully. Custom Fingerprinting Rules The default fingerprinting algorithm is a good start and may be sufficient for many projects, but often you’ll want to tweak the... --- ### How to Fix IndexError: string index out of range in Python > This error occurs when an index is attempted to be accessed in a string that is outside its range. Learn how to fix it. - Published: 2023-04-24 - Modified: 2023-07-10 - URL: https://rollbar.com/blog/python-indexerror-string-index-out-of-range/ - Categories: Code Tutorials, Python - Tags: Python The Python IndexError: string index out of range error occurs when an index is attempted to be accessed in a string that is outside its range. What Causes IndexError: string index out of range This error occurs when an attempt is made to access a character in a string at an index that does not exist in the string. The range of a string in Python is , where len(str) is the length of the string. When an attempt is made to access an item at an index outside this range, an IndexError: string index out of range error is thrown. Python IndexError: string index out of range Example Here’s an example of a Python IndexError: string index out of range thrown when trying to access a character outside the index range of a string: my_string = "hello" print(my_string) In the above example, since the string my_string contains 5 characters, its last index is 4. Trying to access a character at index 5 throws an IndexError: string index out of range: Traceback (most recent call last): File "test. py", line 2, in print(my_string) ~~~~~~~~~^^^ IndexError: string index out of range How to Handle IndexError: string index out of range in Python The Python IndexError: string index out of range can be fixed by making sure any characters accessed in a string are within the range of the string. This can be done by checking the length of the string before accessing an index. The len function can be used to... --- ### Technical details and challenges of building Error Merging - Published: 2017-06-19 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/technical-details-and-challenges-of-building-error-merging/ - Categories: product - Tags: behind-the-scenes Hopefully you've had the chance to try out our latest feature, error merging. We've heard a lot of positive feedback from our users. They're especially excited to be able to easily merge and un-merge related errors. We thought it would be useful to share how the Rollbar team made this happen from a technical standpoint. If you're interested in the nitty-gritty of how we implemented error merging, read on. I interviewed an engineer here at Rollbar who was instrumental in making error merging possible, about what was involved in engineering this feature. First, let's start with why we created error merging in the first place. Our users were asking for the ability to merge (and unmerge) their errors via our UI, as opposed to having to create custom fingerprinting rules. Prior to creating error merging, if you wanted to merge two items together, you created a custom fingerprinting rule, which doesn't apply retroactively. You also could never unmerge items that had been merged together. As the engineer explains it, "custom fingerprinting is extremely static and only applies when the rule is in existence. You can look at an occurrence of an item and extract the fingerprint, and it is always associated with the item. Item merging is very dynamic. You never change the fingerprint of a given occurrence, and that fingerprint could even come from custom fingerprinting. You can change your mind over and over. Merging is a tool for managing complexity. You can take your dashboard from a zillion... --- ### How to Handle Exceptions in Ruby with Rescue > Ruby provides a powerful error handling mechanism called Rescue. Learn how it works and common ways to use it to your advantage. - Published: 2023-04-24 - Modified: 2023-04-24 - URL: https://rollbar.com/blog/handle-exceptions-in-ruby-with-rescue/ - Categories: Code Tutorials, Ruby - Tags: ruby Ruby has a robust error handling mechanism called rescue. The way it works is the keyword rescue specifies an exception handler that will catch and handle any exceptions that are raised in the begin block, the code block preceding the rescue block that may cause an exception. Here’s how it looks: begin # code that may raise an exception rescue # code to handle the exception end When an exception occurs in the begin code block, Ruby transfers control to the rescue block and executes the code within it. And when no exception is raised, the rescue block is skipped and the program continues executing normally. Example: Using Rescue to Handle An Exception In this example, the divide method takes two arguments, a and b , and attempts to divide a by b . If b is zero, a ZeroDivisionError exception is raised. To handle this exception, we use a begin block followed by a rescue block. The rescue block catches the ZeroDivisionError exception and prints an error message to the console. It then sets the result to nil and returns it. def divide(a, b) begin result = a / b rescue ZeroDivisionError => e puts "Error: #{e. message}" result = nil end return result end puts divide(10, 2) # Output: 5 puts divide(10, 0) # Output: Error: divided by 0 # nil Output: 5 Error: divided by 0 The code block that might raise an exception is placed within the begin block, and the rescue block is used to... --- ### How Shortcut uses Rollbar to monitor JavaScript errors - Published: 2017-06-14 - Modified: 2022-12-07 - URL: https://rollbar.com/blog/how-shortcut-uses-rollbar-to-monitor-javascript-errors/ - Categories: company - Tags: customer-stories I'm eager to share an insightful interview our friends at Changelog recently did with Andrew Childs, CTO at Shortcut and Rollbar power-user. We're big supporters of the Changelog podcast and we asked them, to help us produce a handful of interviews with our customers. It's a fun project that lets us pull back the curtain and learn more about our customers processes for handling errors and deploying code. Read. Listen. Enjoy! Featured in this interview: Adam Stacoviak, Founder & Chief Editor at Changelog, a podcast on software development and open source. Andrew Childs, CTO of Shortcut, an easy-to-use project management tool for software teams. Adam: Andrew, let's start off with you telling me a bit about Shortcut. Andrew: Shortcut is a software company based in New York, building project management software, specifically for software teams that are looking for something simple and flexible but gives them a little bit more visibility into what the whole team is doing and where the team is going at a high level. Adam: How important is error tracking to Shortcut? Andrew: It's really important, because our software isn't perfect. You could see if you looked at our Rollbar, we have a constant stream of errors coming in that need to be fixed. People are leaving these windows open for weeks and they've got all these third-party extensions loaded, and those extensions are doing things to the page, rewriting things and rewriting stuff on DOM and it's like you're in a very hostile environment and... --- ### How to transform Rollbar payload in .NET Core 7 > Using Rollbar is great for Exceptions both handled and unhandled. But there is so much more you can get out of a solution like Rollbar.We often hear users asking us to log structured log data to Rollbar or that they have a custom Json object that they would like to store in Rollbar. - Published: 2023-04-12 - Modified: 2023-04-12 - URL: https://rollbar.com/blog/how-to-transform-rollbar-payload-net7/ - Categories: product - Tags: ai, chatai, ml Logging JSon data to Rollbar Using Rollbar is great for Exceptions both handled and unhandled. But there is so much more you can get out of a solution like Rollbar. We often hear users asking us to log structured log data to Rollbar or that they have a custom JSon object that they would like to store in Rollbar. If you just send in the Json object using Rollbar. Info(YOUROBJECT) you will find that it is placed in the message body as a string. This is fine but we can do a lot better. In my example below I want to use Rollbar to accept my logs from a . NET 7 API. I log everything to Rollbar not just exceptions. So I have created my own object that contains a set of properties and I would like to send that into Rollbar as something more than just a string message. Using Rollbar Payload Transformer Lets look atthe code example to use the Payload Transform function to modify the payload before it is sent to Rollbar. //Global Variables for access token and Environment const string rollbarAccessToken = "xxxxxxxxxxxxxxxxxxxxxx"; //Add your Server Side (Post) Rollbar Access Token string rollbarEnvironment = "production"; //Lets auto identify the Environment #if DEBUG // debug stuff goes here rollbarEnvironment = "development"; #else // release stuff goes here rollbarEnvironment = "production"; #endif //Send to Error Monitoring Solution RollbarLoggerConfig rollbarConfig = new RollbarLoggerConfig(rollbarAccessToken, rollbarEnvironment); RollbarLocator. RollbarInstance. Configure(rollbarConfig); //Lets send in a custom JSon Object butplace it into the... --- ### Turning Errors Into Action: How and Why Resolving Errors Matters - Published: 2017-05-30 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/turning-errors-into-action-how-and-why-resolving-errors-matters/ - Categories: product - Tags: triage Why resolving errors matters? After fixing a bug, who is responsible for making sure if it really resolves the customer's problem? A lot of companies take a fire-and-forget mentality where the developer makes a code change, and they never think of the problem again until someone complains. Developers often assume that the fix will be deployed with the next release, that the fix will behave the same in production as it does in their development environment, and that it resolves every case uniformly. Only for the most urgent problems will they wait for the fix to hit production and then verify the improvement on the customer's side. Let's face it, verifying the resolution of issues in production is a chore and takes away from developer productivity. Often, the developer has already moved on to other problems by the time fixes are deployed. In many companies that don't have continuous deployment, developers have little control over when releases get shipped. If you're using an issue tracking system, the developer's job usually ends when the code is written and merged. Even if developers wanted to go back and verify the fix works, they may not have the proper tracking tools to do so. Who is accountable for ensuring that bugs are fixed on the customer side? The support or product management teams will complain if it doesn't work as expected, but why should they be responsible? They have better things to do than follow up on dozens of bugs that are filed... --- ### How to Fix TypeError: Int Object Is Not Iterable in Python > The Python TypeError: Int Object Is Not Iterable is an exception that occurs when trying to loop through an integer value. Learn how to fix it. - Published: 2023-04-11 - Modified: 2023-04-11 - URL: https://rollbar.com/blog/python-typeerror-int-object-not-iterable/ - Categories: Code Tutorials, Python - Tags: Python The Python TypeError: 'int' object is not iterable is an exception that occurs when trying to loop through an integer value. In Python, looping through an object requires the object to be “iterable”. Since integers are not iterable objects, looping over an integer raises the TypeError: 'int' object is not iterable exception. Python TypeError: Int Object Is Not Iterable Example Here’s an example of a Python TypeError: 'int' object is not iterable thrown when trying iterate over an integer value: myint = 10 for i in myint: print(i) In the above example, myint is attempted to be iterated over. Since myint is an integer and not an iterable object, iterating over it raises a TypeError: 'int' object is not iterable: File "test. py", line 3, in for i in myint: TypeError: 'int' object is not iterable How to Fix TypeError: Int Object Is Not Iterable In the above example, myint cannot be iterated over since it is an integer value. The Python range function can be used here to get an iterable object that contains a sequence of numbers starting from 0 and stopping before the specified number. Updating the above example to use the range function in the for loop fixes the error: myint = 10 for i in range(myint): print(i) Running the above code produces the following output as expected: 0 1 2 3 4 5 6 7 8 9 How to Avoid TypeError: Int Object Is Not Iterable The Python TypeError: 'int' object is not iterable error... --- ### Introducing Error Merging ⎌ - Published: 2017-05-22 - Modified: 2025-04-22 - URL: https://rollbar.com/blog/introducing-error-merging-%e2%8e%8c/ - Categories: product - Tags: monitor We're excited to introduce merging (and un-merging) of errors! Merging errors lets you combine multiple errors into one 'group' for easier management and more accurate metrics. All past and future occurrences of any merged errors will automatically be combined and grouped. Today's merged errors are tomorrow's error groupings. :-) Merge errors When you encounter a duplicated error, you'll want to create a new 'group'. Select one or more errors from the same environment in the error Items feed. Slide the toggle in the box above to 'Merge', set appropriate Level, Status, Owner, and Source values, enter a name for the new item, and click 'Merge'. Done, error merge success! Un-merge errors Merged the wrong error by mistake? No problem! You can easily un-merge errors in Rollbar. Search for merged errors By default, errors which have been merged into a group will no longer appear. To view these errors, you can search for is:member. To only show grouped errors, you can search for is:group. We hope that you and your team will save more time in your day-to-day debugging efforts with Error Merging. Check out the error merging documentation for more details. We appreciate your feedback. Email support@rollbar. com and let us know your thoughts. If you haven’t already, signup for a 14-day free trial of Rollbar and let us help you defeat annoying errors in your applications. :-) --- ### How to Handle TypeError: Unhashable Type ‘Dict’ Exception in Python > The Python Unhashable Type ‘Dict’ exception usually occurs when trying to hash an unhashable object like a dictionary. Learn how to fix it. - Published: 2023-04-11 - Modified: 2023-04-11 - URL: https://rollbar.com/blog/python-typeerror-unhashable-type-dict-exception/ - Categories: Code Tutorials, Python - Tags: Python The Python TypeError: unhashable type: 'dict' usually occurs when trying to hash a dictionary, which is an unhashable object. For example, using a dictionary as a key in another dictionary will cause this error. This is because dictionaries only accept hashable data types as a key. Only immutable objects such as strings, integers and tuples are hashable since they have a single unique value that never changes. Hashing such objects always produces the same result, so they can be used as keys for dictionaries. TypeError: Unhashable Type: 'Dict' Example Here’s an example of a Python TypeError: unhashable type: 'dict'thrown when a dictionary is used as the key for another dictionary: my_dict = {1: 'A', {2: 'B', 3: 'C'}: 'D'} print(my_dict) Since a dictionary is not hashable, running the above code produces the following error: File "test. py", line 1, in my_dict = {1: 'A', {2: 'B', 3: 'C'}: 'D'} TypeError: unhashable type: 'dict' How to Fix TypeError: Unhashable Type: 'Dict' The Python TypeError: unhashable type: 'dict' can be fixed by casting a dictionary to a hashable object such as tuple before using it as a key in another dictionary: my_dict = {1: 'A', tuple({2: 'B', 3: 'C'}): 'D'} print(my_dict) In the example above, the tuple function is used to convert the dictionary to a tuple. The above code runs successfully and produces the correct output: {1: 'A', (2, 3): 'D'} Track, Analyze and Manage Errors With Rollbar Managing errors and exceptions in your code is challenging. It can make deploying... --- ### How to Handle TypeError: Cannot Unpack Non-iterable Nonetype Objects in Python > The TypeError:cannot unpack non-iterable nonetype objects occurs when we try to unpack a ‘None’ value as if it were an iterable object. Learn how to fix it. - Published: 2023-04-11 - Modified: 2023-04-11 - URL: https://rollbar.com/blog/python-typeerror-cannot-unpack-noniterable-nonetype-objects/ - Categories: Code Tutorials, Python - Tags: Python The Python error message cannot unpack non-iterable NoneType object typically occurs when we try to unpack a None value as if it were an iterable object. In this guide, we'll explore what this error means, why it occurs, and how to fix it. Let's take a closer look at the error message: TypeError: cannot unpack non-iterable NoneType object The first part of the message tells us that we've encountered a TypeError, which is an error that occurs when we try to perform an operation on a value of the wrong type. The second part of the message tells us that we're trying to unpack a non-iterable NoneType object. In Python, an iterable is an object that can be looped over, such as a list, tuple, or dictionary. And unpacking refers to extracting values from an iterable object and assigning them to individual variables. Example: Unpacking in Python In this example, we have defined a tuple my_tuple that contains three values. We then unpack the tuple into variables a,b, and c using the assignment statement. Each value in the tuple is assigned to a separate variable, which we can then use in our program. my_tuple = (1, 2, 3) a, b, c = my_tuple print(a) # Output: 1 print(b) # Output: 2 print(c) # Output: 3 The NoneType object is a special type in Python that represents the absence of a value. It is used to indicate that a variable or expression does not have a value or has an undefined... --- ### New and improved JavaScript notifier SDK - rollbar.js 2.0 - Published: 2017-05-20 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/new-and-improved-javascript-notifier-sdk-rollbar-js-2-0/ - Categories: product - Tags: JavaScript We are excited to announce a major update to our JavaScript notifier SDK in version 2. 0. This new version adds support for isomorphic or universal applications, which can run on both the client and the server. It standardizes the configuration and logging across environments, and makes it consistent with notifiers for other languages. Here are the big changes: Single library for both client and server side The JavaScript ecosystem has evolved a tremendous amount over the past several years. During that time, server side JavaScript usage has grown to the point where it is quite common to be using JavaScript throughout an application's stack. Applications now are often designed to run both in the client browser and on the server side using Node. These are commonly referred to as "isomorphic" or "universal" applications. The benefits of isomorphic applications include faster loading times, better support for legacy or mobile browsers, and easier search engine indexing. With the line between client and server blurring, it is desirable to have a unified view of exceptions across both environments. To make this possible, we unified the separate notifier libraries so that exceptions are logged uniformly. One require to rule them all. Consistent interface for configuration and logging across multiple environments We now offer a consistent interface for configuration and logging for both client and server side. Furthermore, it is consistent with our notifier libraries for other languages. This will make it much easier for developers since they only need to use one pattern.... --- ### Instacart, leader in grocery delivery, relies on Rollbar for production error monitoring - Published: 2017-05-15 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/instacart-leader-in-grocery-delivery-relies-on-rollbar-for-production-error-monitoring/ - Categories: company - Tags: continuous-delivery   Instacart, a leader in the on-demand marketplace, provides one-hour grocery delivery to users of their app and employs thousands of shoppers across the US to support order fulfillment. Of the one trillion dollar grocery industry, only 1% of market share currently comes from online grocery sales. As Instacart increasingly captures more of this market, they turn to Rollbar for continuous monitoring of their service’s health. With a promise of one-hour delivery, and a shopper workforce relying on their apps, Instacart’s services must be up at all times. Rollbar’s proactive alerting and granular error forensics facilitates the continuous integration and deployment pipeline at the heart of Instacart’s service. Rollbar allows us to go from alerting to impact analysis and resolution in a matter of minutes. It's fully ingrained into our development cycle and monitoring. Without it we would be flying blind. Arnaud Ferreri, Engineering Lead for the Consumer Team at Instacart. The Challenge While many industries have worked out how to participate in the on-demand marketplace, the one trillion dollar grocery industry is one of the last holdouts. Tight margins may be making some investors skittish. Retraining customer perception about grocery quality and freshness with app-ordered deliveries might be at play. Building and scaling the technology layer that acts as the on-demand engine has been a daunting challenge. It’s this last barrier to entry that Instacart has already dismantled. Since its inception in 2012, Instacart has been wooing grocery shoppers away from retail spaces and onto smartphones, to place grocery... --- ### 10 Best PHP Frameworks For Savvy Web Devs In 2023 > The most popular PHP frameworks used by the industry's most seasoned and savvy web developers are → ✓Larvel ✓Symfony ✓CodeIgniter ✓CakePHP... - Published: 2023-04-06 - Modified: 2023-04-20 - URL: https://rollbar.com/blog/10-best-php-frameworks/ - Categories: Code Tutorials, PHP - Tags: PHP What is a PHP framework? A PHP framework is a platform to build PHP web applications. PHP frameworks provide libraries for commonly used functions, which helps to cut down on the amount of original code developers need to write from scratch. A PHP framework provides a basic foundation for the development of web applications in PHP. Frameworks are useful because they speed up and standardize the development process, reducing doubts about how to start building an application. Why use a PHP framework? There are several reasons for using PHP frameworks compared to coding from scratch: Faster development - The time required for development is much less because of built-in libraries and tools. Better performance - Since frameworks are thoroughly tested for quality and performance, using PHP frameworks helps businesses meet their performance needs. Less code - The need to write original code is reduced when using functions built-in to frameworks. Libraries for common operations - Many tasks that developers need to perform when building applications can be repetitive e. g. validation, data cleaning and CRUD operations. Frameworks allow performing such common tasks using built-in functions. Following best practices - PHP frameworks usually follow best-practices e. g. they organize code in a clean and maintainable way and follow good naming conventions. More secure - Using PHP frameworks minimizes chances of exploits such as cross-site scripting and SQL injection. Good PHP frameworks have built-in defenses against such common threats. Enable teamwork - Using frameworks sets clear rules for projects, enabling developers to... --- ### Improved PHP error reporting with our latest rollbar-php 1.0 updates - Published: 2017-05-04 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/improved-php-error-reporting-with-our-latest-rollbar-php-1-0-updates/ - Categories: product - Tags: PHP We are excited to announce a significant upgrade to our PHP notifier SDK. This new version will make it much easier for customers to integrate their PHP apps with Rollbar. It uses the latest standards like Composer, proper namespaces, and is more reliable. Here are some of the highlights: Our first major 1. 0 release This major release of our PHP SDK represents a significant update in architecture, style, and quality for our PHP notifier. In addition, many outstanding issues were fixed so 1. 0 is more reliable and better tested than our prior versions. Our prior version, 0. 18. 2, was written in an old style of PHP with most of the code living in a single file. This was due to our desire to support the oldest version of PHP possible. Due to the changing landscape over the past couple years, it became reasonable to drop support for PHP 5. 2 and this opened the door for many language features which benefit both our code and yours. While the interface has undergone a redesign, it is still backward compatible with 0. 18. 2 via convenience functions. Support for Composer Our SDK is now properly supportive of composer which has become the de facto dependency management tool in PHP. Just add the following configuration to your composer. json file: { "require": { "rollbar/rollbar": "~1. 0" } } Standardized namespace We are now using PHP namespaces, a feature introduced in 5. 3. At the top of your file, you can... --- ### Rollbar Apple SDK 3.0.0 Released - Published: 2023-04-04 - Modified: 2023-04-04 - URL: https://rollbar.com/blog/new-apple-error-tracking-sdk/ - Categories: product - Tags: ai, chatai, ml Rollbar Apple SDK 3. 0. 0 Released We are excited to announce the latest release of our Rollbar SDK for Apple, version 3. 0. 0. This release includes several new features and enhancements to improve the functionality and performance of our error tracking and debugging platform. Complete rewrite of the crash reporting functionality The crash reporting functionality in the SDK has been completely rewritten. Crash reports now include the full crash stack trace, a meaningful description of what triggered the crash, and additional diagnostic information to make it easier to determine the root cause of the crash. Here are some of the key features and improvements included in this release: Improved Performance: We have made several performance enhancements to reduce the impact of the SDK on your application's runtime. This means that you can use Rollbar to track errors and exceptions without worrying about any impact on your app's performance. Custom Logging: With this new release, you can now log custom data to Rollbar using the SDK. This makes it easier to track and debug issues in your application by providing additional context around the error or exception. Support for SwiftUI: We have added support for SwiftUI, Apple's latest UI framework, to the Rollbar SDK. This means that you can now use Rollbar to track errors and exceptions in your SwiftUI-based apps. Improved Crash Reporting: We have made several improvements to our crash reporting capabilities, making it easier to identify and resolve issues in your application. Support for iOS 15:... --- ### Introducing hassle-free, compliant SaaS error monitoring - Published: 2017-04-26 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/introducing-hassle-free-compliant-saas-error-monitoring/ - Categories: product - Tags: security I'm very excited to announce that today, Rollbar is launching the first and only compliant SaaS error monitoring solution on the market. Our compliant solution meets the standards of HIPAA and ISO 27001, thanks to our team's hard work over the past 6+ months on our infrastructure, application, and policies. From the early days of Rollbar, I've been motivated to help developers build better software, faster, because I believe that empowering software developers is one of the most impactful (if not always visible) ways to improve all of our lives. We've seen customers use Rollbar to build and maintain just about everything you can imagine, from consumer apps to enterprise, healthcare, government, scientific research, and beyond. As we've found our way into applications that power more and more critical functions of modern society (like healthcare and finance), we realized that we would need to be able to meet those organizations' security and compliance requirements--somehow. Our first iteration was Rollbar On-Premises (which we do still offer)--passing the compliance burden off to customers--and a handful of eager customers signed on. Over time, however, we learned that not only is it difficult for us to maintain and support a self-hosted product, it's a huge pain for customers, too. Forgive me for quoting a competitor who seems to be learning the same thing: We went back to the drawing board to ask: why do customers need to self-host? And we realized that in almost all cases, they didn't. What compliance-conscious customers need is compliance,... --- ### Most Popular Java Backend Frameworks for 2023 - Published: 2023-03-28 - Modified: 2023-04-20 - URL: https://rollbar.com/blog/most-popular-java-backend-frameworks/ - Categories: topics - Tags: java An intuitive user interface is a hallmark of any decent business. But in order for the frontend of applications to work smoothly, you must also consider the backend. Backend development, also called server-side development, handles the behind-the-scenes functions of web development – things like interactions with databases, authorizing users and routing URLs. As the most popular programming language for over 20 years, Java has a whole host of backend frameworks, but their reliability and versatility vary widely. Today’s most popular Java backend frameworks are: Spring Framework Struts Hibernate This list is based on usage from Hotframework. com's Java ranking and several other sources including blog posts and GitHub download numbers. All three of these frameworks have a strong programmer community surrounding them, but each brings its own strengths and weaknesses to the table. Java Backend Frameworks – Quick Comparison Strengths Weaknesses Spring Framework 1. Many ready-made components that are helpful for web apps 2. DI and IoC create flexible configurations 3. Easy to expose RESTful services 1. Many dependencies 2. The wealth of options can lead to confusion 3. Learning curve since it can do so much Struts 1. A good starting point for beginners 2. Provides great flexibility with its unique MVC model 3. Less development time and easier to maintain 1. Not as many resources are available as compared to others 2. Less transparency means that apps using Struts are harder to optimize Hibernate 1. Data-focused 2. Its use of abstraction layers makes data configuration much easier 3.... --- ### Major JavaScript source map updates - Published: 2017-04-20 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/major-javascript-source-map-updates/ - Categories: product - Tags: JavaScript We’re excited to introduce a major update to JavaScript source map support in Rollbar! This update introduces several features unique to Rollbar (source map search, source map failure logs, inline warnings in stack traces) that are critical to anyone using client-side JavaScript in a large-scale, continuous deployment environment. Why Use Source Maps? If your application uses client-side javascript, then you’re probably minifying your code to reduce file sizes and improve page load times. The benefits of minified Javascript are clear, but minification also introduces the need for source maps in order to debug errors that were detected in minified code. Without a source map, it's nearly impossible to determine where an error occurred in your Javascript code. Due to the need for source maps, debugging minified code will always be inherently problematic, but we’ve just introduced several improvements to Rollbar’s source map handling that will make troubleshooting much, much easier. Something didn’t work right... When a Rollbar stack trace includes a minified file that doesn’t have a matching source map, you’ll now see an information message that links you to your project’s source map screen where you can further troubleshoot why the source map wasn’t available. View failed source map uploads and downloads More often than not, you look at your source maps because something didn’t work as expected. You can now see when Rollbar fails to access a source map, including detailed information about what happened. Filter and search your source maps On large projects with frequent deployments, you... --- ### What Are the Different Types of Python Errors? – and How to Handle Them > Understanding error types is an essential part of crafting effective Python apps. Each type denotes a distinct problem within the code. These 7 are typical. - Published: 2023-03-21 - Modified: 2023-05-16 - URL: https://rollbar.com/blog/python-errors-and-how-to-handle-them/ - Categories: Code Tutorials, Python - Tags: Python There are several types of errors that can occur in Python. Each type indicates a different kind of problem in the code, and comprehending these error types is crucial in creating effective Python applications. The most common types of errors you'll encounter in Python are syntax errors, runtime errors, logical errors, name errors, type errors, index errors, and attribute errors. Let's go through each with examples. How Do I Know What Type of Error I Have? When Python encounters an error, it typically stops the program and displays an error message that indicates the type of error and the line number where the error occurred. 1. Syntax Errors A syntax error occurs in Python when the interpreter is unable to parse the code due to the code violating Python language rules, such as inappropriate indentation, erroneous keyword usage, or incorrect operator use. Syntax errors prohibit the code from running, and the interpreter displays an error message that specifies the problem and where it occurred in the code. Here's an example of a Python syntax error: x = 10 if x == 10 print("x is 10") When the above code is executed in an IDE, we get the following output message that describes the error and the location in the code where it occurred: File "c:\Users\name\OneDrive\Desktop\demo. py", line 2 If x == 10 ^ SyntaxError: expected ':' It shows that there is a SyntaxError on line 2 of the file demo. py. Solution The SyntaxError occurs on line 2 because the... --- ### Error alert notifications + how to use them for better monitoring - Published: 2017-04-04 - Modified: 2025-04-22 - URL: https://rollbar.com/blog/error-alert-notifications-how-to-use-them-for-better-monitoring/ - Categories: product - Tags: monitor Rollbar offers an impressive array of error alerting and notification options for you to choose from, which is awesome! But sometimes we hear from our users that they aren't quite sure how to leverage their notifications to get the best results. What do notifications here at Rollbar do? How do they work? How should you interpret them? And perhaps most importantly, what are the best practices? Let's explore the answers to all these questions today. Rollbar supports many different messaging and incident management tools, so you and your team can get notified about errors and important events. These notifications can be anything from a message in a Slack channel to an alert in PagerDuty. There are some common notification types that we offer, no matter what tool you're using to be notified. Notification Type Triggered when... New Item An error/ message is seen for the first time. Every Occurrence Every time an error/ message occurs (use wisely). 10^th Occurrence 10th, 100th, 1,000th, 10,000th, ... occurrence High Occurrence Rate {x} occurrences seen in {y} minutes (configurable). Item Resolved An error/message is marked Resolved. Item Reopened An error/message is marked Active by a user. Item Reactivated An error/message occurs again after being marked Resolved. Deploy A new deploy is reported. Daily Summary (Available in email only) Summary of daily error/message activity in a project So now that you know what types of notifications you can get, how about customizing them? You can filter your notifications to adjust the circumstances under which you... --- ### What Makes a Company Attractive to Candidates? > In today’s competitive talent marketplace, making your company attractive to potential candidates is a must. In this case study, we covered how one of our favorite partners, Rollbar, achieves a great employer brand during the recruitment process. - Published: 2023-03-16 - Modified: 2023-03-16 - URL: https://rollbar.com/blog/what-makes-a-company-attractive-to-candidates/ - Categories: Uncategorized - Tags: business-impact, employee, recruiting Original Post Can be Found here: iseeq BLOG A recruitment case study with Rollbar As a recruitment agency, we (iseeq) can confidently say that we value the partners our candidates love the most – lucky for us, Rollbar is one of those clients in our current portfolio. Since establishing our partnership with them we successfully placed several outstanding individuals into their teams. What makes Rollbar so attractive for our candidates during the selection process and beyond that? What could other tech companies learn from them? We Interviewed Zita Lőrinczi, the company’s Business & People Operations Manager and we have answers! A mission that candidates are eager to contribute to Visions, missions, and values are not just must-haves or buzzwords to use at company presentations. Used wisely, they are key elements of the company’s everyday life and the building blocks of the culture. Occasionally they might even come in handy when it comes to attracting talent. Rollbar’s mission is to help developers build software quickly and painlessly. Needless to say, this statement is pretty attractive to their target audience in the job market. We would recommend every company that stays true to its core statements like vision, mission, or values to communicate those from the early stages of the recruitment process for like-minded candidates to be more engaged. Well-thought-out positions with clear requirements Gaining hundreds of applicants for an open position is all fun and games until companies find out that their witty texts are not just attractive to potential candidates,... --- ### Onboarding remote employees, on the other side of the world - Published: 2017-03-28 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/onboarding-remote-employees-on-the-other-side-of-the-world/ - Categories: product - Tags: team When I first started full-time here at Rollbar, I was living in Malaysia for the month, starting a year-long journey around the world that I'm currently still on. While it was certainly fun and exciting to explore Kuala Lumpur, it was a bit more difficult to onboard in a new job when I was 15 hours ahead of the rest of the team. Luckily, everyone here at Rollbar is incredibly flexible and helpful, and we were able to get creative about the onboarding process. If you're considering onboarding a remote employee in a different time zone as the rest of your team, read on for some tips and tricks that should help speed up the process. This is my third job in tech, and my second as a remote employee, so while I can't say I've seen it all in terms of onboarding, I have seen a few different methods. The most obvious (and easiest) method is to have your new team member come in to the office bright-eyed and bushy-tailed and have all the members of the team available to help make their onboarding a success. Unfortunately, if the team member you're onboarding doesn't live in the same area, that isn't really possible. What to do? Some companies get around this by requiring all remote employees come onsite for their onboarding. If you're an all-remote company, like the second place I worked, you've probably got the kinks figured out in terms of onboarding your new employees. In many ways... --- ### Using Rollbar for Performance Monitoring > Rollbar allows you to gain real-time visibility into exceptions and crashes in your applications and act on them quickly and easily. An important piece of any application is knowing if transactions are executing slower or below a certain threshold. - Published: 2023-03-15 - Modified: 2023-03-15 - URL: https://rollbar.com/blog/how-to-use-rollbar-for-performance-monitoring/ - Categories: product - Tags: ai, chatai, ml How to capture performance issues with Rollbar Rollbar allows you to gain real-time visibility into exceptions and crashes in your applications and act on them quickly and easily. An important piece of any application is knowing if transactions are executing slower or below a certain threshold. Rollbar provides an easy method to send this data to be processed quickly and easily inside your existing Rollbar project. First we need to understand what data and metrics we need to capture to help understand slow responses and understand the root cause of these. Let’s take a look at a Python application where we want to track slow responses as a Rollbar item. Here is what we recommend to ensure an easy way to use this data: We recommend sending events as warnings/errors based on thresholds. For example, "Request over 10s: project/index". Send the detailed timing information as a custom parameter. Include your standard Rollbar metadata like request, server, person, custom, etc. How will this performance data look inside Rollbar? Below is an example of API calls that have been logged in Rollbar where the request was over the set threshold (set in seconds). Python code to capture slow requests Let’s create the functions to help capture and log these slow transactions in our Python application. Sample Python code for a context manager to report slow code paths: import time import rollbar import logging log = logging. getLogger(__name__) class ReportIfSlow(object): default_thresholds = { 'error': 30, 'warning': 10, 'info': 2 } def __init__(self, message,... --- ### Building the IoT Rollbar error alarm - Published: 2017-03-11 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/building-the-iot-rollbar-error-alarm/ - Categories: Code Tutorials - Tags: monitor Our friends at Losant wanted to share how they built an actual 'error-alarm' using the Rollbar and Losant API's. Enjoy! When I envision a tech company's smart office, I see tons of dashboards and indicator lights that monitor everything. Efficient monitoring is a critical piece of today's technology stack, and there are always ways to improve. Rollbar already does an impeccable job at alerting you when errors are thrown in your application. But, to increase awareness, accountability, and awesomeness in the office, we can connect Rollbar to our smart office. In this tutorial, we are going to build an office error alarm powered by Rollbar and Losant. Building the Alarm Intel Edison - This is a small compute module that we will use to control the devices in our office. WeMo Insight Switch - This is a Wifi enabled, smart plug that we can control remotely. **Rotating Police Party Light - This is a regular party light. Setting up the Light Connect the WeMo Insight Switch to your office network using the WeMo app and plug in the light. You should be able to control the light with the WeMo app. Setting up Intel Edison The WeMo switch exposes a local API. There is a Node. js module that wraps the API so we can control the WeMo switch. Since the API is local, the Intel Edison must be on the same network as the WeMo switch to connect to the device. Intel has a configuration tool we need to... --- ### How to add context to errors with custom tags > One of the hardest tasks for software engineers is often having to stop what you are doing and look into a software bug (error), find the root cause and fix it quickly. This is hard because you may have never seen the affected code (someone else wrote it), it could be code you wrote a long time ago or just the context switching from what you are working on right now. - Published: 2023-03-13 - Modified: 2023-03-15 - URL: https://rollbar.com/blog/tag-errors-with-custom-tags/ - Categories: product - Tags: ai, chatai, ml How to add context to errors with custom tags An important component of understanding the root cause of an error, and the importance of an error to the business is having additional contextual information about the error. The specific additional data that is important for your errors will be unique for your application and possibly the category of the error. Rollbar provides an easy way to tag your error data with additional custom tags. There are 2 main ways of doing this. The first way to do it is to add the tags when Rollbar is initialized in your application or web page these tags will be sent with each error sent to Rollbar. The second way to do it is to add the tag in the context of a specific error or group of errors Custom tags included with the error can be either single string value or hierarchical key value data. For example Javascript JSON data , or Python dictionaries of dictionaries. For certain Rollbar SDKs additional custom data tags can be added for a specific context When triaging your errors in Rollbar, custom tags are displayed as table columns. Using the Rollbar Query Language (RQL) you can easily analyze and filter your error data by your custom data tags using familiar SQL style syntax. This is a powerful solution to help you to quickly understand the business impact and root cause of your errors. Track, Analyze and Manage Errors at Scale Managing errors and exceptions in your... --- ### Up your incident management alerts game with Rollbar and VictorOps - Published: 2017-03-02 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/up-your-incident-management-alerts-game-with-rollbar-and-victorops/ - Categories: product - Tags: integrations Resolving on-call errors can be faster and easier than ever before when you integrate VictorOps and Rollbar. VictorOps is a fantastic on-call management tool that provides incident notifications to engineers to help teams resolve incidents faster and minimize downtime. We're excited to announce that you can now automatically send your Rollbar items to VictorOps, and get alerted to new errors quickly - before your users notice. Linking Rollbar and VictorOps To automatically turn your Rollbar items into Alerts in VictorOps, read on. Configuration is per-project in Rollbar. Head to the Notification settings page for a project: Dashboard -> Settings -> Notifications -> VictorOps. In VictorOps, go to Settings (or Complete Setup) -> Alert Behavior -> Integrations, and choose Rollbar. Click "Enable Integration" if it's not already enabled. Copy the API key from VictorOps. In Rollbar, enter the API and routing keys, and click "Enable VictorOps Integration. " Congrats! You have now integrated Rollbar with your VictorOps account. Now, when a new error or higher occurs in Rollbar, it will create an Alert in VictorOps, which will be automatically resolved when it is resolved in Rollbar. If you want, you can customize the default rules by editing, adding, or deleting them. By bringing your Rollbar data into VictorOps, you can streamline your monitoring, minimize downtime, and resolve incidents faster. For more information, check out our integration docs for VictorOps. We also have an integration with another incident management alerts provider, PagerDuty; check out the docs here. To see if Rollbar integrates... --- ### How to Debug Code Using ChatGPT > ChatGPT can help you debug quickly and efficiently. Follow these 6 steps to engineer prompts that give the best results. - Published: 2023-03-13 - Modified: 2023-07-21 - URL: https://rollbar.com/blog/how-to-debug-code-using-chatgpt/ - Categories: topics - Tags: debug, OpenAI Unlike traditional debugging tools, which can be complex and require specific knowledge of the programming language, ChatGPT is accessible to programmers of all levels and works in any language. Simply ask ChatGPT specific questions about error messages or unexpected behavior and you’ll get a reply with relevant information that can help you identify and fix the issue. While every interaction with ChatGPT will be different (it is a chatbot afterall), there are some common steps to follow that will help you engineer prompts that give the best results. This blog post will walk through these steps and share examples. Step 1: Identify the Problem The first step in debugging is to identify the problem. This can be the most challenging part of the process, as the problem may not always be obvious. You may have to look for clues, such as error messages or unexpected behavior, to pinpoint the problem. You can ask ChatGPT questions about the error messages or the behavior you are seeing to get a better idea of what is causing the problem. Step 2: Isolate the Problem Once we have identified the problem, the next step is to isolate it. This involves finding the exact line or lines of code that are causing the problem. You can ask ChatGPT for help in determining which lines of code are causing the issue. Step 3: Reproduce the Problem In order to debug the problem, it's essential to reproduce it consistently. You can ask ChatGPT for guidance on how... --- ### Introducing our new Item Detail page - Published: 2023-03-09 - Modified: 2023-03-09 - URL: https://rollbar.com/blog/introducing-our-new-item-detail-page/ - Categories: product We’re excited to share a significant update to all Rollbar plans in the next few weeks. We’ve redesigned our item detail page with a new mobile layout, prioritized important error context, display occurrence details more clearly, and put all actions at your fingertips. With our new UI, we are confident you will work more efficiently, so you can resolve errors quickly and get back to your essential work. Error resolutions on the goFirst, our most requested design change. We understand you won’t always be at your laptop, but you want to manage your errors and resolve them as quickly as possible. Our new Item Detail page will allow you to check on all your errors from any mobile device, no matter where you are. We included easy-to-read views, collapsible panels to reduce scrolling, and new slide-over panels to reduce loading times. And we even built a new action panel that gives you access to all commands from anywhere on the page. Reduced scrolling We wanted to ensure you had the most crucial actions at the top of the page and that you could resolve your error as quickly as possible. You’ll always have access to update the error’s status. From muting or unmuting notifications, assigning ownership, or creating tickets, our action header gives you access from anywhere on the page. View Item Context detailsOur new context panel provides summarized data across all the occurrences within the Item. Now you can get important information about how your errors impact your users,... --- ### Item Detail Page Update Details - Published: 2023-03-09 - Modified: 2023-03-09 - URL: https://rollbar.com/blog/item-detail-page-update-details/ - Categories: product We have introduced a new design for the Item Detail page - as well as helping to investigate & resolve Items more quickly, the layout provides a framework for adding future improvements and also introduces a new style that will roll out across the Rollbar website in future. Updated Look & Feel The new design aims to bring a cleaner layout to the Item Detail page. The new design and layout will be gradually rolled out across the whole Rollbar site as we continue to update all pages. It also provides a structure for future improvements that we will be introducing to the Item Detail page. Some key elements include A fixed Action Header accessible from wherever you are in the Item Detail page An Item Header providing details about the Item itself, breadcrumbs for navigation and a clear section for Service Links Contextual information about the Item, giving an overview of the details across all the Occurrences grouped together in the Item Details of the individual Occurrence, such as the Stack Trace, Params & Telemetry Slideover panels to investigate Occurrences, IPs & People More prominent placement of the Item History panel to enable discussions with teammates We will discuss these sections in more detail below. Mobile Friendly Design The new Item Detail page is now optimized for use on mobile devices, enabling investigation and handling on the smaller viewport. The new layout provides a clear view of overview statistics, an easier ability to perform actions via the new header,... --- ### How to Fix RecursionError in Python > The Python RecursionError is an exception that occurs when the maximum recursion depth is exceeded. Learn how to fix it. - Published: 2023-03-08 - Modified: 2023-03-08 - URL: https://rollbar.com/blog/python-recursionerror/ - Categories: Code Tutorials, Python - Tags: Python The Python RecursionError is an exception that occurs when the maximum recursion depth is exceeded. This typically occurs when a function calls itself recursively, and the recursion doesn't have a proper stopping condition (base case). What Causes RecursionError A RecursionError in Python is caused by a function calling itself recursively without a proper base case. Python has a limit on the number of times a function can call itself recursively. This is to ensure that the function does not execute indefinitely. If this limit is exceeded by a recursive function, a RecursionError is raised. Python RecursionError Example Here’s an example of a Python RecursionError thrown when calling a recursive function that does not have a base case: def func: func func Since the recursive function func does not have a terminating condition, calling it creates an infinite loop as the function keeps calling itself over and over again until the RecursionError: maximum recursion depth exceeded error occurs: Traceback (most recent call last): File "test. py", line 4, in func File "test. py", line 2, in func func File "test. py", line 2, in func func File "test. py", line 2, in func func RecursionError: maximum recursion depth exceeded How to Fix RecursionError in Python Here are some approaches to fix a recursion error in Python: Adding a base case: The most common cause of a recursion error is that the function does not have a base case to stop the recursion. In such cases, a base case can be added... --- ### How to Fix ZeroDivisionError in Python > The Python ZeroDivisionError is an exception that occurs when a number is attempted to be divided by zero. Learn how to fix it. - Published: 2023-03-08 - Modified: 2023-03-08 - URL: https://rollbar.com/blog/python-zerodivisionerror/ - Categories: Code Tutorials, Python - Tags: Python In Python, a ZeroDivisionError is raised when a division or modulo operation is attempted with a denominator or divisor of 0. What Causes ZeroDivisionError A ZeroDivisionError occurs in Python when a number is attempted to be divided by zero. Since division by zero is not allowed in mathematics, attempting this in Python code raises a ZeroDivisionError. Python ZeroDivisionError Example Here’s an example of a Python ZeroDivisionError thrown due to division by zero: a = 10 b = 0 print(a/b) In this example, a number a is attempted to be divided by another number b, whose value is zero, leading to a ZeroDivisionError: File "test. py", line 3, in print(a/b) ZeroDivisionError: division by zero How to Fix ZeroDivisionError in Python The ZeroDivisionError can be avoided using a conditional statement to check for a denominator or divisor of 0 before performing the operation. The code in the earlier example can be updated to use an if statement to check if the denominator is 0: a = 10 b = 0 if b == 0: print("Cannot divide by zero") else: print(a/b) Running the above code produces the correct output as expected: Cannot divide by zero A try-except block can also be used to catch and handle this error if the value of the denominator is not known beforehand: try: a = 10 b = 0 print(a/b) except ZeroDivisionError as e: print("Error: Cannot divide by zero") Surrounding the code in try-except blocks like the above allows the program to continue execution after the exception... --- ### How to Integrate ChatGPT into Your Python Script > Want to add some cutting-edge AI magic to your code? Buckle up as we show you how to use ChatGPT in your Python script. - Published: 2023-03-04 - Modified: 2023-08-18 - URL: https://rollbar.com/blog/how-to-integrate-chatgpt-into-your-python-script/ - Categories: Code Tutorials, Python - Tags: OpenAI, Python Want to add some cutting-edge AI magic to your code? That's right, we're talking about integrating ChatGPT - the powerhouse of large language models - into your Python scripts. With ChatGPT, your code will be able to understand natural language and generate human-like responses, revolutionizing the way users interact with your applications. How to use ChatGPT in a Python script To use the ChatGPT language model in a Python script, you’ll make use of the OpenAI Python library. Here are the steps to follow: First, sign up for OpenAI API access at https://beta. openai. com/signup/ to get an API key.   Use pip to install the Python OpenAI API client library by entering the following line in the terminal: pip install openai Create an environment variable named OPENAI_API_KEY and put your API key as its value to configure your API key. Add the next line to your Python code to import the OpenAI API client: import openai Initialize the OpenAI API client by adding the following lines to your Python code: openai. api_key = "YOUR_API_KEY_HERE" model_engine = "gpt-3. 5-turbo" # This specifies which GPT model to use, as there are several models available, each with different capabilities and performance characteristics. Now call the openai. Completion. create function to generate text using the ChatGPT language model. Here's an example of how to generate a response to a given prompt. Note there is an initial "system" prompt, followed by the user's question: response = openai. ChatCompletion. create( model='gpt-3. 5-turbo', messages=) message =... --- ### Reducing noise in Stack Traces by collapsing non-project frames > Reducing noise in Stack Traces by collapsing non-project frames - Published: 2023-03-02 - Modified: 2023-03-03 - URL: https://rollbar.com/blog/reducing-noise-in-stack-traces-by-collapsing-non-project-frames/ - Categories: Engineering, Java, product, Python - Tags: java, non-project frames, Python Stack Traces What are Stack Traces? Debugging errors in your software often requires browsing stack traces (also called as backtraces or tracebacks). A stack trace is a sequence of stack frames which represents the chain of methods calling each other in your software. Rollbar collects your stack trace at the time a crash occurs – this way you will be able to know which pieces of code were active when an issue happened. You can find how to read stack traces in our previous blog post. In this post, we will show how we are making it easier and quicker for our users to investigate errors and resolve underlying issues. A Python traceback How many Stack Traces does Rollbar receive? Rollbar processes more than 70 million stack traces on an average day, coming from tens of thousands of software projects. We prepare stack traces to be more useful for debugging by organizing and linking them to other data sources. Adding code context to stack frames with SCM integrations like GitHub, and grouping duplicates into single items are just a couple of the processing pipelines stack traces go through to assist users. Lately we also aimed to reduce noise in the way we present stack traces in the Item Detail page. How do Stack Traces vary across languages? A typical stack trace from one programming language can differ from a stack trace from another programming language in many aspects. For example, in Python the convention is to show the most recent... --- ### How to Fix EvalError in JavaScript > The JavaScript EvalError occurs when the global eval() function is used in a way that is not allowed. Learn more about it here. - Published: 2023-02-16 - Modified: 2023-02-17 - URL: https://rollbar.com/blog/javascript-evalerror/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript The JavaScript EvalError occurs when the global eval function is used in a way that is not allowed. This exception is not thrown by the latest versions of JavaScript, however the object remains for compatibility. What Causes EvalError Since EvalError is not used in the current ECMAScript specification, it is not thrown by the runtime. However, the EvalError object itself remains for backwards compatibility with earlier versions of the specification. Newer versions of JavaScript do not throw the error. EvalError Syntax new EvalError new EvalError(message) EvalError Example Here’s an example on how to create an EvalError in JavaScript: try { throw new EvalError("An EvalError occurred"); } catch (e) { console. log(e. stack); } In the above example, an EvalError is thrown in the try block. It is caught in the catch block and its stack trace is printed to the console. When the above code is executed, the following output is produced: EvalError: An EvalError occurred at test. js:2:9 How to Fix EvalError The EvalError is not thrown in the latest versions of JavaScript. However, other errors such as SyntaxError or TypeError can potentially be thrown when using the eval function incorrectly. In modern versions of JavaScript, the eval function is considered a legacy feature and its use is discouraged. Instead of using eval, more modern and secure alternatives, such as the Function constructor or the vm module should be used. Here’s an example on how to use Function instead of eval: let code = 'return x * 2'; let... --- ### Caching Database Queries in SQLAlchemy - Part 1/2 > How to cache database ORM queries using Python's SQLAlchemy v1.3 library - Published: 2023-02-15 - Modified: 2025-02-19 - URL: https://rollbar.com/blog/caching-database-queries-in-sqlalchemy-part-1-2/ - Categories: Engineering, Python - Tags: Caching, Database, Python, SQLAlchemy The database is one of the most critical components here at Rollbar and its performance ripples across most of our SLOs. One of our goals last months has been to remove unnecessary or repetitive load from it as much as possible. Caching queries is the 101 solution whenever you need to keep scaling up while maintaining, or even reducing, database costs (very relevant these days). Here’s an example of how just one query has been drastically reduced thanks to caching. This is the first entry of a two-part blog explaining how we cache database ORM queries using Python's SQLAlchemy v1. 3 library inside Rollbar. Note the version we’re using, it’s important because the mechanism for intercepting SQLAlchemy queries has changed a bit between versions 1. 3 and 1. 4. In this first blog post we will talk about: Caching challenges at Rollbar Caching strategy Serialization format Caching with SQLAlchemy Intercepting SQLAlchemy queries Passing options to queries with Mapper Options Part two, which will be a following blog post, will describe how we make usage in Rollbar system of the caching strateggies we discussed in this part one Caching challenges at Rollbar Caching is a hard problem. Among all the things you must consider is cache invalidation, not invalidation as in: “I’m ok with eventual consistency” but as in: “I have refactored my code and my new model representation is incompatible with cached values, so I better don’t read stale data from cache or my application will be failing until TTL... --- ### Take control of monitoring and responding to your production Frontend Javascript errors > We are very lucky on the Rollbar Customer Engineering Team because we get to work with many many development teams. Each team develops, tests, and deploys their applications in their own way. They have chosen different languages and frameworks to solve their particular problem. We learn from each team that we work with, and share these learnings to our Product Design team. - Published: 2023-02-13 - Modified: 2023-02-13 - URL: https://rollbar.com/blog/responding-to-frontend-javascript-errors/ - Categories: Code Tutorials, JavaScript - Tags: error-handling, error-monitoring, JavaScript Take control of monitoring and responding to Errors We are very lucky on the Rollbar Customer Engineering Team because we get to work with many many development teams. Each team develops, tests, and deploys their applications in their own way. They have chosen different languages and frameworks to solve their particular problem. We learn from each team that we work with, and share these learnings to our Product Design team. Javascript development teams contact Rollbar because they want to to build a real-time error monitoring and response process primarily for 3 reasons: They don’t know what errors their end-users are experiencing They want to give their end users a higher quality experience They want to find and fix errors in their code efficiently We see one big difference between Javascript teams we help and teams that develop in other languages: For applications developed in other languages, the teams generally already has logging and some form of application performance monitoring in place for their Production environment. For Javascript applications, the teams generally have zero visibility into errors that their end users are experiencing. In some ways this makes perfect sense: The browser developer tools make debugging errors in pre-production too easy. Developing formal observability processes for application errors isn’t prioritized early in the life of a Javascript application. Client-side errors are typically not the responsibility of SRE teams. Since development teams are so busy, an observability and error monitoring solution just hasn’t been built Javascript errors can be noisy and teams... --- ### Can ChatGPT speed up software error resolution? > One of the hardest tasks for software engineers is often having to stop what you are doing and look into a software bug (error), find the root cause and fix it quickly. This is hard because you may have never seen the affected code (someone else wrote it), it could be code you wrote a long time ago or just the context switching from what you are working on right now. - Published: 2023-02-10 - Modified: 2023-07-21 - URL: https://rollbar.com/blog/chatai-for-software-error-resolution/ - Categories: product, topics - Tags: ai, ml, OpenAI Can ChatGPT speed up software debugging and error resolution? One of the hardest tasks for software engineers is often having to stop what you are doing and look into a software bug (error), find the root cause and fix it quickly. This is hard because you may have never seen the affected code (someone else wrote it), it could be code you wrote a long time ago or just the context switching from what you are working on right now. Our mission here at Rollbar is to help developers build software quickly and painlessly, so could AI and technologies like ChatGPT help move this forward? So let's explore some practical examples to see if this is true. Error detection / code quality scanning One of the potential uses of ChatGPT and indeed AI in general is to scan large amounts of data (code, files) and look into potential issues, errors and general poor implementation practices. We definitly see great value here that can out perform todays static and dynamic code analysis tools. What about error detection when code is running in production? This is best done by Error monitoring tools like Rollbar. Rollbar can detect an exception (handled or unhandled) in real-time capturing the full stack trace and data around the error that is key to understanding the root cause and ultimatly resolving the issue. This is where we think AI can be of great use! What if we can feed this real-time data to an AI solution that can... --- ### How to Fix Ruby Bundle Install Errors > Ruby’s "Bundle Install" command is used to install all the dependencies of a Ruby project. However, this command may fail for a variety of reasons. - Published: 2023-02-01 - Modified: 2023-02-16 - URL: https://rollbar.com/blog/ruby-bundle-install-errors/ - Categories: Code Tutorials, Ruby - Tags: ruby A bundle install command in Ruby is used to install all of a project's dependencies. But occasionally, this command could falter and issue an error. Numerous variables might be to blame for this issue, and fixing it might prove challenging. In this post, we’ll go through some of the typical reasons for bundle install errors in Ruby along with solutions. What Causes the Bundle Install Error? There could be a few different reasons for this error when running bundle install in a Ruby project. Some common causes include: 1. Outdated/Missing RubyGems One of the most common causes of bundle install errors is a missing or outdated version of the RubyGems package manager. RubyGems is a package manager for the Ruby programming language that is used to manage the installation and updating of Ruby libraries, also known as gems. If the version of RubyGems is outdated or missing, it may lead to errors when running bundle install. Solution: To fix this issue, we can update RubyGems to the latest version by running the command: gem update --system 2. Outdated/Missing BundlerGem Another common cause of bundle install errors is a missing or outdated version of the Bundler gem. Bundler is a gem that is used to manage dependencies in a Ruby project. If the version of Bundler is outdated or missing, it may lead to errors when running bundle install. Solution: To fix this issue, we can install or update the Bundler gem by running the command: gem install bundler 3. Conflicting... --- ### How to Handle ActiveRecord:: RecordNotFound in Ruby > When an application is unable to find a record corresponding to the parameters in the database, a RecordNotFound error message appears in Ruby. - Published: 2023-02-01 - Modified: 2023-02-01 - URL: https://rollbar.com/blog/ruby-activerecord-recordnotfound/ - Categories: Code Tutorials, Ruby - Tags: ruby ActiveRecord::RecordNotFound in Ruby is an error that occurs when an application is unable to find a record in the database that corresponds to the provided parameters. ActiveRecord is a Ruby gem that is used to interact with databases in a Rails application. It provides an object-relational mapping (ORM) layer that allows us to work with database records as if they were Ruby objects. When a record is requested using ActiveRecord, the gem will query the database and return the corresponding record if it exists. However, if the record cannot be found, Active Record will raise an ActiveRecord::RecordNotFound error. When does ActiveRecord::RecordNotFound error occur? The ActiveRecord::RecordNotFound error can occur in a number of ways. One common cause is when an application attempts to find a record by its ID and the provided ID does not exist in the database. For example, if an application attempts to find a user with an ID of 100 but there is no user with that ID in the database, Active Record will raise a RecordNotFound error. Another common cause of this error is when an application attempts to find a record using a query that returns no results. For example, if an application attempts to find a user with a specific email address and there is no user with that email address in the database, Active Record will raise an ActiveRecord::RecordNotFound error. Example 1 - ActiveRecord::RecordNotFound Error ActiveRecord::RecordNotFound in Ruby can be demonstrated with a simple example. Let's say we have a Rails application with... --- ### How to Implement Try Catch Finally Blocks in PHP > Using try-catch-finally blocks can help you write more robust and reliable code by handling exceptions in a controlled manner. Learn how! - Published: 2023-02-01 - Modified: 2023-02-01 - URL: https://rollbar.com/blog/php-try-catch-finally/ - Categories: Code Tutorials, PHP - Tags: PHP In PHP, try-catch-finally blocks are used to handle exceptions, which are runtime errors that occur during the execution of a script. Using try-catch-finally blocks can help write more robust and reliable code by allowing developers to handle exceptions in a controlled manner. Using Try Catch Finally Blocks Try-catch-finally blocks can be used in PHP to handle exceptions in the following way: The try block should contain code that can throw an exception. The catch block should contain code to handle the exception. The finally block should contain code that is always executed, regardless of whether an exception is thrown or not. Try Catch Finally Syntax Here is the basic syntax for implementing the try, catch and finally blocks in PHP to handle a single exception: try { // Code that can throw an exception } catch (ExceptionType $e) { // Code to handle the exception } finally { // Code that is always executed } Try Catch Finally Flow Control The following is the order in which exceptions are handled in PHP using try-catch-finally blocks: If an exception is thrown in the try block, script execution is halted and control is passed to the catch block. If no exception is thrown, script execution continues and the catch block is skipped. The catch block catches and handles the exception if one occurs. It must specify an exception type to catch, and also include a variable to store the exception object. This object can be used to get information about the exception,... --- ### Heroku Deploy App Webhook Support - Published: 2023-01-25 - Modified: 2023-01-25 - URL: https://rollbar.com/blog/heroku-deploy-app-webhook/ - Categories: company, product Heroku Deploy Hook Changes Starting October 17, 2022, Heroku will stop accepting new deploy hooks. Existing hooks will continue working until the product is sunset on February 17, 2023, Heroku encourages you to migrate your hooks as soon as possible. Read more here about the Heroku Deploy Hooks Sunset announcement. Rollbar has now implemented a receiver for the new Heroku App Webhooks in order to continue providing deploy tracking for the Heroku platform for all Rollbar users. Setup Instructions We created the following instructions for all users to migrate to the new deploy method. Read the detailed setup guide for Heroku Deployments to Rollbar Start using Rollbar via Heroku We have made it easy to start using Rollbar in every Heroku project by adding in Rollbar to your new project or existing project. View the Heroku Add-on here --- ### How to Handle the Unpermitted Parameters Error in Ruby > The Unpermitted Parameters error is raised when the given parameter is not expected in an update, create or user-defined action. Learn more. - Published: 2023-01-22 - Modified: 2023-01-22 - URL: https://rollbar.com/blog/ruby-unpermitted-parameters-error/ - Categories: Code Tutorials, Ruby The ActionController::UnpermittedParameters error occurs when a parameter that has been passed is not permitted in a create, an update, or a user-defined action. In older versions of Rails, information about the unpermitted keys was provided in the logs only when an unpermitted parameter was found in a request. This did not provide enough information for the developers to understand which controller and action received the unpermitted parameters. Raising the Unpermitted Parameters Error Makes for Easier Debugging Let's say we have a user who has a name, an email address, and a role attribute, and only the name and email attributes are permitted. requested_params = { user: { name: "Tony Stark", email: "tony@gmail. com", role: "admin" } } tempParams = ActionController::Parameters. new(requested_params) tempParams. permit(user: ) But in the log, we only get: Unpermitted parameter: :role As seen in the log, only information about the unpermitted key is provided, with no information about the controller or action that actually received the unpermitted parameter. If the log files don't specify which parameters are causing the problem, it will be very hard for a programmer to pinpoint the error when dealing with production-level code. How to Raise the Unpermitted Parameters Error in Ruby The two best ways to raise the Unpermitted Parameters error are as follows: 1. Modifying the Config File In order to raise the Unpermitted Parameters error, the ActionController::Parameters. action_on_unpermitted_parameters field should be set to :raise. We need to make changes in a config file development. rb by adding the below line... --- ### Runtime Errors in Ruby > A RuntimeError is a default exception raised when an invalid operation is performed. Let’s learn more about these errors with some examples. - Published: 2023-01-22 - Modified: 2023-01-22 - URL: https://rollbar.com/blog/ruby-runtime-errors/ - Categories: Code Tutorials, Ruby - Tags: ruby Exceptions are unintended events that take place when a program is being executed or during its runtime causing disruptions to the program's overall logic. In Ruby, a program is enclosed between the begin and end blocks and a rescue block is used to tell what types of exceptions are to be handled. When no class is specified, by default, a RuntimeError is raised by Kernel#raise. raise "an exception has occurred" This is equivalent to: raise RuntimeError, "an exception has occurred" Whenever these runtime exceptions occur, for example, a “divide by zero” error or an “index out of bounds” error, they stop the execution of the program completely, so it is good programming practice to handle them properly in our code. In the exception hierarchy, RuntimeError is a subclass of StandardError, which is a subclass of Exception. All Ruby exceptions are subclasses of the Exception class. Exception | |--> StandardError | |---> RuntimeError Example 1: How to Raise an Exception with a Message In the below code, we raise an exception with a message; by default, Ruby will raise the generic exception RuntimeError. begin raise "Raising our exception" rescue StandardError => e puts "Exception class is #{e. class. name}" puts "Exception message is #{e. message}" puts "Exception backtrace is #{ e. backtrace}" end Output of Example 1 Exception class is RuntimeError Exception message is Raising our exception Exception backtrace is Example 2: How to Raise a Generic Exception In the below code, a Runtime Exception (a generic exception) will be raised.... --- ### How to Fix HTTPError in Python > An HTTPError is raised when an HTTP request returns a status code that represents an error. Learn how to fix it. - Published: 2023-01-19 - Modified: 2023-01-19 - URL: https://rollbar.com/blog/python-httperror/ - Categories: Code Tutorials, Python - Tags: Python The urllib. error. HTTPError is a class in the Python urllib library that represents an HTTP error. An HTTPError is raised when an HTTP request returns a status code that represents an error, such as 4xx (client error) or 5xx (server error). HTTPError Attributes The urllib. error. HTTPError class has the following attributes: code: The HTTP status code of the error. reason: The human-readable reason phrase associated with the status code. headers: The HTTP response headers for the request that caused the HTTPError. What Causes HTTPError Here are some common reasons why an HTTPError might be raised: Invalid or malformed request URL. Invalid or malformed request parameters or body. Invalid or missing authentication credentials. Server internal error or malfunction. Server temporarily unavailable due to maintenance or overload. Python HTTPError Examples Here are a few examples of HTTP errors in Python: 404 Not Found import urllib. request import urllib. error try: response = urllib. request. urlopen('http://httpbin. org/status/404') except urllib. error. HTTPError as err: print(f'A HTTPError was thrown: {err. code} {err. reason}') In the above example, an invalid URL is attempted to be opened using the urllib. request. urlopen function. Running the above code raises an HTTPError with code 404: A HTTPError was thrown: 404 NOT FOUND 400 Bad Request import urllib. request try: response = urllib. request. urlopen('http://httpbin. org/status/400') except urllib. error. HTTPError as err: if err. code == 400: print('Bad request! ') else: print(f'An HTTP error occurred: {err}') In the above example, a bad request is sent to the server.... --- ### How to use Try Catch Throw in JavaScript > How to use Javascript Try Catch Throw to handle exceptions. - Published: 2023-01-17 - Modified: 2023-01-19 - URL: https://rollbar.com/blog/exception-handling-in-javascript-try-catch-throw/ - Categories: JavaScript - Tags: JavaScript How Javascript exception handling works. Try Catch Throw Throw, and Try... Catch... Finally The try statement defines a code block to run (to try). The catch statement defines a code block to handle any error. The finally statement defines a code block to run regardless of the result. The throw statement defines a custom error. Example Javascript exceptionExample Javascript exception In this example we misspelled "alert" as "allert" to deliberately produce an error: try { allert("Welcome to this test! "); } catch(err) { document. getElementById("pDemo"). innerHTML = err. message; } Implementing the Rollbar Javascript SDK helps speed up the error resolution flow. Here is the code example: try { allert("Welcome to this test! "); } catch(err) { Rollbar. error(err); document. getElementById("pDemo"). innerHTML = err. message; } Track, Analyze and Manage Errors With Rollbar Managing errors and exceptions in your code is challenging. It can make deploying production code an unnerving experience. Being able to track, analyze, and manage errors in real-time can help you to proceed with more confidence. Rollbar automates error monitoring and triaging, making fixing Javascript errors easier than ever. Try it today! --- ### How to Handle io.netty.handler.timeout.ReadTimeout Exception in Java > This exception is thrown when no data is read within a certain period of time when using the Netty framework. Learn how to handle it. - Published: 2023-01-10 - Modified: 2024-07-24 - URL: https://rollbar.com/blog/java-io-netty-handler-timeout-readtimeoutexception/ - Categories: Code Tutorials, Java - Tags: java The io. netty. handler. timeout. ReadTimeoutException is a runtime exception in Java that is thrown when no data is read within a certain period of time when using the Netty framework. Since the io. netty. handler. timeout. ReadTimeoutException is thrown at runtime, it does not need to be declared in the throws clause of a method or constructor. What Causes io. netty. handler. timeout. ReadTimeoutException The io. netty. handler. timeout. ReadTimeoutException is thrown when a read operation times out. This exception is typically thrown by the ReadTimeoutHandler in the Netty network application framework. Here are a few scenarios where a read operation might take longer than the timeout value: The server takes too long to process the request and send a response. A network issue causes delays in the transmission of data. The client takes too long to process data received from the server. io. netty. handler. timeout. ReadTimeoutException Example Here’s an example of an io. netty. handler. timeout. ReadTimeoutException thrown when the server takes too long to send a response. Three Java classes are created in this example to demonstrate how the exception can occur: SlowServer - A Netty server that is slow to respond to the client. SlowServerHandler - A handler for SlowServer that sleeps for 10 seconds before sending the response to the client. Client - A Netty client that tries to connect to SlowServer and read the response. SlowServer. java: import io. netty. bootstrap. ServerBootstrap; import io. netty. channel. ChannelFuture; import io. netty. channel. ChannelInitializer; import... --- ### How to Fix Runtime Errors in Python > A runtime error is a type of error that occurs during program execution. Learn how to fix them. - Published: 2023-01-10 - Modified: 2023-07-10 - URL: https://rollbar.com/blog/python-runtime-error/ - Categories: Code Tutorials, Python - Tags: Python A runtime error is a type of error that occurs during program execution. The Python interpreter executes a script if it is syntactically correct. However, if it encounters an issue at runtime, which is not detected when the script is parsed, script execution may halt unexpectedly. What Causes Runtime Errors Some of the most common examples of runtime errors in Python are: Division by zero. Using an undefined variable or function name. Performing an operation on incompatible types. Accessing a list element, dictionary key or object attribute that does not exist. Accessing a file that does not exist. Python Runtime Error Examples Here’s a few examples of runtime errors in Python: Division by zero If a number is divided by zero in Python, a runtime error is raised: print(100/0) In the above example, a number is attempted to be divided by zero. Running the above code raises a ZeroDivisionError: Traceback (most recent call last): File "main. py", line 1, in print(100/0) ZeroDivisionError: division by zero Using an undefined variable or function name A runtime error is raised if an attempt is made to access an identifier, such as a variable or function name, that is not declared previously: print(myString) In the above example, an undefined identifier myString is attempted to be accessed. Running the above code raises a NameError: Traceback (most recent call last): File "main. py", line 1, in print(myString) NameError: name 'myString' is not defined Performing an operation on incompatible types If an operation, such as addition, multiplication... --- ### How to Avoid java.util.concurrent.TimeoutException > The java.util.concurrent.TimeoutException is thrown when a blocking operation times out. Learn how to avoid it. - Published: 2022-12-23 - Modified: 2024-07-24 - URL: https://rollbar.com/blog/java-timeoutexception/ - Categories: Code Tutorials, Java - Tags: java The java. util. concurrent. TimeoutException is a checked exception in Java that is thrown when a blocking operation times out. Since java. util. concurrent. TimeoutException is a checked exception, it must be explicitly handled in methods which can throw this exception - either by using a try-catch block or by throwing it using the throws clause. What Causes java. util. concurrent. TimeoutException Blocking operations in Java that have a specified timeout require a way to indicate that the timeout has occurred. For many such operations, it is possible to return a value that indicates timeout. When this is not possible or desirable, TimeoutException should be thrown. java. util. concurrent. TimeoutException Example Here is an example of a TimeoutException thrown when a thread awaits at a barrier until the specified timeout elapses: import java. util. concurrent. BrokenBarrierException; import java. util. concurrent. CyclicBarrier; import java. util. concurrent. TimeUnit; import java. util. concurrent. TimeoutException; class TimeoutExceptionExample { public static void main(String args) throws TimeoutException, InterruptedException, BrokenBarrierException { CyclicBarrier barrier = new CyclicBarrier(2); barrier. await(10, TimeUnit. MILLISECONDS); } } In the above example, the main thread invokes the await method on an instance of CyclicBarrier with a specified timeout of 10 milliseconds. When the barrier is not reached by other threads within the specified timeout, a TimeoutException is thrown: Exception in thread "main" java. util. concurrent. TimeoutException at java. base/java. util. concurrent. CyclicBarrier. dowait(CyclicBarrier. java:257) at java. base/java. util. concurrent. CyclicBarrier. await(CyclicBarrier. java:435) at TimeoutExceptionExample. main(TimeoutExceptionExample. java:9) How to Avoid java. util. concurrent. TimeoutException... --- ### Guide to Frontend Error Handling > Discover the secrets to effective error handling and how to track errors in real-time. Don't miss out on the essential tips in this must-read guide. - Published: 2022-12-12 - Modified: 2022-12-12 - URL: https://rollbar.com/blog/guide-to-frontend-error-handling/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript To enhance user experience, avoid data loss, and guard against security vulnerabilities, frontend errors must be handled properly. In this post, we'll cover the most common types of frontend errors and best practices for handling them. We'll also explore how to use the popular error monitoring platform Rollbar to track and manage errors. Common types of frontend errors There are several types of frontend errors that can occur. The most common are: JavaScript runtime errors These occur when the JavaScript code in your application is executed in the browser and something goes wrong. Examples include syntax errors (e. g. a missing semicolon in your code) and reference errors (e. g. using a variable that has not been defined). Network errors These occur when there is a problem with the network connection between the browser and your application's server. Examples include failed HTTP requests (e. g. when the server is down or the request times out) and DNS errors (e. g. when the domain name cannot be resolved). User input errors These occur when users provide invalid or incomplete input to your application. Examples include validation errors (e. g. entering an invalid email address) and required field errors (e. g. forgetting to fill out a required form field). Best practices for frontend error handling To effectively handle frontend errors, follow these best practices: Display user-friendly error messages When an error occurs, always provide a clear and helpful error message. This helps users understand what went wrong and potentially guide them towards... --- ### What is E_WARNING in PHP? > PHP run-time warnings are non-fatal errors that do not halt script execution. Learn more about them here. - Published: 2022-12-12 - Modified: 2022-12-21 - URL: https://rollbar.com/blog/php-e-warning/ - Categories: Code Tutorials, PHP - Tags: PHP The PHP E_WARNING constant refers to run-time warnings. Warnings are non-fatal errors in PHP that do not halt script execution. What Causes E_WARNING PHP Warnings are errors that are issued when something unexpected or unwanted occurs in code. They are usually triggered because of minor mistakes such as: Referring to a file that does not exist. Wrong or missing arguments for inbuilt function calls. Sending HTTP headers after sending HTTP body output. It is considered good practice to fix warnings as they can potentially lead to serious issues over time. How to Enable E_WARNING It is best practice to enable E_WARNING during development since it warns developers about possible bugs in code. This can help with issues such as missing inbuilt function arguments and saves time when debugging. E_WARNING can be enabled using the error_reporting function: error_reporting(E_WARNING); This will show only E_WARNING errors. However, it is recommended to show all errors during development. This can be done by enabling E_ALL: error_reporting(E_ALL); E_WARNING Example Here's an example of a PHP E_WARNING issued when calling an inbuilt function with a missing parameter: When the above script is executed, a Warning is generated since the var_dump function expects an argument: PHP Warning: var_dump expects at least 1 parameter, 0 given in main. php on line 3 How to Fix E_WARNING PHP Warnings can be identified by inspecting the warning message and the line numbers in code where the issue exists. The issue can then be fixed in code to resolve the Warning. In... --- ### What is Migration in Rails? > Migration in Rails makes it easy to change an application's database schema consistently, but occasionally it trips up. Learn what steps you can take. - Published: 2022-12-05 - Modified: 2022-12-05 - URL: https://rollbar.com/blog/migration-in-rails/ - Categories: Code Tutorials, Ruby - Tags: ruby Migration in Rails is a tool that allows the developer to use Ruby to change an application's database schema. Instead of using SQL scripts, we use Ruby code, which is database independent, so it is easy to move the application to a completely new platform. We define these database changes in domain-specific language (DSL), and these migrations can be rolled back and managed along with the application source code. In Ruby, the db/migrate folder contains all the migrations in the form of files. The name of the file is in the form YYYYMMDDHHMMSS_name_of_migration. rb, which is the UTC timestamp followed by the name of the migration. One important point to remember here is that the migration class name should match the later part of the file name. For instance, 20220906120001_add_details_to_orders. rb should define the class AddDetailsToOrders (CamelCased). Using migration, we can create tables, add indexes on columns, and add or remove columns. Example of Migration in Rails Let's see an example to understand migration better: rails generate migration CreateEvents department:string The above command creates a migration that creates table events in our database. And a timestamped Ruby file, 20221119103635_create_events. rb, is also created in the db/migrate directory. A Ruby file would have the following contents: class CreateEvents < ActiveRecord::Migration def change create_table :events do |t| t. string :department t. timestamps end end end Let's examine the code shown above: The migration file class CreateEvents inherits from superclass ActiveRecord::Migration. 5. 7 describes the Rails version here. Then we have the method... --- ### How to Resolve NameError: Uninitialized Constant in Ruby > The NameError: Uninitialized Constant error in Ruby is often raised when a given variable or constant is undefined or invalid. Learn how to handle it. - Published: 2022-12-05 - Modified: 2022-12-05 - URL: https://rollbar.com/blog/ruby-nameerror/ - Categories: Code Tutorials, Ruby - Tags: ruby A NameError is raised when a referenced variable or a constant, such as a module, a class, or a constant variable, isn't defined or is invalid. The Uninitialized Constant error is a variation of the NameError exception class and has several reasons to occur. NameError: uninitialized constant Object::Something When this error occurs, several class names appear in place of Something. What causes an Uninitialized Constant Error? Let’s look at the most common reasons why NameError: Uninitialized Constant occurs: Whenever a class or module is referred to in code that can't be found, this error occurs. This often happens because the require method is missing, which is used to load another file and import all classes and method definitions from that file. Methods and variables in Ruby start with lowercase letters, whereas class names begin with uppercase letters. So in the code, if this distinction is missing, we'll get an Uninitialized Constant exception. Ruby is case-sensitive, so if there is any typo in the code, this error pops up. One small example of that is: X = 20; Y = 50; SUM = X+Y; print "Sum of x + y = ", sum; When the above code is executed, we get the following output: undefined local variable or method 'sum' for main:Object (NameError) If the code contains rubygems, which all new versions of Ruby disapprove of. Example of NameError: Uninitialized Constant Class Let’s examine and analyze one of the causes of Uninitialized Constant errors. This one occurs when the configuration of... --- ### What is E_NOTICE in PHP? > Run-time notices indicate minor errors in PHP that do not halt script execution. Learn more about them here. - Published: 2022-12-01 - Modified: 2022-12-12 - URL: https://rollbar.com/blog/php-e-notice/ - Categories: PHP - Tags: PHP The PHP E_NOTICE constant refers to run-time notices. Notices indicate that the script encountered something that could indicate an error, but could also happen in the normal course of running a script. What Causes E_NOTICE Notices indicate minor errors in PHP that do not halt script execution. They are usually triggered because of minor mistakes in code such as: Using a variable before declaring it. Typos in variable names. Using an ambiguous array index. Notice messages are not serious and can often be ignored. However, it is generally considered good practice to fix them. How to Enable E_NOTICE It is best practice to enable E_NOTICE during development since it warns developers about possible bugs in code. This can help with issues such as unassigned values, typos etc. and saves time for debugging. E_NOTICE can be enabled using the error_reporting function: error_reporting(E_NOTICE); This will show only E_NOTICE errors. However, it is recommended to show all errors during development. This can be done by enabling E_ALL: error_reporting(E_ALL); E_NOTICE Example Here's an example of a PHP E_NOTICE issued when using an undeclared variable: When the above script is executed, a Notice is generated since $mystring is not declared: PHP Notice: Undefined variable: mystring in main. php on line 2 How to Fix E_NOTICE PHP Notices can be identified by inspecting the notice message and the line numbers in code where the issue exists. The issue can then be fixed in code to resolve the Notice. In the earlier example, the notice message can... --- ### How to Fix E_WARNING: strpos(): Empty needle in PHP > This warning is issued if the substring being searched for using the strpos() function is an empty string. Learn how to fix it. - Published: 2022-11-17 - Modified: 2022-12-12 - URL: https://rollbar.com/blog/php-e-warning-strpos-empty-needle/ - Categories: PHP - Tags: PHP The PHP strpos($haystack, $needle, $offset) function is used to find the numeric position of the first occurrence of a substring in a string. The haystack parameter is the string to search in, and needle is the substring being searched for. The E_WARNING: strpos: Empty needle warning is issued if the needle substring is empty when calling the strpos function. E_WARNING: strpos: Empty needle Example Here’s an example of an E_WARNING: strpos: Empty needle issued when searching for an empty string using the strpos function: In the above example, since the needle parameter in the strpos function is an empty string, an E_WARNING: strpos: Empty needle is issued: PHP Warning: strpos: Empty needle in main. php on line 4 How to Fix E_WARNING: strpos: Empty needle The E_WARNING: strpos: Empty needle warning can be avoided by adding a check before calling the strpos function to ensure that the needle parameter is not an empty string. The function should only be called if the substring being searched for is not empty. The above approach can be applied to the previous example to avoid the warning: Here, a check is added to ensure that the strpos function is only called if the needle parameter is not an empty string. This avoids the E_WARNING: strpos: Empty needle warning, and the correct output is produced as expected: Continuing execution Track, Analyze and Manage Errors With Rollbar Managing errors and exceptions in your code is challenging. It can make deploying production code an unnerving experience. Being... --- ### How to Use errors.WithMessage() in Golang > The errors.WithMessage() method adds context to errors by annotating them with a new message which makes debugging easier. Learn more about it here. - Published: 2022-11-17 - Modified: 2024-07-24 - URL: https://rollbar.com/blog/golang-errors-withmessage/ - Categories: GoLang - Tags: golang In Golang, the WithMessage method allows you to annotate errors with an additional message. Often, error values by themselves don’t give enough context to be useful in debugging. Take, for example, Golang’s basic error handling technique: if err ! = nil { return err } In Golang, errors are treated as values, so err contains the error value. In this situation, a developer could make use of the error package to add context to the code along with the failure path without destroying the original value of the error. Syntax of WithMessage WithMessage annotates err with a new message. If err is nil, WithMessage returns nil. func WithMessage(err error, message string) error Example One In the below code, the errors package has been imported first, followed by an errors. New method is used and returns an error. Each call to New returns a distinct error value in the event that the content is indistinguishable. package main import ( "fmt" "github. com/pkg/errors" ) func main { cause := errors. New("What's the cause? ! ") err := errors. WithMessage(cause, "something unusual has occurred") fmt. Println(err) } Output something unusual has occurred: What's the cause? ! Example Two Let’s see another block of code to understand it even better. import ( "database/sql" "fmt" ) func second error { return sql. ErrNoRows } func first error { return second } func main { err := first if err == sql. ErrNoRows { fmt. Printf("Data error, %+v\n", err) return } } Output Executing the above... --- ### How to Handle the NoMethodError in Ruby > The NoMethodError is raised when an object on which we are calling the method doesn't exist. Learn how to use method_missing() to handle it. - Published: 2022-11-08 - Modified: 2022-11-11 - URL: https://rollbar.com/blog/ruby-nomethoderror/ - Categories: Code Tutorials, Ruby - Tags: ruby The NoMethodError is the most common error encountered in Ruby. As the name suggests, a NoMethodError occurs when the object on which we are trying to call a method or an attribute is not defined. For example when you call a method on an object that is nil or that is not defined: message = "hello world" message. dummyMethod Output: undefined method `dummyMethod' for "hello world":String (NoMethodError) Let’s take a look at some more examples and how to define a method_missing method to gracefully handle such errors. Example 1: NoMethodError in Ruby In the code example that follows, we've built a calculator that can operate on two numbers. In order to do these activities, we created the class' objects and called the various methods. class User: def plus(a,b) puts "The sum is : #{a} + #{b} = #{a+b}" end def mul(a,b) puts "The product is : #{a} * #{b} = #{a*b}" end end user = User. new user. plus(3,4) user. mul(5,6) user. divide(4,5) Output: Example 1 When the above code is executed we get the following output: The sum is : 3 + 4 = 7 The product is : 5 * 6 = 30 undefined method `divide' for # (NoMethodError) You can see that for the first two methods our code gave the correct answer but for the divide method we got NoMethodError. This indicates that the method which we are calling using the object user isn’t defined. Use method_missing to Handle NoMethodError in Ruby When dealing with small... --- ### How to Handle InvalidArgument Exception in PHP > The PHP InvalidArgumentException is an exception that is thrown when an inappropriate argument is passed to a function. Learn how to handle it. - Published: 2022-11-08 - Modified: 2022-12-12 - URL: https://rollbar.com/blog/php-invalidargumentexception/ - Categories: Code Tutorials, PHP - Tags: PHP The PHP InvalidArgumentException is an exception that is thrown when an inappropriate argument is passed to a function. This could be because of an unexpected data type or invalid data. What Causes InvalidArgumentException There are mainly two cases where an InvalidArgumentException can be thrown: When the strict_types flag is enabled and an unexpected data type is passed for an argument. When the data type of an argument is correct, but the data value is invalid. InvalidArgumentException Example Here’s an example of an InvalidArgumentException thrown when an inappropriate type is passed as an argument: In the above example, the multiply function expects two numbers as arguments. If either of the two arguments are not numbers, an InvalidArgumentException is thrown: PHP Fatal error: Uncaught InvalidArgumentException: Both arguments must be numbers in main. php:8 Stack trace: #0 main. php(13): multiply #1 {main} thrown in main. php on line 8 How to Handle InvalidArgumentException in PHP The following steps should be followed to handle an InvalidArgumentException: Inspect the exception stack trace and identify the lines of code that pass the invalid argument. Update the code to make sure that the passed argument is valid within the method that uses it. To catch the InvalidArgumentException, try-catch blocks can be used. Certain situations can be handled using a try-catch block such as asking for user input again instead of stopping execution when an invalid argument is encountered. Track, Analyze and Manage Errors With Rollbar Managing errors and exceptions in your code is challenging. It can make... --- ### How to Handle an ActionController:: RoutingError in Ruby on Rails > The Rails version of the 404 error, ActionController::RoutingError occurs when a URL requested does not have a matching route. Learn how to catch them. - Published: 2022-11-08 - Modified: 2022-11-09 - URL: https://rollbar.com/blog/ruby-on-rails-routingerror/ - Categories: Code Tutorials, Ruby - Tags: ruby The ActionController::RoutingError is the most common error faced when working on a Ruby on Rails project - it’s equivalent to the classic 404 error in web applications. The ActionController::RoutingError indicates that there isn't a route in the application for the URL entered by the user in the browser. Wait, What is an ActionController? ActionController is the "C" in the Model-View-Controller software design pattern. It is made up of several actions that are carried out in response to a request and either redirects to another action or renders a template. It serves as an intermediary between views and models, and is the foundation for all web requests made using Rails. How to Handle an ActionController::Routing Error When the ActionController::RoutingError error occurs, a log record is created as follows: ActionController::RoutingError (No route matches "... . . "): It’s best to explicitly catch and throw the ActionController::RoutingError with a custom message. This is because they may go unnoticed in the log files. To do so, add the following code in your config/routes. rb file: Rails. application. routes. draw do # all your other routes match '*unmatched', to: 'application#not_found_method', via: :all end Now you need to add this not_found_method in your ApplicationController. class ApplicationController < ActionController::Base protect_from_forgery with::exception def not_found_method render file: Rails. public_path. join('404. html'), status: :not_found, layout: false end end This will serve your 404 page every time a user-provided URL lacks a suitable route. Keep in mind though that any route or engine that is mounted after the application loads won’t... --- ### How to Handle PDOException in PHP > The PHP PDOException is a runtime exception that occurs when something goes wrong while using the PDO class or its related extensions. Learn how to handle it. - Published: 2022-10-31 - Modified: 2022-12-12 - URL: https://rollbar.com/blog/php-pdoexception/ - Categories: Code Tutorials, PHP - Tags: PHP The PHP PDOException is a runtime exception that occurs when something goes wrong while using the PDO (PHP Data Objects) class or its related extensions. For example, this exception can occur while handling database connections or queries. What Causes PDOException PHP Data Objects (PDO) are a collection of APIs that are used to access and work with databases. The PDOException is thrown anytime an issue occurs while using the PDO interface. Common situations where this exception can occur are: Attempting to connect to a database e. g. entering an incorrect password for the database connection. Issuing an SQL statement e. g. missing database table, invalid SQL statement. PDOException Example Here’s an example of a PHP PDOException thrown when facing issues connecting to a database using the PDO interface: In the above example, the PDO class is used to establish a connection to a database. Since the database connection parameters are incorrect, running the above code throws a PDOException: PHP Fatal error: Uncaught PDOException: SQLSTATE Connection refused in main. php:2 Stack trace: #0 main. php(2): PDO->__construct('mysql:host=loca... ', 'user', 'pass') #1 {main} thrown in main. php on line 2 How to Handle PDOException The PDOException can be caught and handled using a try-catch block. The try block should contain the lines of code that can throw the exception and the catch block should catch and handle the PDOException appropriately. The message associated with the exception can be retrieved using the Exception::getMessage method on the PDOException object. Using the above approach, the previous... --- ### Using JavaScript source maps to debug errors - Published: 2017-02-13 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/using-javascript-source-maps-to-debug-errors/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript Some of the most common questions we get here at Rollbar deal with source maps: What are source maps and what do they do? How can you enable source mapping? Why aren't your source maps working properly? Let's explore Javascript source maps together, starting with the basics. {: . highlightbox} Existing Rollbar users, go to our JavaScript source maps documentation to get started. As web developers, we have two major goals. First, we want a highly performant website. Second, we want that website to be easy to debug and maintain. Unfortunately, these goals are often at odds with one other. If we minimize our JavaScript, we can achieve some of these goals. Minimizing JavaScript reduces the download size, and the smaller the payload for our website users, the better. If we combine our JavaScript files, we can also reduce the number of http requests. For a highly performant website, we want to reduce the number of requests the browser has to make in order to fully load, render, and process the page. Furthermore, with transpilers, we can start using new JavaScript features before they are implemented by the browsers. Unfortunately, minimizing JavaScript also comes with some downsides: it's hard to debug, and we lose original filenames, line numbers, and column numbers. Luckily, source maps solve this problem. A source map is a file that provides a mapping from the minified line and column numbers back to the original file, line, and column. Source maps use Base64 VLQ encoding to reduce... --- ### How GorillaStack used Rollbar to level up logging with the Serverless framework - Published: 2017-02-07 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/how-gorillastack-used-rollbar-to-level-up-logging-with-the-serverless-framework/ - Categories: product - Tags: integrations Our friends at GorillaStack wanted to share how they set up Rollbar with the Serverless framework, and made a handy tool so you can do the same. Here at GorillaStack, we are big lovers of the Serverless framework. By default, the Serverless framework uses CloudWatch logs to store any system log messages and output from your lambda code. Pretty quickly, we found ourselves needing to escalate log messages such that we could be notified of application errors and act on them more proactively. Enter Rollbar. I have been using their service on many side projects since discovering their free tier some years ago. We also robbed them of almost all their swag at the last re:Invent conference. Rollbar is a great system to use for escalating errors and messages from your applications. Best of all, there are options for adding it as a transport for popular logging solutions. As users of the node module 'winston', we found a transport available for Rollbar. Unfortunately, it wasn’t quite up to date, and didn’t format certain argument orders correctly, so we forked it ourselves. :) https://github. com/GorillaStack/winston-rollbar Using this integration with your application logging library, messages of all levels will still be logged to CloudWatch logs, but those at or above a configured log level will be escalated to Rollbar, which will then notify you of application errors as they occur. As we usually do, we decided to publish an open source example to demonstrate our approach. To get started, the only thing... --- ### Connect Rollbar to your source code and issues in GitLab - Published: 2017-01-31 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/connect-rollbar-to-your-source-code-and-issues-in-gitlab/ - Categories: product - Tags: integrations Good news for GitLab users! You can now deep link error stack traces in Rollbar directly to the code in your GitLab repos. Rollbar now supports GitLab's native issue tracking features, allowing you to seemlessly debug and manage new issues as they happen in your existing workflow. We’ve rolled out support for source control for both GitLab. com and self-hosted. Issue tracking only supports GitLab. com, self-hosted support is coming soon. Linking source code in GitLab to Rollbar stack traces (/docs/gitlab/" alt=""> Whenever Rollbar detects errors in your application, you receive a detailed stack trace. By connecting your GitLab repos, you can also click through from the stack trace in Rollbar directly to the underlying code that broke in GitLab. It's like having x-ray vision for your application errors. Turn errors in Rollbar into trackable issues in GitLab (/docs/gitlab/" alt=""> (/docs/gitlab/" alt=""> (/docs/gitlab/" alt=""> Rollbar now supports GitLab issue tracker. It's a fairly straightforward integration: When viewing an error in Rollbar, simply click the "Create GitLab Issue" button to send the error details to GitLab. You can also link an error in Rollbar to an existing GitLab Issue, by copying and pasting the URL for the GitLab Issue you would like to link. When you connect Rollbar and GitLab together, your debugging and error monitoring will become much more efficient. For more information, visit our GitLab documentation or press release for details. Level up your issue and error tracking workflow when you connect Rollbar to GitLab. GitLab users, signup and... --- ### Rollbar integration for the Ionic framework - Published: 2017-01-06 - Modified: 2025-02-19 - URL: https://rollbar.com/blog/rollbar-integration-for-the-ionic-framework/ - Categories: Code Tutorials - Tags: SDK Our friends at Cuttlesoft wanted to share how they use Rollbar to detect errors in Ionic built applications. Enjoy! At Cuttlesoft, we use Rollbar's excellent full-stack error monitoring service for pinpointing and fixing tricky bugs. Our team loves Rollbar for its integrations with other popular services (we get our error notifications via Slack so we’re constantly in the know). For building hybrid mobile and progressive web apps, we generally rely on Ionic. Ionic is an open-source framework for hybrid mobile app development maintained by Drifty. Built with AngularJS and Cordova, Ionic is a popular tool for mobile developers everywhere. To combine these two, we've developed a method for integrating Rollbar error tracking with the Ionic stack. We find it so useful that our co-founder and CTO Emily Morehouse wrote a tutorial for using our method of integration so that you too can harness the bug-squashing power of Rollbar + Ionic. Using just a few tools, we'll show you how to make Rollbar work in perfect sync with Ionic. Since Ionic is a hybrid framework, there are a few different services where Rollbar needs to be plugged in: Native iOS Native Android JavaScript To do this, we'll use a few different plugins that help monitor each OS and stack layer. We'll use Emily Morehouse's fork of the Cordova Rollbar plugin to catch native errors, and the ng-rollbar AngularJS plugin to catch our Ionic application errors. Now, let's dive in. The first (and easiest) plugin to set up is the Cordova plugin,... --- ### Better workflows for managing errors - Published: 2016-12-21 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/better-workflows-for-managing-errors/ - Categories: product - Tags: triage Happy Holidays Rollbar users! We're gifting you a handful of updates to a key feature in Rollbar, the Live Error Feed. We recently rolled out some improved fucntionality to the Live Error Feed, most notably the ability to quickly view and assign ownership of errors with your team. Instantly know who's working on what and ensure that urgent production issues don't get overlooked. Here's an overview of how these updates will help you and your team members better manage errors in Rollbar: Assign individual errors directly within the feed Multi-select and assign errors Filter to view all assigned or unassigned errors Filter by owner Quickly Resolve and Mute errors Easily change severity of errors Improved look and feel By streamlining the live error feed, we hope that you and your team will save more time in your day-to-day debugging efforts. We appreciate your feedback. Email support@rollbar. com and let us know if there's anything you think we could do better. If you haven’t already, signup for a 14-day free trial of Rollbar and let us help you defeat annoying errors in your applications. :-) --- ### Ruby Exception Handling - Primer for Dealing with Errors in Ruby - Published: 2016-12-19 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/ruby-exception-handling-primer-for-dealing-with-errors-in-ruby/ - Categories: Code Tutorials, Ruby - Tags: ruby Ruby is a popular open source programming language that is highly flexible, and used for everything from basic "hello world" apps to sophisticated, dynamic programs. Whether you've been programming in Ruby for years or you're a complete beginner, tracking down errors in your Ruby app is simple and easy. Let's go through some basic Ruby error handling, and discover how easy it can be to integrate Rollbar into your Ruby app to automatically log and report your exceptions. Raise and Rescue Exceptions Ruby's default exception handling is to terminate the program in the event of an exception. That's not really useful when you're trying to build a complex web application for multiple users. Luckily there's a way around this - declaring exception handlers. Exception handlers are blocks of code that are called if an exception occurs in the execution of another block of code in your program. For the most basic Ruby exception handling, you need to know how to Raise and Rescue an exception. When you Raise an exception, you stop the normal flow of the program, and execute the code that deals with handling an error. This code can either deal with the error in some way, or terminate the program. If you provide a Rescue clause in your error handler, you can choose how to deal with the exception; without it, the program will simply terminate. Ruby Exception Hierarchy Ruby has a predefined Exception class, with quite a few subclasses that can be used for basic error... --- ### Join Rollbar at AWS re:Invent - Published: 2016-11-21 - Modified: 2025-02-19 - URL: https://rollbar.com/blog/join-rollbar-at-aws-reinvent/ - Categories: company - Tags: Events Join us this year at Amazon Web Services annual conference, re:Invent! Rollbar will be participating along side of Atlassian and other Atlassian ecosystem partners like StatusPage, Splunk, Puppet, Xmatters and Workato. We will all be in the Atlassian booth demonstrating how our solutions work better together. Come by and check it out - booth 2446. Come join us at the event and see how integrating Rollbar’s error monitoring with Atlassian’s products provides teams with: Instant error grouping and aggregation: Errors are grouped by root cause and linked to your source code within Bitbucket. Real-time notifications: Intelligent alerting rules configured for JIRA. Easy workflow and prioritization: Discover the most impactful errors with data and create issues in JIRA instantly with rich data, contextual details and error analytics. Faster time to resolution: Debug, deploy fixes and track regressions much faster when your error data moves through JIRA and Bitbucket automatically. We'd love to chat with you in person at AWS re:Invent. Make plans to stop by booth 2446 and say hi. We look forward to meeting you. --- ### Deep link stack traces to Bitbucket and track Pipeline deploys - Published: 2016-11-14 - Modified: 2025-04-22 - URL: https://rollbar.com/blog/deep-link-stack-traces-to-bitbucket-and-track-pipeline-deploys/ - Categories: product - Tags: integrations Good news for Bitbucket users! You can now deep link error stack traces in Rollbar directly to the code in your Bitbucket repos. Rollbar also now integrates with Bitbucket Pipelines. Deep links to your source code in Bitbucket Configure Pipelines to notify Rollbar of new deploys Once Pipelines is configured, every deploy of your app will automatically be tracked in Rollbar. Making it easier to identify which code changes led to critical production issues. Rollbar integrates with the following Bitbucket features, Bitbucket Issue Tracker, and now Bitbucket repos and Bitbucket Pipelines. Don't forget Rollbar also integrates with other Atlassian products, like JIRA, HipChat and of course Bitbucket. Dealing with errors can be time consuming and often an interruption in your everyday development workflow. It's important that we continue to work to improve this process and that we extend the capabilities and insights of your current toolset and workflows. We hope that you enjoy the new integration options! Supercharge your issue and error tracking workflow when you connect Rollbar to Bitbucket. Sign up for a 14-day free trial of Rollbar and let us help you take control of your annoying production errors. --- ### Correlate errors to feature rollout tests with Rollbar and Split - Published: 2016-11-03 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/correlate-errors-to-feature-rollout-tests-with-rollbar-and-split/ - Categories: product - Tags: integrations Our friends at Split wanted to let you know that you can now integrate Rollbar with Split. And take control of your error handling and feature rollouts - together. Enjoy! :-) Rollbar is an excellent error monitoring service that works across all of the languages Split supports. It’s great at telling you what’s going wrong and where, but doesn’t necessarily have all the details on why. That’s where Split comes in, with our new Rollbar integration. We built Split to help teams take control of their deployments by slowly delivering features to targeted groups of users. In this way you can limit the scope of trouble when things do go wrong, killing the feature until it’s fixed, then slowly rolling it out again. Our new integration brings rollout metadata from features in Split into the Rollbar interface, so teams can quickly correlate errors against the latest deployments. When it looks like a recently-released feature was responsible for the degradation of service, Rollbar users can click-through to Split to quickly take action, saving valuable time in the remediation process. Here's a a quick demo on how Rollbar and Split work together to make your controlled feature rollouts more productive. Like you, we care deeply about giving your end-users the best experience possible, and Split’s controlled rollouts paired with Rollbar’s robust error notification make delivering on that promise easy. Our Rollbar integration is free to customers of both services, and you can always try Split free for 30 days. To learn more,... --- ### A better error monitoring workflow Rollbar + Atlassian - Published: 2016-10-12 - Modified: 2025-04-22 - URL: https://rollbar.com/blog/a-better-error-monitoring-workflow-rollbar-atlassian/ - Categories: product - Tags: integrations Dealing with errors can be time consuming and often an interruption in your everyday development workflow. It's important that we at Rollbar continue to work to improve this process and that we extend the capabilities and insights of your current toolset and workflows. Atlassian users can now rejoice! Debugging errors just got a whole lot easier and faster. With our latest improvements and integrations with Atlassian products you can now keep tabs on your application directly within the tools you're already using to build it. No more switching between multiple tools and services to debug and deploy code. Creating a seamless user experience and unified workflow around production errors. Integrating Rollbar’s error monitoring with Atlassian’s products provides teams with: Instant error grouping and aggregation: Errors are grouped by root cause and linked to your source code within Bitbucket. Real-time notifications: Intelligent alerting rules configured for HipChat and JIRA. Easy workflow and prioritization: Discover the most impactful errors with data and create issues in JIRA instantly with rich data, contextual details and error analytics. Faster time to resolution: Debug, deploy fixes and track regressions much faster when your error data moves through HipChat, JIRA and Bitbucket automatically. Take your production error monitoring to the next level and maintain your existing workflow. By integrating Rollbar with JIRA, HipChat and Bitbucket you can detect, diagnose and resolve errors in less than 2 minutes! By integrating Rollbar with JIRA, HipChat and Bitbucket you can Detect, diagnose and resolve errors in less than 2 minutes!... --- ### Rollbar add-on now available for JIRA - Published: 2016-10-10 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/rollbar-add-on-now-available-for-jira/ - Categories: product - Tags: integrations We’ve recently released a new JIRA Add-On to help extend your application error monitoring workflow. JIRA is one of the leading issue tracking solutions used by agile teams. Enabling them to plan, track, release and support building better software. Send rich error data to JIRA Connect Rollbar to JIRA and enhance issues with detailed error data like stack trace, error status, total occurrences, unique IPs affected, first seen date, last seen date and the date the error reoccurred and regressed. All conveniently displayed, linked and accessible within JIRA. Here are a few of the ways you can improve your monitoring workflow when you connect Rollbar with JIRA and install the new Rollbar for JIRA add-on: Link and display root cause exception data in issues. Set notification rules to automatically open new issues. Create and assign JIRA issues with a few clicks. Bidirectional syncing, update statuses in both Rollbar and JIRA. (/integrations/atlassian/" alt="jira-rollbar"> PRO TIP / REMINDER: Automatically (and manually) create JIRA issues from Rollbar errors when you configure JIRA as a Notification Channel in Rollbar. Supercharge your issue tracking when you use JIRA Notications + Rollbar for JIRA Add-On together. Check out our JIRA documentation for details. (/integrations/atlassian/" alt=""> To install the new Rollbar for JIRA add-on: In your JIRA account go to Admin > Add-ons Search for "Rollbar" Click "Install" on the Rollbar for JIRA add-on OR Go to our Atlassian Marketplace listing for JIRA Click 'Get it Now' We hope that by bringing Rollbar data into JIRA you... --- ### How CircleCI uses Rollbar to level up their continuous delivery - Published: 2016-09-22 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/how-circleci-uses-rollbar-to-level-up-their-continuous-delivery/ - Categories: company - Tags: customer-stories I'm excited to share a fun and insightful interview our friends at The Changelog recently did with Paul Biggar, Founder at CircleCI (and Rollbar super-user). We're big supporters and fans of The Changelog and we asked their host and master interviewer Adam, to help us produce a few short interviews with our customers. It's a fun project that lets us pull back the curtain and learn more about how our customers monitor their applications and processes for handling errors and deploying code. Enjoy! {: . highlightbox} Featured in this interview: Adam Stacoviak, Founder & Chief Editor at The Changelog, a podcast on software development and open source. Subscribe via iTunes or RSS. Paul Biggar, Founder of CircleCI, a leading continuous integration platform. Adam: Hey there. Adam here, editor-in-chief of Changelog. I'm here with Paul Biggar, founder of CircleCI (circleci. com) and we're gonna talk about how important Rollbar is to him and his team to help them deliver on their brand promise to ship better coder faster. Paul, tell me about CircleCI. What types of services do you provide? Paul: CircleCI is a continuous integration and continuous delivery platform. Our customers are the developers in an organization. Developers rely on us heavily as part of their deployment workflows. Adam: I guess deploying obviously is important. You've got the phrase 'ship it' for a reason, so it's a critical piece to an ops or developer organization to be able to ship code fast, ship code reliably. Paul: Right. The idea is... --- ### Improved ruby error reporting with our latest gem updates - Published: 2016-09-14 - Modified: 2023-01-19 - URL: https://rollbar.com/blog/improved-ruby-error-reporting-with-our-latest-gem-updates/ - Categories: product - Tags: ruby Recently, we released version 2. 13. 0 of the rollbar-gem. This update is full of new features and some minor bug fixes. The full release notes can be found here, Release 2. 13. 0. Here are a few of the highlights in this update: 1. Allow overriding configuration Many customers have asked to implement a way to override the default configuration for a specific block of code. Some of them use the same process to send reports to our API for different projects, some need to change the environment, and others want to use one async handler for a single block of code (or none at all). So, we've added a new method called Rollbar. with_config to do this. It receives a Hash object with the configuration overrides you want to use for the given block. The configuration options can be found at Configuration. The Hash passed to with_config should be formatted like {environment: 'specific-environment'}. For example: Rollbar. with_config(use_async: false) do begin # do work that may crash rescue => e Rollbar. error(e) end end This method looks similar to Rollbar. scoped, and Rollbar. with_config uses it internally. Now Rollbar. scoped can receive a second argument with the configuration overrides for the given block of code. So if you need to set a new payload scope and new config for a code block, you can write: scope = {context: 'foo'} new_config = {framework: 'Sinatra'} Rollbar. scoped(scope, new_config) do begin # do work that may crash rescue => e Rollbar. error(e)... --- ### 5 ways to reduce noise when logging your JavaScript exceptions - Published: 2016-08-16 - Modified: 2021-11-22 - URL: https://rollbar.com/blog/5-ways-to-reduce-noise-when-logging-your-javascript-exceptions/ - Categories: product - Tags: grouping Developing and maintaining user facing software is a challenge and a very distracting one at that. :-) Often times it can be difficult trying to stay focused on what matters most. It can be hard to tell what's really broken and why, with dozens of alerts notifying you every other minute. Volatile... The client-side being one of the most volatile of them all. When we attempt to capture errors in this environment we can very quickly get overwhelmed by lots and lots of noise. This noise is typically generated from many different places. Some examples would be old outdated browsers, browser extensions, third-party scripts, bots, spiders, etc. Rollbar's JavaScript error monitoring supports many different ways of reducing this noise so you can be more proactive in what and how you're collecting your JavaScript exceptions. 1. Ignore noisy errors on the client-side Rollbar. js supports the ability to ignore errors on the client-side. This option is really great because you have access to the entire payload and can filter by any value in it. By doing this the error will never be sent to the Rollbar API. This is supported via the checkIgnore configuration option. var _rollbarConfig = { ... checkIgnore: function(isUncaught, args, payload) { // Code here to determine whether or not to send the payload // to the Rollbar API } ... }; Let's break down the function value. First the parameters passed to the function. isUncaught: This is true if the error bubbled up to window. onerror or... --- ### SAML-based Single Sign-On (SSO) now available - Published: 2016-07-18 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/saml-based-single-sign-on-sso-now-available/ - Categories: product - Tags: security If your team uses Google Apps for Work or Okta, you can now access your Rollbar account using SAML-based single sign-on (SSO). SSO via Google Apps and Okta is available on all paid plans, and can be setup in minutes by an admin. Once SSO is enabled, users can access your Rollbar account with just a click from the Google App Drawer or Okta My Applications screen. Google App Drawer Okta My Applications If Google or Okta-based SSO is enabled on your account, then SSO options will show up on the login screen whenever you are prompted. Ready to set up SSO for your account? Check out our step-by-step documentation. --- ### Two-Factor Authentication now available for all users - Published: 2016-06-23 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/two-factor-authentication-now-available-for-all-users/ - Categories: product - Tags: security We’re excited to introduce Two-Factor Authentication (2FA) in Rollbar as an optional extra layer of security on every user’s account. 2FA reduces your risk of having your account hacked through phishing, credential exploitation or other remote attacks. We highly recommend enabling Two-Factor Authentication for your entire team. It’s easy to setup (and free)! To enable 2FA, go to your user settings page and click Enable under Two-Factor Authentication. Then scan the QR code, and enter in your two-factor authentication verification token from an authentication app of your choice. One of the more popular authentication apps is Google Authenticator (available free for iOS and Android). Once you're all setup, you’ll be prompted for your token whenever you log in. 2FA is available for all users in all plans at no additional charge. To learn more about Two-Factor Authentication in Rollbar, check out our documentation. --- ### Using Rollbar to unravel existing Laravel applications - Published: 2016-05-24 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/using-rollbar-to-unravel-existing-laravel-applications/ - Categories: Code Tutorials, PHP - Tags: laravel {: . highlightbox} Read our new blog Announcing Laravel error monitoring with Rollbar! About 6 months ago I inherited a project (let’s call it Project Mayhem) that was grossly neglected by the original developer. I won’t go into too many details, but let’s just say that I’ve seen spaghetti with more order than this codebase had. No unit tests, no documentation, illogical architecture, and an expecting client... I felt like I was literally living in one of those nightmares where I’m late for the final exam in a class I passed a decade ago. The icing on this terrible cake was that I also inherited the hosting and was graciously provided with absolutely no specs in order to replicate the previous production environment. I was flying blind, and if it weren’t for Rollbar's php error logging tools, this project would have crashed and burned long before I could make any meaningful changes to it. I was able to manage and prioritize exceptions as they happened, which gave me the information I needed to build out a proper hosting architecture and quickly fix existing issues in the codebase. Suffice it to say, I am a big fan of Rollbar. Luckily for me, Project Mayhem was built on Laravel, an increasingly popular PHP framework with an impressive array of third-party plugins; one of which just so happens to be made specifically for Rollbar. Getting Rollbar setup on Laravel was as simple as running just a few commands, but what if the project... --- ### Streamline monitoring with Rollbar & Datadog - Published: 2016-04-25 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/streamline-monitoring-with-rollbar-datadog/ - Categories: product - Tags: integrations Good news! We’ve recently released a new integration with Datadog to help extend your error monitoring options. Datadog is a leading cloud monitoring solution that brings metrics from all of your apps, tools & services (like Rollbar) into one place. Now Rollbar and Datadog users can syndicate exceptions, errors and code deployments as 'Events’ within Datadog (example below). Here's a few of the ways you can improve your monitoring when you connect Rollbar and Datadog: Get notified of exceptions, errors, code deployments in your event stream Filter notifications by severity, environment, host, users and more Search for exceptions in your graphs Discuss exceptions with your team Most important - spend less time debugging issues We hope that by bringing your Rollbar data into Datadog you can streamline your monitoring efforts and reduce some of the noise in your day to day workflow. For more information, check out our integration docs for Datadog. Also, to see if Rollbar integrates with other tools you’re using, see our full list of integrations here. If you haven’t already, signup for a 14-day free trial of Rollbar and let us help you defeat errors in production. :-) --- ### 6 ways to improve error grouping in Rollbar - Published: 2016-04-11 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/6-ways-to-improve-error-grouping-in-rollbar/ - Categories: product - Tags: grouping You're two weeks into using Rollbar. You've watched in amazement as issue after issue comes in without a single customer complaint to accompany them. How did you ever find errors before! ? Now that your unresolved errors have drastically decreased, you've started to notice a handful of Rollbar items that all seem to be exactly the same issue. Maybe you've been notified that your UI has exceeded the maximum call stack when calling a particular function. And in one case you found out that your database is actually missing several columns which got grouped into a single error. What's a new Rollbar user to do? Here's 6 steps to help you improve your error grouping in Rollbar: 1. Learn how Rollbar groups items. The Rollbar grouping algorithm attempts to be as smart as possible by grouping items by root cause. Error type items are grouped by a combination of platform, environment, error class, and stack trace information. Message type items are grouped by message text after stripping out certain number-like and date-like portions of the message. 2. Customize your error grouping. Custom grouping enables you to decide exactly how Rollbar will group your items. You can alter the title, change the fingerprinting (and therefore the grouping), and use any data you send to us to make it work! 3. Make sure you're setting the server root. Before grouping by filename, Rollbar will strip off whatever you're sending in the server root segment. This means that you can host the code... --- ### Query Rollbar data directly from our API - Published: 2016-02-15 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/query-rollbar-data-directly-from-our-api/ - Categories: product - Tags: monitor Good news for RQL users. Until recently RQL usage was limited to the Rollbar interface. That's no longer a problem. Now you can access RQL directly from our API. We like to believe that our interface provides just about everything you need to discover, investigate and resolve errors in your software. That being said, we know that everyone's needs are not the same. So, we created the Rollbar Query Language (RQL for short) to give Rollbar users more controls over their data. Many of our users have grown to depend on RQL for getting their day to day work done. RQL is a familiar SQL-like language for querying your Rollbar data. Here's a few ways that RQL can be useful: Want to find out the number of 500s your users experienced broken down by the url they were on at the moment? Search items using more complex filters than is possible on the Rollbar website. Search for items that occurred between two specific deploys Extend the power of RQL and make the perfect dashboard or tool with your queried error data directly from the API. For help, checkout our API documentation for RQL. For an example that runs on the data from our Live Demo check out the API-Examples repository on GitHub. New to Rollbar? Signup for a 14-day free trial and get instant insights into your application errors. --- ### Rollbar add-on now available for Bitbucket - Published: 2015-06-11 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/rollbar-add-on-now-available-for-bitbucket/ - Categories: product - Tags: integrations On the heels of Atlassian's announcement of Atlassian Connect for Bitbucket yesterday, we're excited to introduce our very own Rollbar Add-On for the Bitbucket community. With the new Rollbar Add-On for Bitbucket and our recent Bitbucket Issue Tracker integration, you can now monitor and keep tabs on your errors and exceptions within Bitbucket. No more switching between multiple tools and services to debug and deploy code. Atlassian Connect for Bitbucket provides an integration architecture that embeds add-ons right within the their UI creating a seamless user experience and unified workflow. How to install the Rollbar Bitbucket add-on? If you're currently a user of Bitbucket, click on your avatar, select "Manage Account", and simply install the Rollbar add-on by selecting "Find new add-ons" from the left menu. Once the add-on is installed, Rollbar data will be accessible per your Bitbucket repo dashboard(s). Note: Atlassian Connect for Bitbucket uses fine-grained permissions to grant add-on access to repositories, issues, accounts, teams, snippets and pull requests. We are thrilled to be a part of Atlassian Connect for Bitbucket and for the opportunity to build and maintain a valuable add-on for the Bitbucket community and Rollbar users to find and fix errors even faster! What's next? We're currently working toward full support for Bitbucket which includes Issues, Source Control and Authentication. Stay tuned. Leave a comment or send a note to support@rollbar. com and let us know if you have any feedback or questions. Happy to help. --- ### Easier way to get your team on Rollbar - Published: 2015-05-19 - Modified: 2022-09-15 - URL: https://rollbar.com/blog/easier-way-to-get-your-team-on-rollbar/ - Categories: product - Tags: onboarding Joining and getting your team on Rollbar is now easier. Rollbar is better together and our latest account setting makes it easier to get everyone together. Introducing Email Domain Safelists. Previously the only way to join your team on Rollbar was being invited via email. Admins had to send email invites one by one. This can be tough for large organizations and fast growing engineering teams. With Email Domain Safelists, now you can set an email domain safelist, so that anyone with an address at a specified domain can join your account (once confirmed). No more one off invitations. Making the workflow for admins and new team members easier and less confusing. PROBLEM As we have grown we've seen more and more new users who are employees at companies that are already using Rollbar get lost trying to join their company’s account. The scenario looks something like this: You see a notification in your company's Slack, or an issue in JIRA, GitHub etc. Click link to view more details Hit the Rollbar login page (confusion ensues) Decide to signup and create a new separate account that is orphaned from your company’s account Ask Admin to add/invite you to their Team on Rollbar The new account you created gets abandoned :( SOLUTION With the new email domain safelist, anyone who signs up (from specified domains) automatically gets added to your account once they confirm their email address. Go to /settings/accounts/Name/ to setup (need to be on the Owners team to enable).... --- ### Edit and rename error item titles - Published: 2015-03-26 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/edit-and-rename-error-item-titles/ - Categories: product - Tags: monitor You can now rename/edit your error titles. Fix ugly long titles. Hover over, click, edit, and save. Enjoy! --- ### Connect Rollbar to Bitbucket Issue Tracker - Published: 2015-03-17 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/connect-rollbar-to-bitbucket-issue-tracker/ - Categories: product - Tags: triage New integration now available - Bitbucket Issue Tracker Supercharge your issue and error tracking workflow when you connect your Rollbar and Bitbucket accounts. New Items in Rollbar will instantly create Issues in your Bitbucket repo, or you can create and link Issues with the click of a button within Rollbar. Here's how: Go to your project's Settings, then Notifications, and select Bitbucket Issues from the list of channels. Click 'Connect with Bitbucket” to grant Rollbar access to your account. From here, you can choose which repository, and add/edit/remove rules for Issues to be created automatically. Like magic, your Rollbar error items and details now show up in your Bitbucket repo. Success! Create Bitbucket Issues manually Prefer to create Issues by hand? You can create an Issue directly from the error Item page in Rollbar, or link with an Issue that already exists. You can use this alongside the automatic rules; or, remove the rules for full manual control. What's next? We're working toward full support for Bitbucket, like we have for GitHub - Issues, Source Control and Authentication. I know Rollbar users who rely on Bitbucket in their workflows are rejoicing. :) Let us know if you have any feedback or questions. We're here to help. Deploy and enjoy! --- ### Daily, Hourly, New Errors and Trend graphs are now clickable - Published: 2015-03-10 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/daily-hourly-new-errors-and-trend-graphs-are-now-clickable/ - Categories: product - Tags: monitor Yes, that's correct. Daily, Hourly, New Errors, and Trend graphs are now clickable. You can find and fix errors even faster, and in less clicks. :D Common usability feedback we get from our users: Sure would be nice if I could click the dashboard bar graphs and sparklines to quickly see what caused a spike in error events etc. Couldn't agree more. We love aggregating data and we love it clickable. So we enabled it! The following are now clickable in the project Dashboard: Hourly Error/Critical Occurrences Daily Error/Critical Occurrences Daily New/Reactivated Items Trends (24 hour and 7 day) Trends are also clickable on the Items page. For reference Trends are these guys also called 'sparklines'. When viewing a specific error item, the Last 60 Minutes, Hours, and Days are now clickable and aggregate error data by your selection. We're excited to get this features out the door. It reduces a lot of friction in navigating Rollbar. One of many UI and UX improvements to come. :) Login today and go click through your data now. Deploy and enjoy! --- ### Using Logstash and Rollbar Together - Published: 2015-03-02 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/using-logstash-and-rollbar-together/ - Categories: product - Tags: integrations The infrastructure behind most modern web applications includes an assortment of tools for collecting server and application metrics, logging events, aggregating logs, and providing alerts. Most systems are made up of a collection of best-in-class tools and services, selected and deployed over time as team members arrive and depart, needs change, the system grows, and new tools are introduced. One of the challenges web development and operations teams face is collecting and analyzing data from these disparate sources and systems and then piecing together what’s happening by looking at multiple reports and dashboards. Two common pieces in this puzzle are Logstash and Rollbar. Logstash (and the Kibana web interface, both of which are heavily supported by and integrated with Elasticsearch) lets you collect and parse logs, store them in a central location, search and explore the data via the Kibana UI, and output events to other services. Logstash provides a powerful tool for taking logs in many different formats, converting them into JSON events, then routing and storing those events. Rollbar collects errors from your application, notifies you of those errors, and analyzes them so you can more efficiently debug and fix them. With a few lines of code or config changes to your application, you can make errors, complete stack traces, trends and affected user reports accessible via your Roller dashboard. Like Logstash, Rollbar collects and analyzes events represented in JSON. By connecting Logstash and Rollbar, you can not only centralize and analyze your system and application logs, but... --- ### Increasing max-open files for beanstalkd - Published: 2015-02-28 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/increasing-max-open-files-for-beanstalkd/ - Categories: Code Tutorials - Tags: behind-the-scenes Quick tip: If you are running out of file descriptors in your Beanstalkd process, use /etc/default/beanstalkd to set the ulimit before the init script starts the process. e. g. # file: /etc/default/beanstalkd BEANSTALKD_LISTEN_ADDR=127. 0. 0. 1 BEANSTALKD_LISTEN_PORT=11300 START=yes BEANSTALKD_EXTRA="-b /var/lib/beanstalkd -f 1" # Should match your /etc/security/limits. conf settings ulimit -n 100000 Lots of resources online tell you to update your /etc/security/limits. conf and /etc/pam. d/common-session* settings to increase your maximum number of available file descriptors. However, the default beanstalkd installation on Ubuntu 12. 04+ uses an init script that starts the daemon process using start-stop-daemon which does not use your system settings when setting the processes ulimits. Just add this line to your defaults and you're good to go! --- ### Assign errors to your team - Published: 2015-02-26 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/assign-errors-to-your-team/ - Categories: product - Tags: triage Ever wanted to assign error items to other team members in Rollbar? Of course you have. Now you can. It is a pretty straight forward enhancement, but here is an overview. On the error ‘items’ details page, there's an “Assigned to" dropdown with the members of your team. Once assigned, we’ll shoot an email to that team member letting them know you assigned that specific item to them, including link and details. They'll be automatically added as a 'watcher' for that specific item and will receive notifications about any comments and updates. Assignment events will be listed in the item history section, so you can see who assigned it to whom, when. To quickly find items assigned to yourself or others on your team, search 'assigned:me', ‘assigned:username’, or 'assigned:unassigned' on the Items page. We're excited to get this out into the wild. Especially for some of the larger teams using Rollbar. Let us know what you think and how we can make it better for you and your team. --- ### Get notifications every time an error occurs - Published: 2015-02-26 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/get-notifications-every-time-an-error-occurs/ - Categories: product - Tags: monitor You can now setup notifications every time an error occurs. Previously specific error Notifications were only available for New Items and 10^th Occurrences. Notification Rules are available for all Channels (Email, Slack, HipChat, Trello, PagerDuty). --- ### Debugging Node.js Apps in Production with PyCharm - Published: 2014-12-19 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/debugging-node-js-apps-in-production-with-pycharm/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript Node. js has a built-in debugger that you can start in running processes. To do this, send a SIGUSR1 signal to the running process and connect a debugger. The one, big caveat here is that the debugger only listens on the local interface, 127. 0. 0. 1. The following are instructions for debugging Node. js applications running in your company's private network from your laptop, through a bastion host. SSH into the production host that is running the Node. js app Put your production app into debug mode. prod-host $> kill -s SIGUSR1 As root, start an SSH tunnel to connect your private network with localhost. prod-host $> ssh -N -q -L :8585:localhost:5858 On your laptop Start an SSH tunnel to the production host, through your bastion host. laptop $> ssh -N -q -L 5858::8585 @ Open PyCharm and create a remote debugging configuration. Run → Edit Configurations Click the + button on the top-left of the window and select “Node. js Remote Debug” Set the host to 127. 0. 0. 1 using port 5858, name it and save. Run the new Debug configuration. Run → Debug... Select the new configuration. At this point your laptop will have connected to your local SSH tunnel which will be connected to your production host's private network interface which will be tunneled to your production host's local network interface and your Node. js process. PyCharm → local SSH tunnel → bastion host → production host private network → production host localhost → Node.... --- ### RQL String Functions - Published: 2014-12-16 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/rql-string-functions/ - Categories: product - Tags: triage RQL now includes a basic library of string functions. You can use these to slice and group your data in arbitrary ways. For example, "email domains with the most events in the past hour": SELECT substring(person. email, locate('@', person. email)), count(*) FROM item_occurrence WHERE timestamp >= unix_timestamp - 3600 AND person. email IS NOT NULL GROUP BY 1 ORDER BY 2 DESC The new functions: concat, concat_ws, lower, upper, left, right, substring, locate, length, char_length. The functions are implemented to be compatible with MySQL; see the RQL docs for details. --- ### October Release Roundup - Published: 2014-10-31 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/october-release-roundup/ - Categories: product - Tags: monitor Happy Halloween, everyone! Here's a roundup of what's new in Rollbar this month. Ruby Upgrades The rollbar gem for Ruby got a lot of attention in October. Early in the month, we released version 1. 1. 0, which added support for Ruby 2. 1 exception causes, and a new 'failover_handlers' feature for more reliable asnyc reporting. Mid-month, we released version 1. 2 which adds a new, much nicer and more powerful interface for sending the data you want into Rollbar. In 1. 2, you can do: begin Rollbar. info("About to do_something") do_something rescue => e # send a message and extra data along with an exception Rollbar. error("Something went wrong", e, :foo => "bar") # customize payload attributes, like the 'person' or 'fingerprint' Rollbar. scope({:fingerprint => "something"}). error(e) end More in the docs. It's available now on Rubygems (latest version is 1. 2. 7). New Status Site We've upgraded status. rollbar. com. We'll be using it to communicate about outages, so if you'd like to be notified, go there and subscribe to updates. The new status site also shows the current maximum latencies for the processing pipeline. Link Rollbar Items with Existing 3rd-party Issues You can now link a Rollbar item with an existing issue in your issue tracker: Or if you have a Rollbar item that is already linked, you can now change or remove the link. This works with Asana, GitHub Issues, JIRA, Pivotal Tracker, Sprintly, and Trello. Geolocation for IP Addresses Rollbar now shows geolocation information on... --- ### New "Reports" API calls - Published: 2014-08-20 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/new-reports-api-calls/ - Categories: product - Tags: monitor We've released two new API calls, exposing some of the data on the Dashboard via our JSON API. Use the /reports/top_active_items to fetch the same data as "Top 10 Active Items in last 24 hours". And use /reports/occurrence_counts to fetch the same data as "Daily Error/Critical Occurrences" and "Hourly Error/Critical Occurrences". More details in the docs. If you give this a try, send us any feedback at team@rollbar. com. --- ### Occurrence counts by minute - Published: 2014-07-31 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/occurrence-counts-by-minute/ - Categories: product - Tags: monitor We've released an improvement to our Item Detail pages, adding a graph showing the aggregate occurrence counts per minute. It's live now for everyone and looks like this: You can use this to see patterns that previously were hard to spot, like errors that occur on a regular, sub-hour interval (like the one shown above). It's also useful for quickly seeing how the occurrence rate changes after a deploy. --- ### node_rollbar 0.3.11 - Published: 2014-07-24 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/node_rollbar-0-3-11/ - Categories: product - Tags: JavaScript We've released a new version of our Node. js library, version 0. 3. 11. It's available on npm and GitHub. This release adds a new function to the public API, handleErrorWithPayloadData. The name's a mouthful, but it allows you to use (nearly) the full power of the Rollbar API when reporting errors. For example, to report an error as a "warning" and pass some additional data: rollbar. handleErrorWithPayloadData(err, {level: "warning", custom: {someKey: "some value"}}); See more examples in the docs for caught exceptions. --- ### More stack trace filename search filters - Published: 2014-07-22 - Modified: 2021-07-19 - URL: https://rollbar.com/blog/more-stack-trace-filename-search-filters/ - Categories: product - Tags: monitor We've released several new search filters to make it easier to find errors by the filenames in their stack trace. If you've ever wanted to find client-side Angular JavaScript errors that only occurred within your own specific domain, or exceptions originating in a specific part of your code, keep reading. You've always been able to search for errors where any filename contains a string, but now you can also search for errors where: all filenames contain a string (allfiles:myproject) no filenames contain a string (nofiles:evilproject) the top stack frame's filename contains a string (topfile:mydomain. com) the bottom stack frame's filename contains a string (bottomfile:some_important_library) the number of filenames is within a range (minfiles:1 and/or maxfiles:10) any filename contains a string (file:. rb) These filters can all be combined in a single query. If you forget which filters exist, mouse over the ? next to the search box to see the help text. --- ### Missing daily summary emails - Published: 2014-07-21 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/missing-daily-summary-emails/ - Categories: product - Tags: monitor We just rolled out a fix for missing daily summary emails. The bug was introduced last week when we refactored a bunch of our email code. As a result, some projects did not receive their daily email for the previous 24 hours. We don't want to spam users with old summaries so please contact support@rollbar. com if you'd like to get yours. --- ### How to Wrap and Unwrap Errors in Golang > In Golang, wrapping errors entails giving them more context and in order to see what context has been introduced they must be unwrapped. Learn more. - Published: 2022-10-31 - Modified: 2022-11-09 - URL: https://rollbar.com/blog/golang-wrap-and-unwrap-error/ - Categories: Code Tutorials, GoLang - Tags: golang In Golang, wrapping errors means adding more contextual information to the error which has been returned. For example, the additional information could be the type of error, the cause of the error, or the name of the function where the error is raised. Wrapping is very useful for debugging since you can precisely and quickly locate the source of the problem. Golang supports wrapping and unwrapping errors as part of the standard library errors by using the errors. Unwrap and fmt. Errorf functions with the %w verb. Syntax for wrapping an error in Golang First we need to create a new error using errors. New followed by fmt. Errorf with the %w verb to wrap the error. var criticalError = errors. New("Serious error") ... . . wrap = fmt. Errorf("... %w... ",criticalError,... ) The wrapped error can be unwrapped using the errors. Unwrap function. func Unwrap(err error) error Example 1: How to Wrap An Error In the below code, we have added a function validationswhich takes a number and runs validations based on some conditions by again calling the check function. Whenever an error is encountered, it will wrap the error using fmt. Errorf and the %w verb to show that “run error” has occurred. The new error is then returned. package main import ( "errors" "fmt" ) var ( errUhOh = errors. New("oh critical error! ! ") ) func check(num int) error { if num == 1 { return fmt. Errorf("it's odd") } else if num == 2 {... --- ### rollbar-gem v0.13.2 - Published: 2014-07-08 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/rollbar-gem-v0-13-2/ - Categories: product - Tags: ruby We've released a patch version (0. 13. 2) of our Ruby gem, fixing two issues. The use_sucker_punch config option could cause timeouts when using Unicorn (#121) - thanks to Fabio Napoleoni for the report Sidekiq payloads were being mutated, causing the sidekiq-failures UI not to display parameters correctly (#122) - thanks to Dmitry Krasnoukhov for investigating and reporting this. It's available now on Rubygems and GitHub. --- ### PHP's ErrorException Explained (with Example) > The PHP ErrorException class is meant to be thrown explicitly to catch and handle errors that would otherwise be ignored. Learn more about it here. - Published: 2022-10-26 - Modified: 2022-12-12 - URL: https://rollbar.com/blog/php-errorexception/ - Categories: Code Tutorials, PHP - Tags: PHP The PHP ErrorException class is meant to be thrown explicitly to catch and handle errors that would otherwise be ignored, such as Notices or Warnings. ErrorException Class Hierarchy The PHP Exception class implements the Throwable interface. The ErrorException class extends the Exception class. Throwable └── Exception └── ErrorException When to Use ErrorException The ErrorException class can be used when an exception needs to be thrown and handled like a regular object inherited from the Exception class. An example is when PHP issues a Warning. Depending on how the code is configured, warnings are ignored in PHP and execution continues as normal. In cases where a Warning indicates a failure that should redirect (or halt) script execution, the ErrorException class can be used. PHP ErrorException Example Here's an example of using the PHP ErrorException to produce an exception instead of a Warning: A file is attempted to be accessed using the file_get_contents function: When the above script is executed, a Warning is generated if the file could be found: Warning: file_get_contents(myfile. txt): failed to open stream: No such file or directory If throwing an exception is more desirable than a Warning for such a case, the ErrorException class can be used to do so. The above example can be modified to use an error handler function to throw an ErrorException: When the above script is executed, the errorHandler function throws an ErrorException instead of a Warning if the file is not found: Error: No such file or directory Here, the ErrorException... --- ### Prettier Node.js stack traces - Published: 2014-07-01 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/prettier-node-js-stack-traces/ - Categories: product - Tags: debug Small tweak of the day: we now render Node. js stack traces to look more like they do via console. log(err. stack). We also fixed an issue where the context lines would appear indented at random levels. Before: After: --- ### Announcing Rollbar Live In-App Chat Support - Published: 2022-10-18 - Modified: 2022-10-20 - URL: https://rollbar.com/blog/announcing-rollbar-live-in-app-chat-support/ - Categories: company, product What’s better than great support? Live in-app support with a real person when you need it During the last two months we have been rolling out our live chat capability for all Rollbar users regardless of the plan you are on. That's right; you can now speak to a real person from our customer engineering team to help answer your product related question from within the Rollbar application. Our goal is to provide more support channels when you need it without having to wait for an answer. Once you have logged on to your Rollbar. com account you will see a chat bubble at the bottom right of your screen. When you need support click to start a conversation. How to start a conversion: Click Chat bubble. Enter your details: Ensures we can follow up with you. Have a great conversation with a real person. Whether you’re new to Rollbar or a seasoned user, I hope that you’ll find this new channel valuable when you need it most. --- ### Debugging by IP Address - Published: 2014-06-30 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/debugging-by-ip-address/ - Categories: product - Tags: debug We've released a first round of features around IP Addresses. Similar to how you can see the history by Person, you can now see the history by IP address. If you're tracking down an issue affecting logged-out users, this can be really helpful. To get there, click on an IP address anywhere in the Rollbar interface: You'll be able to see all events affecting that IP: There's also a handy link to the WHOIS record for the IP. --- ### Better support for Browserify and Webpack - Published: 2014-06-18 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/better-support-for-browserify-and-webpack/ - Categories: product - Tags: JavaScript Recently (actually last week), we released a new version of rollbar. js that has a few fixes to play nicely with Browserify and Webpack. It's being served from our CDN and the source is on GitHub. We've also put together examples showing how to use rollbar. js with each. If you use Browserify or Webpack and want to include rollbar. js that way instead of using our standard snippet, this is your lucky day: Browserify example Webpack example Thanks to @altano for helping with this. --- ### How to Fix AttributeError in Python > The Python AttributeError is an exception that occurs when an attribute reference or assignment fails. Learn how to fix it. - Published: 2022-10-17 - Modified: 2022-10-17 - URL: https://rollbar.com/blog/python-attributeerror/ - Categories: Code Tutorials, Python - Tags: Python The Python AttributeError is an exception that occurs when an attribute reference or assignment fails. This can occur when an attempt is made to reference an attribute on a value that does not support the attribute. What Causes AttributeError The Python AttributeError is raised when an invalid attribute reference is made. This can happen if an attribute or function not associated with a data type is referenced on it. For example, if a method is called on an integer value, an AttributeError is raised. Python AttributeError Example Here’s an example of a Python AttributeError raised when trying call a method on an integer: i = 1 i. append(2) In the above example, a method is attempted to be called on an integer. Since integers in Python do not support any methods, running the above code raises a AttributeError: Traceback (most recent call last): File "test. py", line 2, in i. append(2) AttributeError: 'int' object has no attribute 'append' How to Fix AttributeError in Python To avoid the AttributeError in Python code, a check should be performed before referencing an attribute on an object to ensure that it exists. The Python help function can be used to find out all attributes and methods related to the object. To resolve the AttributeError, a try-except block can be used. The lines of code that can throw the AttributeError should be placed in the try block, and the except block can catch and handle the error. Using the above approach, the previous example can... --- ### Codeship + Rollbar - Published: 2014-06-17 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/codeship-rollbar/ - Categories: product - Tags: integrations Our friends over at Codeship wrote a piece about how they use Rollbar to track deployments and fix exceptions. More on the Codeship blog: Tracking Deployments with Rollbar. --- ### The Ultimate Guide to Error Logging in Go > Logging can be a life-saver when it comes to fixing faults in your Go code. Learn how to log ✓ to the console ✓ to a file ✓ using a logging framework. - Published: 2022-10-02 - Modified: 2022-10-02 - URL: https://rollbar.com/blog/golang-error-logging-guide/ - Categories: Code Tutorials - Tags: golang Logging can be a life-saver when it comes to discovering bugs or faults in your Go (Golang) code. The three most popular ways to log errors in Golang are: Output the errors to the console Log the errors to a file Use a logging framework This article will walk you through how to log errors using each method, when and why you’d want to use each, along with examples. Basic Logging in Golang Golang comes with an in-built standard log package which provides basic error logging features. Though it doesn't provide any log levels like debug, warning, or error, it still has many features to get started with basic logging. Let’s look at an example to understand it better. package main import "log" func main { log. Println("We are logging in Golang! ") } When the above code is executed, the log package prints the output to the standard error (stderr) stream and automatically appends a timestamp to each log message. 2022/09/30 02:44:31 We are logging in Golang! Logging to a File in Golang Despite the fact that the log package's default output is to the stderr stream, it may be adjusted to write to any local file or to any other location that accepts the io. Writer interface. You must either create a new file or open an existing one and set it up as the log's output path in order to save log messages in a file. Example package main import ( "log" "os" ) func main {... --- ### rollbar.js snippet update - Published: 2014-06-10 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/rollbar-js-snippet-update/ - Categories: product - Tags: JavaScript We've released a new version of rollbar. js (1. 0. 0-rc9), which fixes a bug in some environments. If you've seen "TypeError: Uncaught TypeError: Cannot read property '_wrapped' of null" in your project, you should update to the latest snippet. Grab it from the docs to update. --- ### How to Fix TypeError Exceptions in Python > The Python TypeError is an exception that occurs when the data type of an object in an operation is inappropriate. Learn how to fix it. - Published: 2022-10-01 - Modified: 2022-10-01 - URL: https://rollbar.com/blog/python-typeerror/ - Categories: Code Tutorials, Python - Tags: Python The Python TypeError is an exception that occurs when the data type of an object in an operation is inappropriate. This can happen when an operation is performed on an object of an incorrect type, or it is not supported for the object. For example, if a string is attempted to be multiplied with an integer, a TypeError is generated. What Causes TypeError Some of the most common causes for TypeError in Python are: Performing an operation between two incompatible data types e. g. adding a string and an integer. Passing an incorrect type to a built-in function e. g. passing a list to the built-in add function. Calling a non-callable object e. g. calling an integer. Incorrect list index type e. g. using a string as a list index value instead of an integer. Iterating on a non-iterative value e. g. trying to iterate on an integer. Python TypeError Example Here’s an example of a Python TypeError thrown when trying to add a string and an integer: my_integer = 1 my_string = "Hello World" my_result = my_integer + my_string In the above example, the string my_string is attempted to be added to an integer my_integer. Since addition cannot be performed between these two types, a TypeError is raised: File "test. py", line 3, in my_result = my_integer + my_string TypeError: unsupported operand type(s) for +: 'int' and 'str' How to Fix TypeError in Python To avoid type errors in Python, the type of an object should be checked before... --- ### More Powerful Custom Grouping - Published: 2014-06-09 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/more-powerful-custom-grouping/ - Categories: product - Tags: monitor Our Custom Grouping feature just got a lot more powerful. It's now possible to: group TimeoutErrors by the controller+action it appears in group 404s by path group all Android exceptions by the app version number and much more, just by writing a simple JSON rule. This feature is live now for all accounts. For the uninitiated: Custom Grouping allows you to tune Rollbar's grouping algorithm for the specifics of your application. If our default algorithm isn't grouping incoming occurrences like you want, you can define rules to customize. Rules consist of a condition, a title, and a fingerprint. If an incoming occurrence matches the condition, then it will be grouped with others that have the same fingerprint, and given the title title. (If it doesn't match, then the next rule is evaluated, or if there are no more rules, the default algorithm is applied. ) Previously, the title and fingerprint could only contain static text. Now, they're templates that can reference: any part of the incoming occurrence the title and fingerprint generated by our default algorithm For example, to group all ActionController::RoutingErrors by the request path (which comes in as the exception message): Or to have all Android exceptions grouped by app version: See the docs for more details. We've already seen this solve a diverse set of grouping problems and are really excited about how powerful this is. If you have any questions about how to get your errors grouped the way you want, drop us a line at... --- ### How to Fix ImportError: Cannot Import Name in Python > The Python ImportError: cannot import name error occurs when an imported class is not accessible or is in a circular dependency. Learn how to fix it. - Published: 2022-09-24 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/python-importerror-cannot-import-name/ - Categories: Code Tutorials, Python - Tags: Python The Python ImportError: cannot import name error occurs when an imported class is not accessible or is in a circular dependency.   What Causes ImportError: Cannot Import Name This error generally occurs when a class cannot be imported due to one of the following reasons: The imported class is in a circular dependency. The imported class is unavailable or was not created. The imported class name is misspelled. The imported class from a module is misplaced. The imported class is unavailable in the Python library. Python ImportError: Cannot Import Name Example Here’s an example of a Python ImportError: cannot import name thrown due to a circular dependency. Two python modules test1. py and test2. py are created to achieve this: test1. py: from test2 import Class2 class Class1:     obj = Class2 test2. py: from test1 import Class1 class Class2:     obj = Class1 In the above example, the initialization of obj in test1 depends on test2, and obj in test2 depends on test1. This is a circular dependency since both files attempt to load each other. Therefore, running test1. py (or test2. py) causes an ImportError: cannot import name error: Traceback (most recent call last):   File "test1. py", line 1, in     from test2 import Class2   File "test2. py", line 1, in     from test1 import Class1   File "test1. py", line 1, in     from test2 import Class2 ImportError: cannot import name 'Class2' from partially initialized module 'test2' (most likely due to a circular import) (test2. py) How to Fix ImportError: Cannot Import Name... --- ### Local variable values in stack traces - Published: 2014-06-05 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/local-variable-values-in-stack-traces/ - Categories: product - Tags: debug "This stack trace would be so much easier to debug if I knew what the value of that variable was" - said us, many many times. We finally scratched our own itch and built this into Rollbar. It's really awesome. Take for example a bug I ran into with our new deploy emails feature: "Hmmm, sure would be nice if I knew which variable was None--is it prev_deploy or deploy? " In the past, I would've had to reproduce locally, or add an additional rollbar. report_message to log each variable in production. But now I can just press "locals" for the stack frame and see it instantly: "OK, it's prev_deploy. " That was all I needed: prev_deploy will be None when deploy is the very first deploy in this project. Easy two-line fix. Time taken from opening the Rollbar notification to committing the fix: 2 minutes. Rollbarred! How it works We've implemented this in Python (pyrollbar), and are actively exploring other languages. Ruby and PHP are looking promising. Here's how it works in Python. When this feature is enabled and an exception is reported, we use the inspect module to collect: all stack frames: names and values of all variables that are function arguments in-project stack frames: names and values of all local variables There are two main edge cases to deal with: The variable could contain sensitive data. To deal with this, we use the same scrub_fields configuration used for scrubbing request data. If the variable name matches one... --- ### How to Handle the MemoryError in Python > A MemoryError is an error encountered in Python when there is no memory available for allocation. Learn two ways to solve this. - Published: 2022-09-05 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/python-memoryerror/ - Categories: Code Tutorials, Python - Tags: Python A MemoryError means that the interpreter has run out of memory to allocate to your Python program. This may be due to an issue in the setup of the Python environment or it may be a concern with the code itself loading too much data at the same time.   An Example of MemoryError To have a look at this error in action, let’s start with a particularly greedy piece of code. In the code below, we start with an empty array and use nested arrays to add strings to it. In this case, we use three levels of nested arrays, each with a thousand iterations. This means at the end of the program, the array s has 1,000,000,000 copies of the string "More. " s = for i in range(1000): for j in range(1000): for k in range(1000): s. append("More") Output As you might expect, these million strings are a bit much for, let’s say, a laptop to handle. The following error is printed out: C:\code\Python\MemErr\venv\3K\Scripts\python. exe C:/code/python/MemErr/main. py Traceback (most recent call last): File "C:/code/python/MemErr/main. py", line 6, in s. append("More") MemoryError In this case, the traceback is relatively simple as there are no libraries involved in this short program. After the traceback showing the exact function call which caused the issue, we see the simple but direct MemoryError.   Two Ways to Handle A MemoryError in Python Appropriate Python Set-up This simplest but possibly least intuitive solution to a MemoryError actually has to do with a potential... --- ### Security patch for the recent CCS Injection Vulnerability - Published: 2014-06-05 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/security-patch-for-the-recent-ccs-injection-vulnerability/ - Categories: product - Tags: security For the security conscious folks out there - We just finished patching our load balancers with the latest security updates. That is all. :) More info can be found here. --- ### Deploy emails show which commits were deployed - Published: 2014-06-04 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/deploy-emails-show-which-commits-were-deployed/ - Categories: product - Tags: monitor We recently added a feature I've wanted for a long time: our Deploy email notifications now show which commits were in that deploy. It looks like this: This works by querying GitHub's API to find the differences between the commit used for the previous deploy and the commit you just deployed. (If this looks familiar, it's because we show the same information on the Deploys page). As long as one user in your account has GitHub enabled (and the token enabled for your account), all users will be able to see the commit list. Want this? Sign up for a free account, connect with GitHub, and set up deploy tracking. Whenever you deploy, you and your team will get an email like the one above. --- ### How to Fix TypeError: Cannot Read Property Length of Undefined in JavaScript > The JavaScript TypeError: Cannot read property 'length' of undefined occurs when the length property is read on an undefined variable. - Published: 2022-09-01 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/javascript-typeerror-cannot-read-property-length-of-undefined-in-javascript/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript The TypeError: Cannot read property 'length' of undefined is one of the most common type errors in JavaScript. It occurs when the length property is read on an undefined variable. Error message: TypeError: Cannot read properties of undefined (reading 'length') Error Type: TypeError   What Causes TypeError: Cannot Read Property Length of Undefined Undefined means that a variable has been declared but has not been assigned a value. In JavaScript, properties and functions can only belong to objects. Since undefined is not an object type, calling a function or a property on such a variable causes the TypeError: Cannot read property 'length' of undefined.   TypeError: Cannot Read Property Length of Undefined Example Here’s an example of a JavaScript TypeError: Cannot read property 'length' of undefined thrown when the length property is attempted to be read on an undefined variable: function myFunc(a) { console. log(a. length); } var myVar; myFunc(myVar); Since the variable myVar is declared but not initialized, it is undefined. When it is passed to the myFunc function, the property length is attempted to be accessed. Since a is undefined at that point, running the code causes the following error: Uncaught TypeError: Cannot read properties of undefined (reading 'length')   How to Avoid TypeError: Cannot Read Property Length of Undefined When such an error is encountered, it should be ensured that the variable causing the error is assigned a value. The length property is supported by data types such as arrays and strings. Custom objects can also have... --- ### Daily summary email bugfix - Published: 2014-06-02 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/daily-summary-email-bugfix/ - Categories: product - Tags: monitor Last week we fixed a bug in our daily summary emails that a customer reported on May 1st. The bug caused some of the emails to miss information on errors that occurred during certain parts of the day. This was a pretty serious bug. It affected almost all of our customers and had been around for a very long time. The issue ended up being a miscalculation in our timezone handling code. Most developers who have worked with timezones know how difficult it can be to get it right. I'll explain how we did it and how Rollbar helped us quickly narrow in on the problem. Debugging The symptoms: The occurrence counts in some of the daily summary emails were too low Some new errors were not even in the daily summary emails The first thing I did was to recreate the database query by hand. After reading the code and pulling out the relevant queries, I was able to recreate the daily summaries for production but in a development environment. At this point, it was clear that we were missing data but the query was correct. Some possible culprits: MySQL slave delay Long-running MySQL transactions Nebulous time-zone related bug in our code I was able to verify that MySQL slave delay was not the cause by looking at our Scout graphs for the database host. Slave delay was nowhere near where it needed to be to cause this. Next, I looked for long-running MySQL transactions. We have quite a... --- ### How to Fix TypeError: Null is Not an Object in JavaScript > The JavaScript error TypeError: null is not an object occurs when a property is accessed or a method is called on a null value within Safari. - Published: 2022-09-01 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/javascript-typeerror-null-is-not-an-object/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript The JavaScript error TypeError: null is not an object occurs when a property is accessed or a method is called on a null value. This specific error message is shown only on Safari. Other browsers display a different message for this error. Error message: TypeError: null is not an object (evaluating 'x. y') - Safari TypeError: Cannot read properties of null (reading 'x') - Chrome TypeError: x is null - Firefox Error Type: TypeError   What Causes TypeError: Null is Not an Object The TypeError: null is not an object occurs when a property is read (or set) or a method is called on a null value. An object was expected in code but was not provided. Since null is not an object in JavaScript, using a null value when an object is expected does not work. A proper object must be provided in such situations.   TypeError: Null is Not an Object Example Here’s an example of a TypeError: null is not an object thrown when trying to read a property of a null value: var a = null; console. log(a. b); In the above code, the variable a has a null value. When the property b is attempted to be read on it, a TypeError: null is not an object is thrown: TypeError: null is not an object (evaluating 'a. b')   How to Fix TypeError: Null is Not an Object When such an error occurs, it means that a null value was provided where an object was... --- ### rollbar-php v0.9.2 released - Published: 2014-05-30 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/rollbar-php-v0-9-2-released/ - Categories: product - Tags: PHP We've released another small update to rollbar-php, version 0. 9. 2. Get it on Packagist or GitHub. This release contains a fix for an issue occurring in high-volume environments using rollbar-php with rollbar-agent. Previously, it was possible for relay log filenames to collide; now, the filenames include both the PID and the current time in microseconds (from microtime(true)). Thanks to Ryan Fink for the pull request. --- ### How to Fix The Format Flags Conversion Mismatch Exception in Java > The FormatFlagsConversionMismatchException in Java is thrown when a conversion and a flag are incompatible in the source code. - Published: 2022-08-31 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-formatflagsconversionmismatchexception/ - Categories: Code Tutorials, Java - Tags: java A FormatFlagsConversionMismatchException is an unchecked runtime exception which is thrown when a conversion and a flag are incompatible in the source code. This is a very common exception encountered when the programmer tries to format the string. Unless otherwise specified, passing a null argument to any method or constructor in this class will cause a NullPointerException to be thrown.   Here is the syntax of a FormatFlagsConversionMismatchException: public class FormatFlagsConversionMismatchException: IllegalFormatException Here is the hierarchy of the FormatFlagsConversionMismatchException class: Object -> Throwable -> Exception -> RuntimeException -> IllegalArgumentException -> IllegalFormatException -> FormatFlagsConversionMismatchException   When does FormatFlagsConversionMismatchException occur in Java? The FormatFlagsConversionMismatchException class has a constructor that constructs an instance of this class with the specified flag ( f ) and conversion ( c ). So whenever there is an incompatibility between the flag and the conversion, this exception is thrown. public FormatFlagsConversionMismatchException(String f, char c) Example one: Formatting the String Using String. format A common scenario where many programmers encounter this exception is while formatting the string using the String. format method. public class Demo { public static void main(String args) { int n = 3; String str = "Tony stark"; int noOfSpaces = n * 2; noOfSpaces = str. length + noOfSpaces; String output = String. format("%1$#" + noOfSpaces + "s", str); System. out. println(output); } } The flag # can only be applied to %o, %x, %f, and %e format specifiers only, but here it is %s. And as the # flag and the given argument are not... --- ### rollbar-php v0.9.1 released - Published: 2014-05-29 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/rollbar-php-v0-9-1-released/ - Categories: product - Tags: PHP We've released another small update to rollbar-php, version 0. 9. 1. Get it on Packagist or GitHub. This release contains a fix for an issue when using rollbar-php with rollbar-agent, our server-side agent that allows asynchronous reporting. Previously, when used in agent mode, blank files would be created on each request, even if there was nothing to report. Now, these files are only created when needed. Thanks to Ryan Fink from Red Ventures for the fix. --- ### How to Fix The Service Configuration Error in Java > The ServiceConfigurationError occurs in Java when there is a failure in loading or locating a service provider. - Published: 2022-08-31 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-serviceconfigurationerror/ - Categories: Code Tutorials, Java - Tags: java A ServiceConfigurationError is thrown in Java when a service provider cannot be loaded successfully. For instance, the format of the provider-configuration file appears to violate some aspect of the specification.   Syntax of ServiceConfigurationError: public class ServiceConfigurationError extends Error The ServiceConfigurationError class belongs to the Error class, which itself is an extension of the Throwable class, which is an extension of the Object class. Additionally, the Serializable interface is implemented. Object -> Throwable -> Error -> ServiceConfigurationError   When does the ServiceConfigurationError occur? The ServiceConfigurationError exception occurs when something goes wrong while loading service providers like Javax Servlet, Hibernate or Java Swing in your application. However, below are some other related scenarios where this error also can occur: On violation of the specification of the provider-configuration file. An IOException occurs when reading the provider-configuration file. When a concrete provider class named in provider-configuration cannot be found while working. When the concrete provider class is not a subclass of the service class. When the concrete provider class cannot be instantiated or some other kind of error occurs.   Example: Writing an Image to a New File Path import java. awt. image. BufferedImage; import java. io. *; import javax. imageio. ImageIO; public class Demo { public static void createImage2 { try { BufferedImage bImage = ImageIO. read(new File("/Users/demo/Documents/Images/download. jpg")); ByteArrayOutputStream bos = new ByteArrayOutputStream; ImageIO. write(bImage, "jpg", bos); byte data = bos. toByteArray; ByteArrayInputStream bis = new ByteArrayInputStream(data); BufferedImage bImage2 = ImageIO. read(bis); ImageIO. write(bImage2, "jpg", new File("output. jpg")); } catch (IOException... --- ### rollbar-gem v0.12.20 released - Published: 2014-05-29 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/rollbar-gem-v0-12-20-released/ - Categories: product - Tags: ruby We've released a new patch version of rollbar-gem, version 0. 12. 20. Get it on Rubygems or GitHub. This release contains a compatibility fix for Sidekiq < 2. 3. 2, as well as an improvement to the project_gems feature. If you have multiple gems that you want to be considered in-project code, you can now specify them with a regex (strings still work too). For example: Rollbar. configure do |config| config. project_gems = end Thanks to Jonathan Cheatham for the pull request. --- ### How to Handle the Argument Null Exception in C# > The ArgumentNullException occurs in C# when null arguments are passed to a method in that expects non-null values. - Published: 2022-08-31 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/csharp-argumentnullexception/ - Categories: C#, Code Tutorials - Tags: csharp A System. ArgumentNullException occurs when an invalid argument is passed to a method in C#. In this case, it refers to the passing of a null object when the method expects a non-null object or a value. Similar to other exceptions raised as a result of arguments, System. ArgumentNullException is not generally raised by the . NET framework itself or the Common Language Runtime (CLR). Instead, it is thrown by an application or a library as an indication of improper null arguments.   Syntax of ArgumentNullException Similar to any class or method, exceptions also have their own syntax. Below is the syntax for ArgumentNullException: public class ArgumentNullException : ArgumentException The ArgumentNullException comes under the class of ArgumentException, which is inherited from the SystemException class. The SystemException class is in turn inherited from the Exception class, which is inherited from the Object class. Object -> Exception -> SystemException -> IOException -> FileNotFoundException   When does the ArgumentNullException occur in C#? Generally, there are two major circumstances when an ArgumentNullException is thrown, both of which reflect developer errors: An object returned from a method call is then passed as an argument to a second method, but the value of the original returned object is null. To prevent the error, check for a return value that is null and call the second method only if the return value is not null. An uninstantiated object is passed to a method. To prevent the error, instantiate the object.   Example One: Working with an Inbuilt... --- ### rollbar-php v0.9.0 released - Published: 2014-05-23 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/rollbar-php-v0-9-0-released/ - Categories: product - Tags: PHP We've released a new version of rollbar-php, version 0. 9. 0. It's available now on Packagist, or find the source on GitHub. E_NOTICES NOW IGNORED BY DEFAULT Rollbar can track E_NOTICEs as 'info'-level events, but in practice this often turns into large amounts of data, even for relatively low-traffic projects. We've changed the defaults to now ignore E_NOTICE errors. If you do want E_NOTICEs to be sent to Rollbar, configure like this: --- ### Resolving the Boto3 NoCredentialsError in Python > NoCredentialsError is raised while using Boto3 to access AWS in Python, when a credentials file is invalid or cannot be located. - Published: 2022-08-25 - Modified: 2022-10-02 - URL: https://rollbar.com/blog/python-boto3-nocredentialserror/ - Categories: Code Tutorials, Python - Tags: Python The NoCredentialsError is an error encountered when using the Boto3 library to interface with Amazon Web Services (AWS). Specifically, this error is encountered when your AWS credentials are missing, invalid, or cannot be located by your Python script. These credentials are stored by default at ~/. aws/credentials which contains your access key and secret access key for using AWS services, along with other configuration details such as your region code. Think of this file as your login and password for the service. Attempting a Connection A NoCredentialsError is encountered while creating a connection to AWS, which is the first step for any program using these web services. Let’s have a look at a piece of code which connects to a Boto3 resource and attempts to print out the resource's name. import boto3 s3 = boto3. resource('s3') for bucket in s3. buckets. all: print(bucket. name) It’s important to note that there is no issue with this code itself. The issue is that when Boto3 attempts to make a connection to this resource, it attempts to reference the credentials file to make sure you are authorized to access said resource. If the credentials are valid, the program proceeds without issue. However, if there is a problem, the developer will encounter an error. An Issue Is Found Let’s say the above script is run and there is an issue with the credentials, the console will print out the following error: Traceback (most recent call last): File "C:/code/Python/NoCred/main. py", line 5, in for bucket... --- ### rollbar.js v1.0.0-rc8 released - Published: 2014-05-22 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/rollbar-js-v1-0-0-rc8-released/ - Categories: product - Tags: JavaScript Today, we released rollbar. js version 1. 0. 0-rc8. This release includes a fix for a bug where the global variable i was used, which could cause strange behavior when interacting with other code that also references i as a global variable. The change is live now and being served from our CDN - no action is required on your part for most customers. If you're self-hosting rollbar. js, we recommend upgrading your copy to the latest. --- ### How to Fix the OperationalError in Python > The OperationalError in Python is encountered when using the Psycopg library to indicate that incorrect database information was provided - Published: 2022-08-16 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/python-operationalerror/ - Categories: Code Tutorials, Python - Tags: Python OperationalError is a class of error encountered while working with the psycopg library in Python. Operational errors are closely linked with the connect method within psycopg and typically occur when parameters passed to this method are incorrect or invalid. This may mean that a parameter, such as a database name, is spelled incorrectly, has changed, or that the database server itself is experiencing a problem.   Example 1: Database Connection Request Let's try connecting to a database to identify the sources of these errors. For this example, assume the database and user are named postgres, the host is localhost and the password is pa55w0rd. conn = psycopg2. connect("dbname='postgres' user='postgres' host='foreignhost' password='pa55w0rd'") cur = conn. cursor   An Output of Example 1 Notice here that the hostname is entered as foreignhost rather than the correct value of localhost. This results in the method being unable to connect to the database server and producing the following console output. C:\code\Python\PostreSQL\venv\3K\Scripts\py C:/code/python/PostreSQL/unique_violation Traceback (most recent call last): File "C:/code/python/PostreSQL/unique_violation", line 12, in conn = psycopg2. connect("dbname='postgres' user='postgres' host='foreignhost' password='pa55w0rd'") File "C:\code\Python\PostreSQL\venv\3K\lib\site-packages\psycopg2\__init__. py", line 122, in connect conn = _connect(dsn, connection_factory=connection_factory, **kwasync) psycopg2. OperationalError: could not translate host name "foreignhost" to address: Unknown host Notice the final line of this error message calls out the hostname directly saying, “Could not translate host name "foreignhost" to address: Unknown host. ” This shows us exactly which credential is causing the issue.   Example 2: Database Connection Request Alternatively, a correct hostname and an incorrect password is entered.... --- ### Heartbleed Bug Response - Published: 2014-04-08 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/heartbleed-bug-response/ - Categories: product - Tags: security Updated 4/9 7:30pm What is Heartbleed? CVE-2014-0346, known as “Heartbleed”, is a bug in OpenSSL v1. 0. 1 through 1. 0. 1f that allows a remote attacker to access private memory on the target server. It has existed for almost 2 years. More info can be found here: http://heartbleed. com/ With this vulnerability, an attacker can: Get your private key for your domain’s ssl cert Decrypt all current and past SSL traffic to/from all affected machines If this sounds bad, it is. Most sites on the Internet are affected. Are you affected? Probably. If your web server or load balancer is running on linux and you’ve updated your packages anytime in the last 2 years, you are more-than-likely affected. To check your OpenSSL version, run openssl version -a Check out http://filippo. io/Heartbleed/ to test your servers for the vulnerability. How We Responded We learned of CVE-2014-0346 at around 4:50pm on 4/7 and immediately began our response. We completed the most important fix (patching OpenSSL) within about an hour, and have been working over the past 24 hours on related issues. Here is a timeline of what we’ve done since the vulnerability was announced: 4/7 - 3:01pm - Ubuntu Security Announcements email Subscribe to this list here 4/7 - 4:50pm - Began updating our load balancers with the fix. All servers patched by 6pm. We’re running nginx on Ubuntu 12. 04. Updating is as simple as: apt-get update apt-get upgrade openssl version -a # should show that it was built on... --- ### How to Fix ReferenceError: Event is Not Defined in JavaScript > JavaScript's ReferenceError: Event is Not Defined occurs if the event parameter is not declared correctly when using an event handler. - Published: 2022-08-04 - Modified: 2022-12-12 - URL: https://rollbar.com/blog/javascript-referenceerror-event-is-not-defined/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript The Javascript ReferenceError occurs when referencing a variable that does not exist or has not yet been initialized in the current scope. The ReferenceError: event is not defined usually occurs while using an event handler if the event parameter is either not declared or declared incorrectly. For example, if on an onclick event, the handler does not declare the event parameter, this error is thrown.   What Causes Javascript ReferenceError: Event is Not Defined The Javascript ReferenceError is thrown when an attempt is made to reference a non-existing or out of scope variable. Not defining a variable or parameter before referencing it is one of the most common triggers for reference errors. When using event handlers in Javascript, the handler expects a parameter to be declared for the event object. This parameter is usually named e or event. If this parameter is not declared in the handler, or declared incorrectly, and is used later on in the handler, the ReferenceError: event is not defined is thrown. The Javascript Window object has a property called event, which is only supported by certain browsers. In case an event parameter is not declared explicitly in event handlers, this property might instead be used. Therefore, this error only occurs in browsers that do not support the Window. event property.   ReferenceError: Event is Not Defined Example Here’s an example of a Javascript ReferenceError: event is not defined thrown when the event parameter is not declared in an event handler: function myFunction { console. log(event);... --- ### Connecting Rollbar with PagerDuty - Published: 2013-10-16 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/connecting-rollbar-with-pagerduty/ - Categories: product - Tags: integrations Using Rollbar with PagerDuty is now a lot more seamless. PagerDuty provides SaaS IT on-call schedule management, alerting, and incident tracking. With our new integration, you can automatically send issues found by Rollbar into incidents in PagerDuty. We have a few customers using it already. Here’s what Richard Lee, CTO at Polydice, a mobile development studio, has to say: “With Rollbar’s integration of PagerDuty, we’re able to get notified as soon as errors detected, and avoid possible downtime to our customers. This powerful combination becomes a must have tool for us. ” — Richard Lee, CTO at Polydice Integrating Rollbar with PagerDuty is easy; just create a new Generic API System in PagerDuty, and then link it in Rollbar’s Notification settings. See our docs for detailed instructions. --- ### How to Handle the Psycopg2 UniqueViolation Error in Python > Thrown by the psycopg2 library when a user attempts to insert a duplicate key value in a SQL or SQL-like library. - Published: 2022-08-04 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/python-psycopg2-errors-uniqueviolation/ - Categories: Code Tutorials, Python - Tags: Python The psycopg2. errors. UniqueViolation is an error thrown by the when a user attempts to insert a duplicate key value. In an SQL or SQL-like database a key value is defined when a table is created. This key value is then used to reference specific rows of the table. In order to make calls to these rows unambiguous, this key value must be unique for every row. Any attempt to insert a new row which has a value in the key field that already exists in the table cannot be completed. This will result in a UniqueViolation error.   An Example of psycopg2. errors. UniqueViolation In the below example, we are attempting to create a new table and populate it with data. However, our code will cause a UniqueViolation error to be thrown. import psycopg2 def create_tables(cur): cur. execute("create table student2(name char(30), gender char(30), birthday char(30), primary key(name));") def fill_tables(cur): cur. execute("insert into student2 (name, gender, birthday) values ('Tom', 'male', '11-21-2000');") cur. execute("insert into student2 (name, gender, birthday) values ('Tom', 'male', '03-31-2001');") try: conn = psycopg2. connect("dbname='postgres' user='postgres' host='localhost' password='pa55w0rd'") cur = conn. cursor except: print("I am unable to connect to the database") if __name__ == '__main__': create_tables(cur) fill_tables(cur) In the above example, a new table is created using the create_tables function. This table stores the name, gender, and birthday for each entry. Notice that the name is being used as the primary key, which means this value cannot be duplicated. Any other values can be duplicated as needed. For... --- ### Resolving Rollbar Items in Versions - Published: 2013-09-17 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/resolving-rollbar-items-in-versions/ - Categories: product - Tags: triage We just rolled out a new feature to help track which versions/revisions errors are resolved in. When resolving items within Rollbar, you have the option of entering a revision or version number. If one is entered, it will appear in the item’s status history to let anyone looking at the item better understand specifically when it was fixed. This version can be combined with a new code_version parameter set in the configuration options of the latest versions of our notifiers. This can be set to either a numerical value (eg. 1, 24, 300), a semantic version value (eg. 1. 0. 3, 2. 9), or a git revision sha. Here are examples on how to set this parameter in our JavaScript and Ruby notifiers: In the JavaScript snippet: _rollbarParams = { // ... other configuration "client. javascript. code_version": "bdd2b9241f791fc9f134fb3244b40d452d2d7e35" } In your rollbar-gem configuration: Rollbar. configure do |config| # ... other configuration config. code_version = 'bdd2b9241f791fc9f134fb3244b40d452d2d7e35' end The other notifiers have a very similar top-level code_version configuration settings. See the notifier readmes for more info. If you resolve an item within Rollbar in a certain version and are also specifying a code_version for your code, we will use both of these values to decide whether or not to reactivate the item. For example, say you have a bug in version 1. 0 of your app. The bug is fixed and will be deployed to users in verision 1. 1, but that won’t happen for a few days. You can just resolve... --- ### How to Handle the FileNotFoundException in C# > The FileNotFoundException occurs in C# when the system is unable to locate a file when the program is executed. Learn how to handle it here. - Published: 2022-07-25 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/csharp-filenotfoundexception/ - Categories: C#, Code Tutorials - Tags: csharp One of the most commonly occurring errors in C#, FileNotFoundException is raised when the developer tries to access a file in the program that either doesn't exist or has been deleted. The following are some of the reasons the system is unable to locate the file: There might be a mismatch in the file name. For instance, instead of "demo. txt", the developer has written "Demo. txt". The file location may have changed. The file might have been deleted. The location or path the developer has passed might be wrong.   Syntax of FileNotFoundException Similar to any class or a method, exceptions also have their own syntax. Below is the syntax for FileNotFoundException: public class FileNotFoundException :System. IO. IOException The FileNotFoundException comes under the class of IOExceptions, which is inherited from the SystemException. SystemException, which is inherited from the Exception class, which is in turn inherited from the Object class. Object -> Exception -> SystemException -> IOException -> FileNotFoundException   An Example of FileNotFoundException In the below code, System. IO is imported, which is necessary for doing input and output operations on a file. Then within the main method, a try-catch block is placed to catch the exceptions, and within the try block we have our StreamReader class object. The StreamReader class is used to read text files. An object of StreamReader, the path of file "demo. txt" is passed. This file doesn't exist in its constructor. Then the ReadToEnd method is used to read the file till the end... --- ### Ad-hoc error reporting with Rollbar CLI - Published: 2013-08-08 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/ad-hoc-error-reporting-with-rollbar-cli/ - Categories: product - Tags: monitor We just coded up a quick tool to send Rollbar messages from the command line. It’s useful for quick, one-off monitoring scripts that you don’t have time to instrument with one of our notifiers. To install, just pip install rollbar and you’re done. e. g. Tracking all non-500s as WARNINGs from HAProxy tail -f /var/log/haproxy. log | awk '{print $11,$0}' | grep '^5' | awk '{$1="";print "warning",$0}' | rollbar -t $ACCESS_TOKEN -e production -v e. g. Watch failed login attempts tail -f /var/log/auth. log | grep -i 'Failed password' | awk '{print "error user ",$11,"failed auth from ",$13}' | rollbar -t $ACCESS_TOKEN -e ops More info on how to install and use it can be found here. --- ### How to Fix the FileNotFoundException in Java.io > The FileNotFoundException is a checked exception in Java that occurs when an attempt to open a file denoted by a specified pathname fails. - Published: 2022-07-18 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-filenotfoundexception/ - Categories: Code Tutorials, Java - Tags: java The java. io. FileNotFoundException is a checked exception in Java that occurs when an attempt to open a file denoted by a specified pathname fails. This exception is thrown by the FileInputStream, FileOutputStream, and RandomAccessFile constructors when a file with the specified pathname either does not exist or is inaccessible. Since FileNotFoundException is a checked exception, it must be explicitly handled in methods which can throw this exception - either by using a try-catch block or by throwing it using the throws clause.   What Causes FileNotFoundException There are two main scenarios when the FileNotFoundException occurs: If a file with the specified pathname does not exist. If a file with the specified pathname is inaccessible, for example, if the file is read-only and is attempted to be opened for writing.   FileNotFoundException Example Here's an example of a FileNotFoundException thrown when trying to access a file that does not exist in the system: public class FileNotFoundExceptionExample { public static void main(String args) { BufferedReader br = null; try { br = new BufferedReader(new FileReader("myfile. txt")); String data = null; while ((data = br. readLine) ! = null) { System. out. println(data); } } catch (IOException ioe) { ioe. printStackTrace; } finally { try { if (br ! = null) { br. close; } } catch (IOException ioe) { ioe. printStackTrace; } } } } In the above example, a file with the name myfile. txt is attempted to be accessed. However, since no such file exists in the system, a... --- ### jQuery Error Instrumentation - Published: 2013-08-07 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/jquery-error-instrumentation/ - Categories: product - Tags: JavaScript Today we are releasing a new feature for our JavaScript notifier that should make tracking down errors much easier if you use jQuery 1. 7 and above. The new functionality comes in a separate JS plugin snippet that should be placed right below where jQuery is loaded. Here is the first version of the plugin: // The source can be found on GitHub here. The snippet wraps the ready, on and off functions in jQuery to wrap any passed-in handlers in try/except blocks to automatically report errors to Rollbar. This lets us collect the full stack trace with line and column numbers for each frame, instead of just the last frame with only a line number. When combined with source maps, this makes debugging JavaScript errors much more doable. The new snippet also adds a handler to ajaxError to automatically report any jQuery AJAX errors such as 404s and 500s to Rollbar. If you don’t want this, add the following option to your base snippet’s _rollbarParams: "notifier. plugins. jquery. ignoreAjaxErrors": true You can start tracking errors in Rollbar by signing up for free. Or read more in the docs. --- ### How to Fix the No Such Element Exception in Java > The NoSuchElementException in Java can be thrown by various accessor methods to indicate that the element being requested does not exist. - Published: 2022-07-06 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-nosuchelementexception/ - Categories: Code Tutorials, Java - Tags: java The NoSuchElementException is an unchecked exception in Java that can be thrown by various accessor methods to indicate that the element being requested does not exist. Since the NoSuchElementException is thrown at runtime, it does not need to be declared in the throws clause of a method or constructor.   What Causes NoSuchElementException The NoSuchElementException can be thrown by various classes or interfaces in Java such as Iterator, Enumerator, Scanner or StringTokenizer. If an element is requested using the accessor methods of these classes or interfaces, and the underlying data structure does not contain the element, the NoSuchElementException is thrown. This can occur if the data structure is empty or if its next element is requested after reaching the end of the structure.   NoSuchElementException Example Here is an example of a NoSuchElementException thrown when trying to access an element of an empty ArrayList using an accessor method of the Iterator interface: public class NoSuchElementExceptionExample { public static void main(String args) { List list = new ArrayList; Iterator it = list. iterator; System. out. println(it. next); } } In the above example, an element of the ArrayList list is requested using the Iterator. next accessor method. However, since list is empty, the element requested does not exist and the operation throws a NoSuchElementException: Exception in thread "main" java. util. NoSuchElementException at java. base/java. util. ArrayList$Itr. next(ArrayList. java:970) at NoSuchElementExceptionExample. main(NoSuchElementExceptionExample. java:9)   How to Fix NoSuchElementException To fix the NoSuchElementException, it should be ensured that the underlying object contains more... --- ### JavaScript and Source Maps in a Django App - Published: 2013-08-02 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/javascript-and-source-maps-in-a-django-app/ - Categories: Code Tutorials, JavaScript, Python - Tags: JavaScript It’s pretty well known that every web app needs frontend JavaScript these days to provide the best possible user experience. You are probably going to have a bunch of JavaScript files that need to be loaded by your users for that to happen, and since we all care about performance, minifiying and compressing these files is an absolute must. But what happens when it comes time to debug issues in these minified files? Stack traces will more or less be completely useless. How do we solve this problem? JavaScript source maps solve this problem. They allow you to map a point in a minified file back to the unminfied source, making it possible to actually identify and fix issues encountered in a production app environment. Below I have outlined a simple guide for setting up source map generation and usage in a sample Django app. You’ll learn how generate source maps for minified files, debug errors that happen in these files, and also a quick overview of what’s required to get this working for your production environments. Local Debugging with Source Maps Say you have a simple Django app with the following directory structure: ... app/ ... views. py static/ js/ site. js (containing various models and functionality used in your app) jquery. js (unminified) util. js templates/ index. html site. js would have the following code: var aFunction = function { var a = b; } App = {}; App. errorCausingFunction = function { aFunction; } views. py would... --- ### Move Faster with Rollbar Improve - Published: 2022-06-30 - Modified: 2022-12-14 - URL: https://rollbar.com/blog/rollbar-improve-alpha/ - Categories: product - Tags: improve Building software is complex and, at Rollbar, we believe it’s better to move quickly and manage risk intelligently rather than try to build perfect code. For the past decade, Rollbar has provided peace of mind to hundreds of thousands of developers by monitoring production environments for errors. The tool has been leveraged to find and fix bugs in a fraction of the time and is trusted by the individual developers to at-scale enterprises. We realized that we can leverage our unique understanding of quality in production to provide teams actionable insights into their planning, development, release, triage & bug fixing processes. Over the coming months we'll be sharing a new product that will help Rollbar and its customers transcend their competitors. The product we've been purposefully designing in collaboration with several of our customers is called Improve. With Improve, we will help teams and organizations prioritize where they focus their limited time better. We'll help teams understand ownership, expertise, and manage risk within their process with every pull request. Moreover, Improve will coach on how software teams can move their metrics in the right direction. In the end, we're going to help our customers learn from their failures. We're excited to share that we're opening up a limited Alpha (𝝰) for Improve which gives a nibble of what's to come. Rollbar: Improve is now available on selected plans. View the plans on our pricing page. Learn more in our docs. --- ### Debug Production Errors in Minified JavaScript with Source Maps and Rollbar - Published: 2013-07-25 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/debug-production-errors-in-minified-javascript-with-source-maps-and-rollbar/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript Rollbar just got a much-requested feature: Source Maps support for Javascript. If you minify your Javascript code in production, this will make debugging production errors much easier. This feature is now live for all accounts. {: . highlightbox} Here's a link to a recently updated tutorial on using JavaScript source maps with Rollbar. What Are Source Maps? If you minify your Javascript code (i. e. using UglifyJS2 or the Closure Compiler), it gets harder to debug errors. Stack traces reference the line/column numbers in the minified code instead of the original source code. Source Maps were designed to resolve this; they provide a mapping back from the minified line/column numbers to the original code. Chrome and Firefox have tools to use them in development, but what about errors that happen in production? Source Maps and Rollbar Rollbar can now map stack traces that reference minified code back to the original source files, lines, and column numbers. Here’s what a stack trace might have looked like before: Here’s the de-minified version: We’ll also use the de-minified stack trace in our grouping algorithm, which should result in more useful grouping. Getting this set up To get started, you’ll need to make a change to _rollbarParams in the on-page javascript snippet. Add the following two parameters: _rollbarParams = { // ... existing params ... // set this to 'true' to enable source map processing "client. javascript. source_map_enabled": true, // provide the current code version, i. e. the git SHA of your javascript code.... --- ### How to Fix the Missing Resource Exception in Java > The MissingResourceException occurs when a resource required by a Java program is not found within the specified filepath. - Published: 2022-06-30 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-missingresourceexception/ - Categories: Code Tutorials, Java - Tags: java The MissingResourceException is an unchecked exception in Java that occurs when a resource is missing. Since the MissingResourceException is thrown at runtime, it does not need to be declared in the throws clause of a method or constructor.   What Causes MissingResourceException The MissingResourceException occurs when a resource required by a Java program is not found. Common causes for this include the following: If a resource file with the specified name does not exist or could not be found. Attempting to retrieve a value associated with a key in a resource file when no value was defined in the file with the specified key. Attempting to retrieve the country or language of a Locale if no three-letter abbreviation could be found for the country or language of that Locale.   MissingResourceException Example Here is an example of an MissingResourceException thrown when a resource file could not be found: public class MissingResourceExceptionExample { public static void main(String args) { ResourceBundle myResources = ResourceBundle. getBundle("resources"); } } In the above example, a resource file with the name resources. properties is attempted to be retrieved. Since no file with this name exists, running the above code throws the MissingResourceException: Exception in thread "main" java. util. MissingResourceException: Can't find bundle for base name resources, locale en_GB at java. base/java. util. ResourceBundle. throwMissingResourceException(ResourceBundle. java:2055) at java. base/java. util. ResourceBundle. getBundleImpl(ResourceBundle. java:1689) at java. base/java. util. ResourceBundle. getBundleImpl(ResourceBundle. java:1593) at java. base/java. util. ResourceBundle. getBundleImpl(ResourceBundle. java:1556) at java. base/java. util. ResourceBundle. getBundle(ResourceBundle. java:857) at MissingResourceExceptionExample. main(MissingResourceExceptionExample.... --- ### Async node.js API server testing - Published: 2013-07-12 - Modified: 2025-02-19 - URL: https://rollbar.com/blog/async-node-js-api-server-testing/ - Categories: Code Tutorials, JavaScript - Tags: nodejs This post is about how we built our test suite for our API server at Rollbar and some of the tricks and gotchas we ran into along the way. We wanted to build a test suite that not only tested the API logic, but also the underlying code, namely the Express and the Connect middlewares we use. If our API server was going to break, we wanted to know before we deployed it to thousands of customers and millions of requests per day. Testing is super important. If you don’t want to test, this probably won’t be very helpful or interesting. We use Vows. Why not Mocha? Mocha is, by far, the most widely used testing framework for Node. js apps. So, why didn’t we use it? The two main reasons were that Vows was the first thing I found when Googling “nodejs async testing” and the other is that the syntax of Mocha tests felt like another language and less like code. Mocha tests are more readable but the benefit of readability was overshadowed by the need to remember all of these new, special-case methods that Mocha injects. //Mocha . indexOf(5). should. equal(-1); vs //Vows assert. equal(. indexOf(5), -1); There’s something that bothered me about the former. I didn’t like how the library used a bunch of magic to enable something this small/strange. Mocha has a lot of awesome features but none that were important enough for me to switch. A simple Vows test Vows works just as you’d... --- ### How to Fix the Unknown Format Conversion Exception in Java > The UnknownFormatConversionException in Java is thrown when an unknown conversion occurs while formatting data. - Published: 2022-06-27 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-unknownformatconversionexception/ - Categories: Code Tutorials, Java - Tags: java The UnknownFormatConversionException is an unchecked exception in Java that occurs when an unknown conversion is given. Since the UnknownFormatConversionException is thrown at runtime, it does not need to be declared in the throws clause of a method or constructor.   What Causes UnknownFormatConversionException The UnknownFormatConversionException is thrown when an unknown conversion occurs while formatting data. This can happen when using a format specifier that has an unknown parameter value. For example, using the value %i as a format specifier will throw an UnknownFormatConversionException, since this is an unknown parameter value.   UnknownFormatConversionException Example Here is an example of an UnknownFormatConversionException thrown when using a format specifier that has an unknown parameter value: public class UnknownFormatConversionExceptionExample { public static void main(String args) { String str = "Hello World"; System. out. printf("%w", str); } } Since %w is an unknown value for a format specifier, using it throws an UnknownFormatConversionException: Exception in thread "main" java. util. UnknownFormatConversionException: Conversion = 'w' at java. base/java. util. Formatter$FormatSpecifier. conversion(Formatter. java:2839) at java. base/java. util. Formatter$FormatSpecifier. (Formatter. java:2865) at java. base/java. util. Formatter. parse(Formatter. java:2713) at java. base/java. util. Formatter. format(Formatter. java:2655) at java. base/java. io. PrintStream. format(PrintStream. java:1209) at java. base/java. io. PrintStream. printf(PrintStream. java:1105) at UnknownFormatConversionExceptionExample. main(UnknownFormatConversionExceptionExample. java:4)   How to Fix UnknownFormatConversionException To avoid the UnknownFormatConversionException, it should be ensured that format specifiers used in code have a known value. In the above example, the exception can be resolved by replacing %w with %s which is the correct format specifier for string values.... --- ### May Release Roundup - Published: 2013-05-29 - Modified: 2021-07-19 - URL: https://rollbar.com/blog/may-release-roundup/ - Categories: product - Tags: monitor Here’s a roundup of what’s new at Rollbar in the month of May. Big Features We revamped our notifications system, and added integrations with a bunch of new services. Rollbar now works with Asana, Campfire, Flowdock, GitHub Issues, Hipchat, JIRA, Pivotal Tracker, and Trello, as well as any arbitrary system via a Webhook. See the announcement blog post for more details. Small Features You can now customize how occurrences are grouped. This first release allows you to define rules of things that should always be grouped together. See the documentation: Custom Grouping Rules. An in-depth post on how to use this is coming soon. There’s now a “Download CSV” link at the bottom of the Items page, which will let you download a CSV of what you see on the page. Note that this information is also available via our API. You can now sort the Items page by Total Occurrences or Unique Users, in additon to Last Occurrence. Click on the column headers to change the sort. Links to files in GitHub are now linked to the appropriate revision, when this information is available. We’ll use one of the following (trying each in order): the value of server. sha the value of server. branch, if it looks like a SHA the revision from the last deploy before the first occurrence of the item Library Updates Ruby We released rollbar-gem versions 0. 9. 11 through 0. 9. 14. The changes include a fix for use with Rails 4, a concurrency... --- ### How to Fix the Missing Format Argument Exception in Java? > Java's MissingFormatArgumentException occurs if a format specifier does not have an argument/argument index points to a nonexistant argument. - Published: 2022-06-17 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-missingformatargument/ - Categories: Code Tutorials, Java - Tags: java The MissingFormatArgumentException is an unchecked exception in Java that occurs when a format specifier does not have a corresponding argument or if an argument index points to an argument that does not exist. Since the MissingFormatArgumentException is thrown at runtime, it does not need to be declared in the throws clause of a method or constructor.   What Causes MissingFormatArgumentException The MissingFormatArgumentException is thrown when using a format specifier that does not have a corresponding argument or if an argument index refers to an argument that does not exist. For example, the %d format specifier requires an integer to be passed to it, and if no argument is passed, a MissingFormatArgumentException is thrown.   MissingFormatArgumentException Example Here is an example of an MissingFormatArgumentException thrown when using a format specifier that does not have a corresponding argument: public class MissingFormatArgumentExceptionExample { public static void main(String args) { String str = "Hello World"; System. out. printf("%s" + str); } } Since the %s format specifier expects a corresponding string argument but no such argument exists, running the above code throws the MissingFormatArgumentException: Exception in thread "main" java. util. MissingFormatArgumentException: Format specifier '%s' at java. base/java. util. Formatter. format(Formatter. java:2672) at java. base/java. io. PrintStream. format(PrintStream. java:1209) at java. base/java. io. PrintStream. printf(PrintStream. java:1105) at MissingFormatArgumentExceptionExample. main(MissingFormatArgumentExceptionExample. java:4)   How to Fix MissingFormatArgumentException To avoid the MissingFormatArgumentException, it should be ensured that format specifiers used in code should have corresponding arguments and that the arguments exist at the correct argument index. In the... --- ### Rules Engine for Notifications, Plus Integrations with Campfire, Hipchat, JIRA and Trello - Published: 2013-05-06 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/rules-engine-for-notifications-plus-integrations-with-campfire-hipchat-jira-and-trello/ - Categories: product - Tags: integrations Today we’re revamping the model for defining what you want to be notified about from Rollbar. Rollbar now integrates with Asana, Campfire, Flowdock, GitHub Issues, Hipchat, JIRA, Pivotal Tracker and Trello, as well as any arbitrary system via a Webhook. New Integration Channels In addition to our existing channels (Email, Asana, GitHub Issues, Pivotal Tracker, and Webhook), we’re launching support for four more: Campfire, Hipchat, JIRA, and Trello. You can set up all of this in Settings -> Notifications. Notification Rules Engine Notifications are now configured per-project (instead of per-user-per-project), using a trigger-action model. There are triggers for the following events: New Item (first occurrence of a new issue) Reactivated Item (a previously resolved issue has occurred again) 10nth Occurrence (an issue has occurred for the 10th, 100th, etc. time) Resolved Item (an item has been resolved by hand) Reopened Item (an item has been reopened by hand) Post-deploy (you’ve notified us that you deployed a new release) Corresponding actions are available for most actions in most channels. If it would make sense, it probably exists. Most actions can be configured as you’d expect (i. e. set which teams should receive an email, or which user to assign JIRA issues to). Item-related triggers can be filtered by environment, level, title (exception class+message), and filename. Deploy triggers can be filtered by environment and comment. Our underlying tech supports much more than the UI exposes, so let us know what other filters you’d like to see. Migration for existing customers We’ve migrated... --- ### How to Fix the Input Mismatch Exception in Java? > Thrown by a Scanner to indicate that a retrieved token does not match the pattern for the expected type, or that the token is out of range. - Published: 2022-06-09 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-inputmismatchexception/ - Categories: Code Tutorials, Java - Tags: java p>The InputMismatchException is a runtime exception in Java that is thrown by a Scanner object to indicate that a retrieved token does not match the pattern for the expected type, or that the token is out of range for the expected type. Since InputMismatchException is an unchecked exception, it does not need to be declared in the throws clause of a method or constructor.   What Causes InputMismatchException The InputMismatchException generally occurs when working with Java programs that prompt users for input using the Scanner class. The exception can occur when the input is invalid for the expected type. The input either does not match the pattern for the expected type, or is out of range. For example, if a program expects an Integer value for an input but the user enters a String value instead, an InputMismatchException is thrown.   InputMismatchException Example Here is an example of an InputMismatchException thrown when a String is entered as input to a Scanner that expects an integer: import java. util. Scanner; public class InputMismatchExceptionExample { public static void main(String args) { Scanner scanner = new Scanner(System. in); System. out. println("Enter an integer: "); int integer = scanner. nextInt; scanner. close; System. out. println("You entered: " + integer); } } In the above code, the user is prompted for an integer as input. The Scanner. nextInt method is used to retrieve the value, which expects an integer as input. If the user enters a String value instead of an integer, an InputMismatchException is... --- ### Taking UNIQUE indexes to the next level - Published: 2013-03-29 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/taking-unique-indexes-to-the-next-level/ - Categories: Code Tutorials - Tags: sql You’ve probably seen unique constraints somewhere – either in Rails’ validates :uniqueness, Django’s Field. unique, or a raw SQL table definition. The basic function of unique constraints (preventing duplicate data from being inserted) is nice, but they’re so much more powerful than that. When you write INSERT or REPLACE statements that rely on them, you can do some pretty cool (and efficient) things that you would’ve had to do multiple queries for otherwise. This post covers unique indexes in MySQL 5. 5. Other versions of MySQL are similar. I’m not sure about Postgres or other relational databases but presume they’re similar-ish as well. Primer: what is a unique index? Pre-primer: data in a database is stored on disk somewhere. In a SQL database, the data is organized into tables which have rows and columns. An index is a way to look up particular rows, based on the values of one or more columns, without having to scan through the whole table. Instead, you look up those values in the index, which tells you where to find the matching rows. Index lookups are typically faster than full table scans because they’re organized for fast searches on the indexed columns (usually using binary trees), and they’re also generally smaller than the original data. A unique index is an index that also imposes a constraint: that no two entries in the index can have the same values. It can be comprised of one column or many columns. If many columns, then the entire... --- ### Java Guide: What is Heap Space & Dynamic Memory Allocation? > The heap space in Java is used for the dynamic memory allocation of Java objects and classes at runtime, i.e on the creation of a new object. - Published: 2022-06-09 - Modified: 2022-06-09 - URL: https://rollbar.com/blog/java-heap-space/ - Categories: topics - Tags: java To run Java applications optimally, the JVM divides memory into stack and heap memory. Whenever new variables and objects are declared, new methods are called or other similar operations are performed, the JVM designates memory to these operations from either the Stack Memory or Heap Space. Heap space is used for the dynamic memory allocation of Java objects and classes at runtime. New objects are always created in the heap space, and references to these objects are stored in the stack memory.   Java Heap Space and Generations The heap space is created by the JVM when it starts. The heap is used as long as the application is running. It can be broken down into smaller parts called generations, which are: Young Generation - All new objects are allocated and aged here. A minor garbage collection occurs when this fills up. Old or Tenured Generation - Long surviving objects are stored here. When objects are stored in the Young Generation, a threshold for the object's age is set. When this threshold is reached, the object is moved to the Old Generation. Garbage collection is usually performed in the Old Generation when it's full. This is called Major GC and it usually takes longer. Permanent Generation (replaced by Metaspace since Java 8) - Consists of JVM metadata for runtime classes and application methods.   Java Heap Space Features Some features of the heap space are: It is accessed via complex management techniques that include the Young, Old and Permanent Generations.... --- ### Improved grouping for Javascript errors - Published: 2013-03-21 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/improved-grouping-for-javascript-errors/ - Categories: product - Tags: monitor We’ve released an updated to how Javascript errors are grouped in Rollbar. The new update does a better job of separating different errors into different groups (“Items” in Rollbar parlance) while still recognizing the same issue in different browsers as the same. It’s now enabled for all new projects. Existing projects can enable it on the Migrations tab in Settings. Now the longer version... First some background: by default, exceptions in Rollbar are grouped using their stack traces. We take all of the filenames and method names in all of the stack frames, plus the exception class name, apply a number of heuristics to normalize them, and then combine everything together and take a sha1 hash. The result is a 40-character string used as the “fingerprint”; occurrences with matching fingerprints that also have the same project, environment, and platform are grouped together. The fingerprint can also be overridden at the API level for custom grouping. This generally works pretty well: Omitting the line numbers from stack frames means groups persist across code changes elsewhere in the file. Using the whole stack trace, instead of just the very last frame, avoids conflating unrelated issues that happen to cause an exception on the same line of code. Using just the exception class, instead of also the message, avoids including data in the fingerprint, and when we have a nice, long stack trace, that’s usually enough uniqueness. Javascript uncaught errors are a different story though. They’re reported through window. onerror, which luckily is... --- ### How to Handle the Headless Exception in Java > This exception is thrown when code that depends on a keyboard, display or mouse is called in an environment that does not support any of these - Published: 2022-06-09 - Modified: 2022-06-09 - URL: https://rollbar.com/blog/java-headlessexception/ - Categories: topics - Tags: java The java. awt. HeadlessException is a runtime exception in Java that occurs when code that is dependent on a keyboard, display or mouse is called in an environment that does not support a keyboard, display or mouse. Since HeadlessException is an unchecked exception, it does not need to be declared in the throws clause of a method or constructor.   What Causes HeadlessException The HeadlessException is thrown when Java code that depends on a display device, keyboard, or mouse is called in an environment that does not support any of these. This typically occurs in the Java headless mode, which is a system configuration in which the display device, keyboard, or mouse is lacking. Certain Java AWT components require peripheral devices and will not work in the headless mode. As a rule of thumb, top-level AWT components such as Frame and Button always need an interactive environment. If these components are used in a non-interactive (headless) environment, a HeadlessException is thrown.   HeadlessException Example Here’s an example of a HeadlessException thrown when using a JFrame object in the Java headless mode: import javax. swing. JFrame; public class HeadlessExceptionExample { public static void main(String args) { JFrame frame = new JFrame("test"); frame. setVisible(true); } } When the above code is executed in the Java headless mode using the following command line argument: -Djava. awt. headless=true The HeadlessException is thrown: Exception in thread "main" java. awt. HeadlessException at java. desktop/java. awt. GraphicsEnvironment. checkHeadless(GraphicsEnvironment. java:165) at java. desktop/java. awt. Window. (Window. java:540) at... --- ### Launch and initial funding - Published: 2013-02-26 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/launch-and-initial-funding/ - Categories: company - Tags: error-monitoring Today we’re excited to announce the public launch of Rollbar. Rollbar tracks and analyzes errors in production applications, helping dev and ops teams diagnose and fix them. Platform-agnostic API Anything that can speak JSON and HTTP can talk to Rollbar. Our API accepts raw “items” (errors, exceptions, and log messages) and deploys as inputs, and aggregated items, occurrences, and deploys as outputs. We provide official libraries for Ruby, Python, PHP, Node. js, Javascript, and Flash; or you can roll your own. Severity levels Just because something raises an exception, doesn’t mean it should be treated as an “error”. Rollbar lets you utilize five severity levels (from “debug” to “critical”) to control visibility and notifications. Severity can be set in your code, or after-the-fact in the Rollbar interface. Track users through your stack Person tracking helps you provide great customer support by emailing affected users when you fix an error they hit. Or see the history for a particular user and link customer error reports to code problems, client- and server-side. So much more API endpoints on 3 continents. Resolving and reactivations. Real-time notifications for new issues. Graphs everywhere. Deploy tracking. Search by title, host, file, context, date, severity, status. Replay an issue by pressing a button. SSL everywhere. GitHub, Asana, and Pivotal Tracker integration. We’ve built many of the pieces our beta customers have needed, and we really think you’re going to like it. Start a free trial now, or see pricing, features, or docs. More firepower We’re also excited... --- ### Java: List of Checked & Unchecked Exceptions > List of checked & unchecked Java exceptions with links to their corresponding guide. 1.InvocationTargetException 2.NoSuchMethodException.... - Published: 2022-06-08 - Modified: 2024-05-07 - URL: https://rollbar.com/blog/java-list-of-all-checked-unchecked-exceptions/ - Categories: topics - Tags: java Like most modern programming languages, Java includes the concept of exceptions to handle both errors and "exceptional events. " When an exception occurs in your code, it disrupts the normal instruction logic and abnormally terminates the process. However, with a little foresight and code, you can often handle these exceptions gracefully, allowing your code to continue running and providing insight for tracking down the root cause of the unexpected result. Below we have compiled a list of Checked and UncheckedJava exceptions you would likely encounter, with links to their corresponding guide on how best to implement them.   Exceptions under the parent class java. lang. Throwable Checked exceptions are denoted by the ✓ mark Exception CloneNotSupportedException ✓ InterruptedException ✓ ReflectiveOperationException ClassNotFoundException ✓ IllegalAccessException ✓ InstantiationException ✓ NoSuchFieldException ✓ NoSuchMethodException ✓ RuntimeException ArithmeticException ArrayStoreException ClassCastException EnumConstantNotPresentException IllegalArgumentException llegalThreadStateException NumberFormatException IllegalCallerException IllegalMonitorStateException IllegalStateException IndexOutOfBoundsException ArrayIndexOutOfBoundsException StringIndexOutOfBoundsException LayerInstantiationException NegativeArraySizeException NullPointerException SecurityException TypeNotPresentException UnsupportedOperationException   Track, Analyze and Manage Errors With Rollbar Managing errors and exceptions in your code is challenging. It can make deploying production code an unnerving experience. Being able to track, analyse, and manage errors in real-time can help you proceed with more confidence. Rollbar automates error monitoring and triaging, making fixing Java errors easier than ever. Sign Up Today! --- ### Upgrading to the new Rollbar notifier libraries - Published: 2013-02-26 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/upgrading-to-the-new-rollbar-notifier-libraries/ - Categories: product - Tags: SDK We’ve updated all of our notifier library repositories to match the name change to Rollbar today. The old Ratchet. io repos have been deprecated and all further development will continue on the respective Rollbar versions. Please note that the submit. ratchet. io endpoint and the existing libraries will continue to work for the indefinite future, so you don’t have to do anything right now. But we do recommend upgrading to take advantage of future updates. Upgrading should be seamless and quick. Please contact support@rollbar. com if you run into any issues. Here are links to the upgrade instructions for each: Browser JS - update the JS snippet used on your site to the version shown here pyratchet ratchetio-gem ratchetio-php ratchet-agent node_ratchet flash_ratchet --- ### What is a Java Stack Trace? How to Read & Analyze Traces > Displayed when an error/exception occurs, stack traces in Java can be used to debug or troubleshoot issues encountered in code. - Published: 2022-05-30 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-stack-trace/ - Categories: Code Tutorials, Java - Tags: java A Java stack trace is displayed when an error or exception occurs. The stack trace, also called a backtrace, consists of a collection of stack records, which store an application's movement during its execution. The stack trace includes information about program subroutines and can be used to debug or troubleshoot and is often used to create log files. These exceptions could be custom (defined by the user) or built-in. Examples include RuntimeException,NullPointerException, andArrayIndexOutofBoundsException. Now that you know what a stack trace is, let’s take a look at some examples, how to analyze stack traces, and how you can avoid a stack trace altogether with error handling.   Examples of Java Stack Traces Example 1 - Temperature Conversion from Celsius to Fahrenheit Let's look at an example of converting temperatures from Celsius to Fahrenheit. Only an integer or float input is valid here. But if we try to provide another data type, such as a string, the compiler will throw an exception and print the stack trace. import java. util. Scanner; public class hello{ public static void main(String args) { Scanner scanner = new Scanner(System. in); System. out. print("Enter value in Celsius to convert in fahrenheit:"); double Celsius = scanner. nextFloat; double fahrenheit = (Celsius * 1. 8)+32; System. out. printf("%. 1f degrees Celsuis is %. 1f degrees in Fahrenheit ",Celsius,fahrenheit); } } When we run the above code and enter some invalid value, let’s say the string "hero," we get the following output: Enter value in Celsius to convert in... --- ### Real-time Search for Exceptions and Errors - Published: 2012-10-24 - Modified: 2022-11-28 - URL: https://rollbar.com/blog/real-time-search-for-exceptions-and-errors/ - Categories: product - Tags: monitor We’re happy today to announce the release of real-time search. You can now search your exceptions, errors, and log messages by title: For exceptions, the title contains the exception class and message. For errors and log messages, it contains the entire message. It’s a full-text search that works best on whole words; we also do a few tricks with camelCase and underscore_separated terms. The search index is kept up-to-date in real-time as new items are added to the system (that’s the “real-time” part). Typically the delay is ~2 seconds from receiving the input at our API to being inthe index and searchable. Current customers can try it out now; let us know if you run into any issues. What else would you like to see indexed? If you don’t have an account yet, sign up here for early access. Under the hood We’re using the new Sphinx realtime features for indexing and querying. It’s currently running on a single dedicated machine (1 core, 2GB ram, 100GB local disk). New items are indexed by a long-running script that indexes new items as they are inserted. (It keeps track of its location in the table and polls every second for new rows. ) The index includes two full-text fields, title and environment, and two scalar attributes, status and level. Title and environment don’t change, so we don’t need to update them. But status (active/resolved) and level (critical/error/warning/info/debug) do. We keep these in sync by simply writing to the search server whenever we... --- ### How to Resolve an Uncaught Reference Error in Javascript > The ReferenceError occurs when referencing a variable that does not exist or has not been initialized in the current scope. Learn how to solve it. - Published: 2022-05-24 - Modified: 2022-11-28 - URL: https://rollbar.com/blog/javascript-referenceerror/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript The Javascript ReferenceError occurs when referencing a variable that does not exist or has not yet been initialized in the current scope. Reference errors in Javascript are of a few different types, with variations of each, that may get triggered in code. Some of these are discussed below.   What Causes Javascript ReferenceError The Javascript ReferenceError is thrown when an attempt is made to reference a non-existing or out of scope variable. There are a few types of reference errors in Javascript with different variations of each. Some of these are: Undefined variables - Not defining a variable before referencing it is one of the most common triggers for reference errors in Javascript. Out of scope variables - Variables defined inside a function's scope cannot be accessed outside of it. If an attempt is made to reference an out of scope variable, a ReferenceError is thrown. Strict mode - Using strict mode in Javascript can throw a ReferenceError if a variable is not defined using the var, let or const keywords. Here’s an example of such a declaration: foo = true; Referencing the variable foo in code would result in a ReferenceError being thrown if using strict mode. The error would not occur if not using strict mode. Variable redeclarations - Redeclaring variables using the wrong keywords can also throw a ReferenceError. For example, initially declaring a variable using let, and subsequently redeclaring using let again throws a ReferenceError.   ReferenceError Example Here’s an example of a Javascript ReferenceError thrown... --- ### Using a Request Factory in Pyramid to write a little less code - Published: 2012-09-07 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/using-a-request-factory-in-pyramid-to-write-a-little-less-code/ - Categories: Code Tutorials, Python - Tags: Python At Rollbar. com, we’ve been using Pyramid as our web framework and have been pretty happy with it. It’s lightweight and mostly stays out of our way. Pyramid doesn’t have a global request object that you can just import, so it makes you pass around request wherever you need it. That results in a lot of library code that looks like this: # lib/helpers. py def flash_success(request, body, title=''): request. session. flash({'body': body, 'title': title'}) and a lot of view code that looks like this: # views/auth. py @view_config(route_name='auth/login') def login(request): # (do the login... ) helpers. flash_success(request, "You're now logged in. ") # (redirect... ) That is, there ends up being a lot of function calls that pass request as their first argument. Wouldn’t it be nicer if we could attach these functions as methods on request itself? That would save a few characters every time we call them, and let us stop thinking about whether request is the first or last argument. Pyramid facilitates this by letting us provide our own Request Factory: from pyramid. request import Request class MyRequest(Request): def hello(self): print "hello! " def main(global_config, **settings): config = Configurator(settings=settings, request_factory=MyRequest) # ... Now the request passed to our view methods, and everywhere else in our app, has our hello method. So, what can we do with this that’s actually useful? In our codebase, we have a few convenience methods to get data about the logged-in user, flash messages, and check if features are enabled. Here it... --- ### PHP Nested Try-Catch > In PHP, Try-catch blocks can be nested up to any desired levels and are handled in reverse order of appearance. Learn more now! - Published: 2022-05-24 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/php-nested-try-catch/ - Categories: Code Tutorials, PHP - Tags: PHP Try-catch blocks in PHP can be nested up to any desired levels and are handled in reverse order of appearance i. e. innermost exceptions are handled first. Nested blocks can be useful in case a block of code causes an exception, which can be handled within that block and program execution can continue in the outer block. They can also be useful in case the handling of an exception causes another exception. Here is an example of a nested try-catch block: try{ try{ if(file_exists("myfile. json")){ //upload file } else { throw new Exception( 'File not found'); } } catch (Exception $e){ throw new Exception( 'Unable to upload file',0,$e); } //continue outer try block code } catch (Exception $e){ echo $e->getMessage . ""; while($e = $e->getPrevious) { echo 'Previous exception: '. $e->getMessage . ""; } } In this example, a file is uploaded and it is checked whether the file exists or not prior to the upload operation. If it does not exist, an exception is thrown. This code that checks whether the file exists or not is placed within a try-catch block, which is nested within another try-catch block. In case the file is not found, the inner block throws an 'Unable to upload file' exception, which is caught and handled by the outer block, leading to the following output: Unable to upload file Previous exception: File not found   Track, Analyze and Manage Errors With Rollbar Managing errors and exceptions in your code is challenging. It can make deploying... --- ### How to Handle the Syntax Error in Javascript > The Javascript SyntaxError is thrown when the engine comes across tokens or token orders with incorrect syntax when parsing code. - Published: 2022-05-12 - Modified: 2024-10-09 - URL: https://rollbar.com/blog/javascript-syntaxerror/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript The Javascript SyntaxError occurs when trying to interpret code that is not syntactically valid. It is thrown when the Javascript engine comes across tokens or token order that does not conform to Javascript syntax when parsing code.   What Causes Javascript SyntaxError The Javascript SyntaxError is caused by the incorrect use of a pre-defined syntax. Syntax errors are detected while interpreting or parsing source code. For example, a SyntaxError can occur if a closing brace (}) is left off when defining a Javascript function. Browser development tools such as Chrome DevTools display Javascript syntax errors in the console.   SyntaxError Example Here’s an example of a Javascript SyntaxError thrown when missing a closing quotation mark (") in a line of code: console. log("Hello World); Since the above line of code has a missing closing quote, running it throws a SyntaxError: Uncaught SyntaxError: Invalid or unexpected token   How to Handle SyntaxError Syntax errors in Javascript cannot be handled by using try-catch blocks as they are thrown while the code is being parsed. The window. onerror function can be used instead to figure out that there is a syntax error. To achieve this, the onerror function must be defined in a separate script tag and not in the tag where the error may occur. The earlier code can be updated to use window. onerror: In the above code, the syntax error in the second script tag is logged by the console. log statement in the first script tag: Error: Uncaught SyntaxError:... --- ### Writing a simple deploy script with Fabric and @roles - Published: 2012-08-16 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/writing-a-simple-deploy-script-with-fabric-and-roles/ - Categories: Code Tutorials, Python - Tags: integrations I first heard about Fabric a couple years ago while at Lolapps and liked the idea of: writing deployment and sysadmin scripts in a language other than Bash that language being Python, which we used everywhere else but we already had a huge swath of shell scripts that worked well (and truth be told, Bash isn’t really that bad). But now that we have at clean slate for Rollbar, Fabric it is. I wanted a simple deployment script that would do the following: check to make sure it’s running as the user “deploy” (since that’s the user that has ssh keys set up and owns the code on the remote machines) for each webserver: git pull pip install -r requirements. txt in series, restart each web process make an HTTP POST to our deploys api to record that the deploy completed successfully Here’s my first attempt: import sys from fabric. api import run, local, cd, env, roles, execute import requests env. hosts = def deploy: # pre-roll checks check_user # do the roll. update_and_restart # post-roll tasks rollbar_record_deploy def update_and_restart: code_dir = '/home/deploy/www/mox' with cd(code_dir): run("git pull") run("pip install -r requirements. txt") run("supervisorctl restart web1") run("supervisorctl restart web2") def check_user: if local('whoami', capture=True) ! = 'deploy': print "This command should be run as deploy. Run like: sudo -u deploy fab deploy" sys. exit(1) def rollbar_record_deploy: # read access_token from production. ini access_token = local("grep 'rollbar. access_token' production. ini | sed 's/^. * = //g'", capture=True) environment = 'production' local_username =... --- ## Guides ### How to Handle the Socket Exception in Java > The SocketException in Java is thrown to indicate that an error was encountered while creating or accessing a Socket. - Published: 2022-05-05 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-socketexception/ - Categories: Code Tutorials, Java - Tags: java The SocketException is an exception in Java that is thrown to indicate that an error was encountered while creating or accessing a Socket. Since the SocketException is a checked exception, it either needs to be thrown or surrounded by a try-catch block in code.   What Causes SocketException SocketException is a subclass of IOException and is the most general exception that indicates a problem when trying to open or access a socket. Some common causes for the SocketException are: Closed socket connection - The most common cause of SocketException is reading or writing from or to a closed socket connection. It can also occur when the connection is closed before all the data is read in the socket buffer. Slow network - A poor network connection might also cause a SocketException. Setting a higher connection timeout can decrease the rate of SocketException for slow connections. Network firewall - A network firewall can close socket connections. A network monitoring tool like Wireshark can be used to check firewall activities. Idle connection - Long idle connections might also cause a SocketException. If a connection needs to be used for a long time, heartbeat messages can be sent to prevent the idle state. Errors in code - A SocketException can also occur because of issues or bugs in code. For example, if a client sends a message to the server after the socket connection is closed.   SocketException Example The following is an example of a SocketException thrown when trying to write to... --- ### How to Handle the Unknown Host Exception in Java > The UnknownHostException occurs when trying to connect to a remote host, but the IP address of the host could not be determined. - Published: 2022-05-05 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-unknownhostexception/ - Categories: Code Tutorials, Java - Tags: java The UnknownHostException is an exception in Java that is thrown to indicate that the IP address of a host could not be determined. Since the UnknownHostException is a checked exception, it either needs to be thrown or surrounded by a try-catch block in code.   What Causes UnknownHostException The UnknownHostException occurs when trying to connect to a remote host using its hostname, but the IP address of the host could not be determined. This usually happens because of a typo in the hostname, or because of a DNS misconfiguration or propagation delay.   UnknownHostException Example Here is an example of an UnknownHostException thrown when trying to connect to an unknown host: public class UnknownHostExceptionExample { public static void main(String args) { String host = "https://rollbar. co"; URL url = null; try { url = new URL(host); HttpURLConnection con = (HttpURLConnection) url. openConnection; System. out. println(con. getResponseCode); } catch (MalformedURLException mue) { mue. printStackTrace; } catch (IOException ioe) { ioe. printStackTrace; } } } The above code attempts to connect to a remote host, but has a typo in the hostname. Therefore, running the code throws an UnknownHostException exception: java. net. UnknownHostException: rollbar. co at java. base/sun. nio. ch. NioSocketImpl. connect(NioSocketImpl. java:567) at java. base/java. net. SocksSocketImpl. connect(SocksSocketImpl. java:333) at java. base/java. net. Socket. connect(Socket. java:648) at java. base/sun. security. ssl. SSLSocketImpl. connect(SSLSocketImpl. java:290) at java. base/sun. security. ssl. BaseSSLSocketImpl. connect(BaseSSLSocketImpl. java:173) at java. base/sun. net. NetworkClient. doConnect(NetworkClient. java:182) at java. base/sun. net. www. http. HttpClient. openServer(HttpClient. java:474) at java. base/sun.... --- ### What is Error Logging in C++ > Error logs can be a life-saver. Learn how to create an error logging class in C++ to track errors, warnings, and status messages in runtime. - Published: 2022-07-11 - Modified: 2022-07-18 - URL: https://rollbar.com/guides/cpp/cpp-error-logging/ - Guide Languages: C++ In C++, an error logger class is typically used to track errors, warnings, and status messages at runtime. In a simple application, errors are printed directly to the console; however, in most cases, this class will log errors along with a timestamp, severity, and any other necessary details to a log file specified by the developer. This article is designed to help intermediate C++ coders learn how to create an error logging class and customize it as they see fit.   An Example of an Error Logger Class At runtime, the inner workings of a program are invisible to the user. This makes it difficult to understand why an application isn’t working as expected. An error logger is a module designed to assist in these situations. The logger sits within a program and tracks any errors or useful status messages created during runtime. Logs allow you to see the results of each independent process to determine exactly where faults are occurring. Below is an example of a basic error logging class in C++. While a fully realized logger would be more robust, this gives a good starting point to understand how a logger is designed. enum LogPriority { TraceP, DebugP, InfoP, WarnP, ErrorP, FatalP }; class BasicLogger { private: static LogPriority verbosity; public: static void Log(LogPriority priority, const char* message) { if (priority >= verbosity) { switch (priority) { case TraceP: std::cout --- ### How to Implement Custom Exceptions in C++ > Custom exceptions in C++ provide relevant information about an error to the exception handling mechanism and customize the error message. - Published: 2022-04-21 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/cpp-custom-exceptions/ - Categories: C++, Code Tutorials - Tags: c++ Under certain conditions, custom exceptions that are not predefined in C++ may be useful to generate. In C++, any type can be caught or thrown that matches some requirements. These are that the type should have a valid copy constructor and destructor. Custom exceptions provide relevant information about an error to the exception handling mechanism. They can be generated by creating a new class containing the attributes needed and throwing an instance of such a class, or by inheriting from std::exception and overriding the what function.   Custom C++ Exceptions Example Here’s an example on how to create and throw a custom exception in C++: #include using namespace std; class MyCustomException : public std::exception { public: char * what { return "Custom C++ Exception"; } }; int main { try { throw MyCustomException; } catch (MyCustomException mce) { cout --- ### Error Debugging in C++ with VS Code > Learn how to debug using the C/C++ extension for VS Code with advanced features like breakpoints, tracking variable values, and stepping. - Published: 2022-07-11 - Modified: 2022-07-18 - URL: https://rollbar.com/guides/cpp/cpp-debugging-with-vs-code/ - Guide Languages: C++ Debugging can be a life-saver when it comes to discovering bugs or errors in your code. In this article you will learn how to debug using the C/C++ extension for VS Code, including advanced features like breakpoints, tracking variable values, and stepping.   The Code We’ll Debug Throughout this tutorial, the following C++ class is used as an example (vector. h): class Vector { private: float start_y; float start_x; float end_y; float end_x; public: Vector { start_x = -1; start_y = -1; end_y = -1; end_x = -1; } Vector(float start_a, float start_b, float end_a, float end_b) { start_x = start_a; start_y = start_b; end_y = end_a; end_x = end_b; } float get_length { return sqrt((end_x - start_x) * (end_x - start_x) + (end_y - start_y) * (end_y - start_y)); } }; This class is being called by the following main function (pathfinder. cpp): #include #include #include “Vector. h” int main { std::cout --- ### How to Handle Exceptions in C++ > C++ exceptions provide a well-defined way for detecting errors and passing the information up the call stack. - Published: 2022-04-13 - Modified: 2022-07-18 - URL: https://rollbar.com/guides/cpp/how-to-handle-exceptions-in-cpp/ - Guide Languages: C++ When C++ code is executed, various types of errors can occur in the program - coding errors made by programmers, errors due to incorrect input or other unforeseen errors. When an error occurs, C++ usually stops the program execution and generates an error message. In most scenarios, the preferred way to report and handle both logic and runtime errors is to use exceptions. Exceptions provide a formal and well-defined way for detecting errors and to pass the information up the call stack.   C++ Exception Types C++ provides a list of standard exceptions defined in the class which can be used in code. These exceptions are arranged in a hierarchy: Figure 3: C++ Exception Types Hierarchy As shown above, all the exception classes in C++ derive from the std::exception class. Here's a short description of each of the exceptions in the hierarchy above: Table 1. C++ Exception Classes Under std::exception Exception Description std::exception Exception and parent class of all standard C++ exceptions. std::bad_alloc Generally thrown by new. std::bad_cast Generally thrown by dynamic_cast. std::bad_typeid Generally thrown by typeid. std::bad_exception Useful device to handle unexpected exceptions. std::logic_failure Can be detected by reading code. std::runtime_error Cannot be detected by reading code. std::domain_error Thrown when using a mathematically invalid domain. std::invalid_argument Thrown when using invalid arguments. std::length_error Thrown when a large std::string is created. std::out_of_range/td> Thrown by the at method. std::overflow_error Thrown when a mathematical overflow occurs. std::range_error Thrown when attempting to store an out-of-range value. std::underflow_error Thrown when a mathematical underflow occurs.  ... --- ### How to Handle the Clone Not Supported Exception in Java > Thrown to indicate that Object.clone() was called to clone an object, but that object's class does not implement the Cloneable interface. - Published: 2022-04-07 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-clonenotsupportedexception/ - Categories: Code Tutorials, Java - Tags: java The CloneNotSupportedException is an exception in Java that is thrown to indicate that the clone method in class Object was called to clone an object, but that object's class does not implement the Cloneable interface. Applications that override the clone method can also throw this exception to indicate that an object could not or should not be cloned.   What Causes CloneNotSupportedException A class implements the Cloneable interface to indicate to the Object. clone method that it is legal to create a clone of that class. Invoking Object. clone on an instance that does not implement the Cloneable interface results in the CloneNotSupportedException being thrown. By convention, classes that implement the Cloneable marker interface should override the protected Object. clone method with a public method.   CloneNotSupportedException Example Here is an example of an CloneNotSupportedException thrown when an object is cloned, and the object’s class does not implement the Cloneable interface: class Person { private String name; public Person(String name) { super; this. name = name; } @Override protected Object clone throws CloneNotSupportedException { return super. clone; } } public class CloneNotSupportedExceptionExample { public static void main(String args) { Person p = new Person("John"); try { p. clone; } catch (CloneNotSupportedException cnse) { cnse. printStackTrace; } } } Since the Person class does not implement the Cloneable interface, it is not legal to create a clone of that class using Object. clone. Therefore, running the above code throws the CloneNotSupportedException exception: java. lang. CloneNotSupportedException: Person at java. base/java. lang. Object.... --- ### How to Throw Exceptions in Flutter > Exception in Flutter can be thrown using try, catch and finally blocks when an unexpected issue occurs when executing a program. - Published: 2022-03-24 - Modified: 2023-09-19 - URL: https://rollbar.com/guides/flutter/how-to-throw-exceptions-in-flutter/ - Guide Languages: Flutter An exception is an unexpected issue that occurs when executing a program and disrupts its normal flow. Exceptions can cause the application to terminate abnormally if not handled. Exceptions are intended to be caught and handled so they do not affect the flow of the program. To handle an exception in code, try. . catch. . finally blocks should be used.   Why Throw Exceptions in Flutter? Exceptions can be thrown to convey information to the user about a failure that occurred during the execution of a program. They should contain useful data fields to convey the relevant information. This can help the issue be addressed programmatically. Exceptions can be instantiated and thrown in Flutter using the throw keyword. The syntax for throwing an exception is: throw new exception_name   Flutter Throw Exception Example Here’s an example that shows how to use the throw keyword in Flutter to throw an exception: void validate_age(int age) { if(age < 0) { throw new FormatException; } } In the above example, the validate_age function is used to validate an integer age, which should not be negative in value. If the value is found to be less than 0, a FormatException is thrown.   Handling Exceptions in Flutter To handle exceptions in Flutter, try. . catch. . finally blocks can be used to prevent the application from terminating abruptly. The try block contains the code that might possibly throw an exception. The try block must be followed by on or catch blocks, and an... --- ### How to Resolve the Instantiation Exception in Java > The InstantiationException in Java is thrown when the JVM cannot instantiate a Java type at runtime using the Class.newInstance() method. - Published: 2022-04-04 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/how-to-resolve-the-instantiation-exception-in-java/ - Categories: Code Tutorials, Java - Tags: java The InstantiationException is a runtime exception in Java that occurs when an application attempts to create an instance of a class using the Class. newInstance method, but the specified class object cannot be instantiated. Since the InstantiationException is an unchecked exception, it does not need to be declared in the throws clause of a method or constructor.   What Causes InstantiationException The InstantiationException is thrown when the JVM cannot instantiate a type at runtime. This can happen for a variety of reasons, including the following: The class object represents an abstract class, interface, array class, primitive or void. The class has no nullary constructor. Such a constructor is required when a parameterized constructor is defined for the class.   InstantiationException Example Here is an example of an InstantiationException thrown when the Class. newInstance method is used to create an instance of a boolean: public class InstantiationExceptionExample { public static void main(String args) { try { Class clazz = boolean. class; clazz. newInstance; } catch (InstantiationException ie) { ie. printStackTrace; } catch (IllegalAccessException iae) { iae. printStackTrace; } } } Since boolean is a primitive data type, a new instance of it cannot be created using the Class. newInstance method, which can only construct objects for concrete classes. Running the above code throws the following exception: java. lang. InstantiationException: boolean at java. base/java. lang. Class. newInstance(Class. java:598) at InstantiationExceptionExample. main(InstantiationExceptionExample. java:5) Caused by: java. lang. NoSuchMethodException: boolean. at java. base/java. lang. Class. getConstructor0(Class. java:3427) at java. base/java. lang. Class. newInstance(Class. java:585)... --- ### How to Debug PHP Errors > Most PHP error reports are vague, and identifying the underlying causes can be difficult. Learn the common steps towards pinpointing and resolving PHP errors that crop up in production. - Published: 2019-02-12 - Modified: 2021-06-11 - URL: https://rollbar.com/guides/php/how-to-debug-php-errors/ - Guide Languages: PHP Most PHP error reports are vague, and identifying the underlying causes can be difficult. Learn the common steps towards pinpointing and resolving PHP errors that crop up in production. How to Debug PHP Errors Debugging PHP errors in a production environment can be one of the single most frustrating experiences as a developer. More often than not, the error reports are vague, and identifying the underlying causes can be difficult at best. That said, there are a few common steps that can be followed towards identifying and resolving errors that crop up in production. Debugging PHP Errors Step 1: Increase the log level More information is always better. Using the methods described in Where are PHP Errors Logged? , the first step towards diagnosing any issue is to increase the log level. This allows you to see everything that is happening before and after a problem occurs. There is a good chance that the problems you are experiencing have warnings or messages associated with them that don't necessarily make it into the log files by default. Step 2: Retain logs Once you've increased the log level, the next step is to start retaining logs. This can be done through any number of log aggregation platforms, and allows you to start establishing a timeline of events without worrying about the log files being rolled over. Step 3: Attempt to replicate circumstances Once you've determined the log lines that relate to the problem at hand, the next step is to attempt to replicate the circumstances of the error in a development environment. Before we can do this, we first need to establish some testing guidelines. This involves doing things like mimicking... --- ### How to Fix the Empty Stack Exception in Java > The EmptyStackException is a runtime exception in Java that is thrown by methods in the Stack class to indicate that the stack is empty. - Published: 2022-03-28 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-emptystackexception/ - Categories: Code Tutorials, Java - Tags: java The EmptyStackException is a runtime exception in Java that is thrown by methods in the Stack class to indicate that the stack is empty. Since the EmptyStackException is an unchecked exception, it does not need to be declared in the throws clause of a method or constructor.   What Causes EmptyStackException The EmptyStackException is thrown when attempting to access elements in an empty stack in Java. For example, if the Stack. pop method is used to remove an object at the top of an empty stack, an EmptyStackException is thrown.   EmptyStackException Example Here is an example of an EmptyStackException thrown when an element is attempted to be popped from an empty stack: import java. util. Stack; public class EmptyStackExceptionExample { public static void main(String args) { Stack s = new Stack; s. pop; } } The Stack. pop method removes the element at the top of a stack. Since the above code attempts to use this method on an empty stack, it throws an EmptyStackException: Exception in thread "main" java. util. EmptyStackException at java. base/java. util. Stack. peek(Stack. java:101) at java. base/java. util. Stack. pop(Stack. java:83) at EmptyStackExceptionExample. main(EmptyStackExceptionExample. java:6)   How to Fix EmptyStackException The EmptyStackException can be avoided using a check to make sure that the stack is not empty before using methods such as Stack. pop or Stack. peek which could throw an EmptyStackException. The code in the earlier example can be updated to include this check: import java. util. Stack; public class EmptyStackExceptionExample { public... --- ### Where are Ruby Errors Logged? > This simple guide explains where Ruby logs are located, how to configure logging, and why error monitoring tools like Rollbar make debugging even faster. - Published: 2019-02-12 - Modified: 2021-06-11 - URL: https://rollbar.com/guides/ruby/where-are-ruby-errors-logged/ - Guide Languages: Ruby This simple guide explains where Ruby logs are located, how to configure logging, and why error monitoring tools like Rollbar make debugging even faster. Where Are Ruby Errors Logged? So, when we encounter errors in our code, where exactly can we find them? At a high level, there are two common places that Ruby errors can be found: inline with program execution, and in a designated log file. The Logger Class Before we look at where Ruby errors are logged, let's first take a look at how those errors are logged. The Logger class is a utility class that can be used to write messages to a specified output path. While this may sound relatively simplistic, it is actually a very sophisticated implementation for a built-in logging tool. Log Files vs. Inline Errors When instantiating the Logger class, you must define a destination to output all logs to. Output could be one of two types: a standard stream output like STDOUT and STDERR, or a file output like /var/log/ruby. log. The standard output stream could also be considered inline errors, as they are output directly to the command line during program execution. To instantiate a Logger that writes to STDOUT, for example, all we need to do is pass STDOUT as the first parameter to the initializer: logger = Logger. new(STDOUT) While this is incredibly valuable for live debugging, a more long-term logging solution is often more desirable. Thankfully, the Logger class initializer also accepts a file path, allowing us to log data directly to a log file: logger = Logger. new("/var/log/ruby. log") Log Levels Once we select a destination for our log data,... --- ### How to Fix the Type Not Present Exception in Java > Java's TypeNotPresentException is thrown when the definition of a type, attempted to be accessed using a specified name, cannot be found. - Published: 2022-03-28 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-typenotpresentexception/ - Categories: Code Tutorials, Java - Tags: java The TypeNotPresentException is a runtime exception in Java that is thrown when an application attempts to access a type using a string that represents the name of the type, but the definition for the type with the specified name cannot be found. It differs from ClassNotFoundException as ClassNotFoundException is a checked exception, whereas TypeNotPresentException is unchecked. Since the TypeNotPresentException is an unchecked exception, it does not need to be declared in the throws clause of a method or constructor.   What Causes TypeNotPresentException The TypeNotPresentException is thrown when the definition of a type, attempted to be accessed using a specified name, cannot be found. The application attempts to access the type using a string that represents the name of the type, but no definition for the type with the specified string can be found. This exception can be thrown when undefined type variables are attempted to be accessed as well as when types (classes, interfaces or annotation types) are loaded. It can, in particular, be thrown by the API used to read annotations reflectively.   TypeNotPresentException Example Here's an example of a TypeNotPresentException thrown when a custom annotation contains an element that refers to a class that exists at compile-time but not at runtime. When this annotation is used by a class and read reflectively, a TypeNotPresentException is thrown. First, the custom annotation MyAnnotation is created. This annotation contains an element context that refers to the javax. xml. bind. JAXBContext class: import java. lang. annotation. Retention; import java. lang. annotation.... --- ### How to Raise Exceptions in Ruby > It's not enough to raise exceptions in Ruby. You need to raise exceptions effectively. Here's how to create a human-readable—and diagnosable—exception object. - Published: 2019-02-12 - Modified: 2021-06-11 - URL: https://rollbar.com/guides/ruby/how-to-raise-exceptions-in-ruby/ - Guide Languages: Ruby It's not enough to throw exceptions in Ruby. You need to throw exceptions effectively. Here's how to create a human-readable—and diagnosable—exception object. Raising Exceptions in Ruby Rescuing pre-defined exceptions is one thing, but to more effectively utilize exceptions within your application, it is important to understand how to create and raise your own. At its core, every Ruby exception stems from a built-in Exception class, and includes a handful of built-in methods, but the most commonly used exception method is message. This method can be used to retrieve a specific exception message from a raised exception object. Raising Generic Exceptions Like the title of this section implies, raising exceptions in Ruby can be done using the raise method. While a blank exception can be raised, however, most exceptions include a message with additional information about the error. For example, a default RuntimeError exception can be raised with a custom error message in just one line: raise "This is an exception" While this is valuable for raising generic exceptions, it is also possible to raise an instance of an Exception class, such as StandardError: raise StandardError. new "This is an exception" Keep in mind, however, that while StandardError exceptions are intended to be rescued, Exception exceptions are not (see Exception Handling in Ruby). This means that if you choose to raise a new Exception instance, you will not be able to rescue it without explicitly rescuing every top-level Exception instance, which could cause unexpected problems down the line. raise Exception. new "This is an exception" Raising Custom Exceptions In a nutshell, every custom Ruby exception should extend StandardError, rather than the Exception class... --- ### How to Handle Exceptions in Ruby > The simple guide to exception handling in Ruby. ✓ Harden your app against unexpected errors ✓ Respond more effectively ✓ Adapt to any issue that may arise. - Published: 2019-02-12 - Modified: 2022-11-30 - URL: https://rollbar.com/guides/ruby/how-to-handle-exceptions-in-ruby/ - Guide Languages: Ruby The simple guide to exception handling in Ruby. ✓ Harden your app against unexpected errors ✓ Respond more effectively ✓ Adapt to any issue that may arise. Exception Handling in Ruby In Ruby, error handling works like this; all exceptions and errors are extensions of the Exception class. While this may seem intuitive, exception handling in Ruby is a touch more nuanced than you might expect thanks to the designed hierarchy of Ruby exceptions. The begin-rescue Similar to PHP's try-catch handler, Ruby's exception handling begins with the begin-rescue block. In a nutshell, the begin-rescue is a code block in Ruby that can be used to deal with raised exceptions without interrupting the Ruby program execution. In other words, you can begin to execute a block of code, and rescue any exceptions that are raised. Rescuing Exceptions In Ruby by default, begin-rescue rescues every instance of the StandardError class. This includes no method errors, type errors, runtime errors, and every custom error that is intended to be rescued within a Ruby application (see Raising Exceptions in Ruby for more information). To rescue every StandardError, simply wrap the designated section of code in a begin-rescue block: begin # ... rescue => e # ... end In Ruby when a StandardError exception is raised within the begin block, an instance of it will be passed to the rescue block as the variable e (for more information about the structure of Ruby's Exception class, see Raising Exceptions in Ruby). Rescuing Specific Exceptions While rescuing every exception raised in your Ruby app is great for simplistic implementations—such as generalizing API error responses—best practice is to rescue for specific exceptions. To do this,... --- ### How to Resolve the Illegal Format Conversion Exception in Java > Java's IllegalFormatConversionException is an unchecked exception thrown when an incompatible type argument is passed to a format specifier. - Published: 2022-03-28 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-illegal-format-conversion-exception/ - Categories: Code Tutorials, Java - Tags: java The IllegalFormatConversionException is an unchecked exception in Java that occurs when the argument that corresponds to a format specifier is of an incompatible type. Since the IllegalFormatConversionException is thrown at runtime, it does not need to be declared in the throws clause of a method or constructor.   What Causes the Illegal Format Conversion Exception? The IllegalFormatConversionException is thrown when an incompatible type argument is passed to a format specifier. For example, the %d format specifier requires an integer to be passed to it, and if a String is passed instead, an IllegalFormatConversionException is thrown.   Examples of the IllegalFormat Conversion Exception Here is an example of an IllegalFormatConversionException thrown when a String is passed to a format specifier that expects an integer: public class IllegalFormatConversionExceptionExample { public static void main(String args) { System. out. printf("%d", "Hello World"); } } Since the %d format specifier expects an integer and the actual value passed to it was of type String, running the above code throws the IllegalFormatConversionException: Exception in thread "main" java. util. IllegalFormatConversionException: d ! = java. lang. String at java. base/java. util. Formatter$FormatSpecifier. failConversion(Formatter. java:4426) at java. base/java. util. Formatter$FormatSpecifier. printInteger(Formatter. java:2938) at java. base/java. util. Formatter$FormatSpecifier. print(Formatter. java:2892) at java. base/java. util. Formatter. format(Formatter. java:2673) at java. base/java. io. PrintStream. format(PrintStream. java:1209) at java. base/java. io. PrintStream. printf(PrintStream. java:1105) at IllegalFormatConversionExceptionExample. main(IllegalFormatConversionExceptionExample. java:3)   How to Fix IllegalFormatConversionException To avoid the IllegalFormatConversionException, it should be ensured that the argument passed to a format specifier is of the correct... --- ### How to Debug Ruby Errors > Most Ruby error reports are vague, and identifying the underlying causes can be difficult. Learn the common steps towards pinpointing and resolving Ruby errors that crop up in production. - Published: 2019-02-12 - Modified: 2021-06-11 - URL: https://rollbar.com/guides/ruby/how-to-debug-ruby-errors/ - Guide Languages: Ruby Most Ruby error reports are vague, and identifying the underlying causes can be difficult. Learn the common steps towards pinpointing and resolving Ruby errors that crop up in production. How to Debug Ruby Errors Debugging Ruby errors in a production environment can be one of the single most frustrating experiences as a developer. More often than not, the error reports are vague, and identifying the underlying causes can be difficult at best. That said, there are a few common steps that can be followed toward identifying and resolving errors that crop up in production. Debugging Ruby Errors Step 1: Increase the log level More information is always better. Using the methods described in Where Are Ruby Errors Logged? , the first step toward diagnosing any issue is to increase the log level. This allows you to see everything that is happening before and after a problem occurs. There is a good chance that the problems you are experiencing have warnings or messages associated with them that don't necessarily make it into the log files by default. Step 2: Retain logs using an error monitoring solution Once you've increased the log level, the next step is to start retaining logs. Identifying the request parameters, user, browser, and any other information surrounding a given error can be incredibly valuable. While accomplishing this may seem difficult from within the context of a server, it can be easily done through the use of Rollbar, and allows you to start establishing a timeline of events without worrying about the log files being rolled over. Step 3: Attempt to replicate circumstances Once you've determined the log lines that relate to the problem at hand, the... --- ### Reduce Debugging Time With Rollbar > Developers want to work on new features. They want to fix bugs that occur, but they don’t want to spend hours searching for the problem. - Published: 2022-03-10 - Modified: 2022-03-10 - URL: https://rollbar.com/blog/reduce-debugging-time-with-rollbar/ - Categories: company - Tags: continuous-delivery Development time is precious. Developers are highly-skilled and highly-paid, and so naturally you want to make sure that they are as productive as possible. Many organizations are starting to hire Developer Experience Engineers to make sure that their developers are using the best tools and processes possible. To make developers more productive, the first step is to figure out exactly what developers are actually doing. Then, we need to figure out what we want them to do. Examining Developer Time Developers' time can broadly be divided into two areas: Time coding and time not coding. It seems pretty obvious that you want to maximize the amount of time that your developers are coding and reduce the time they are not. Coding time can actually be broken down further into feature development and maintenance. Feature development – the process of producing new features and value for the customer – is the most desirable thing that a developer can do. Maintenance work – bug fixing – is a bit of a mixed bag. You want your developers to fix bugs, sure, but you don’t want them to have to do it. In other words, bugs are bad and a drag on the team, preventing their coding time from being spent on new feature work. Non-coding Time And then there is non-coding time, and it, too, is a mixed bag. Some of it is productive time – code reviews, mentoring, training, creating issues and bug reports, etc. I like to call this meta-coding... --- ### Where are PHP Errors Logged? > This simple guide explains where PHP logs are located, how to configure logging, and why error monitoring tools like Rollbar make debugging even faster. - Published: 2019-02-12 - Modified: 2021-06-11 - URL: https://rollbar.com/guides/php/where-are-php-errors-logged/ - Guide Languages: PHP This simple guide explains where PHP logs are located, how to configure logging, and why error monitoring tools like Rollbar make debugging even faster. Where are PHP Errors Logged? So when we encounter errors in our code, where exactly can we find them? At a high level, there are really only three places where PHP errors can be found: inline with program execution, in the system log, or in error monitoring tools like Rollbar. Inline errors By default, whenever an error or exception is thrown, PHP sends the error message directly to the user via STDOUT. In a command-line environment, this means that errors are rendered in the terminal. In a web environment, errors and exceptions get displayed directly in the browser. While this behavior is useful for debugging problems in a development environment, it should be disabled in a production environment for security reasons. To do this, open up the PHP configuration file for the environment you are working in—typically found in a path that looks like /etc/php/:environment:/php. ini—and change the display_errors directive to Off. ; This directive controls whether or not and where PHP will output errors, ; notices and warnings too. Error output is very useful during development, but ; it could be very dangerous in production environments. Depending on the code ; which is triggering the error, sensitive information could potentially leak ; out of your application such as database usernames and passwords or worse. ; For production environments, we recommend logging errors rather than ; sending them to STDOUT. ; Possible Values: ; Off = Do not display any errors ; stderr = Display errors to STDERR (affects only... --- ### How to Throw Exceptions in PHP > It's not enough to throw exceptions in PHP. You need to throw exceptions effectively. Here's how to create a human-readable—and diagnosable—exception object. - Published: 2019-02-12 - Modified: 2022-10-17 - URL: https://rollbar.com/guides/php/how-to-throw-exceptions-in-php/ - Guide Languages: PHP It's not enough to throw exceptions in PHP. You need to throw exceptions effectively. Here's how to create a human-readable—and diagnosable—exception object. Throwing Exceptions in PHP Throwing a generic PHP exception is almost as simple as it sounds. All it takes is to instantiate an exception object—with the first parameter of the Exception constructor being the error message—and then, "throw" it. throw new Exception('Exception message') The most important thing to take note of is the message. Defined in the constructor, and accessed via the getMessage method, the message is the human-readable error that can often be related to the end user. The Exception class To more effectively utilize exceptions within your application, it is important to understand how to create and throw your own PHP exception. But before we get into throwing custom PHP exceptions, let's first take a look at what an exception is under the hood, and how to define your own, starting with the global Exception class that all PHP exceptions stem from: class Exception { protected $message = 'Unknown exception'; // exception message private $string; // __toString cache protected $code = 0; // user defined exception code protected $file; // source filename of exception protected $line; // source line of exception private $trace; // backtrace private $previous; // previous exception if nested exception public function __construct($message = null, $code = 0, Exception $previous = null); final private function __clone; // Inhibits cloning of exceptions. final public function getMessage; // message of exception final public function getCode; // code of exception final public function getFile; // source filename final public function getLine; // source line final public function getTrace;... --- ### Rollbar Certified for SOC 2 Type II and SOC 3 - Published: 2022-03-08 - Modified: 2022-03-08 - URL: https://rollbar.com/blog/rollbar-certified-for-soc-2-type-ii-and-soc-3/ - Categories: company, security We are pleased to announce that an independent service auditor has certified that Rollbar meets SOC 2 Type II criteria and also SOC3 criteria. This extends our security, data privacy, and compliance certifications. Last year Rollbar was certified to meet SOC Type I to go with our existing ISO 27001 certification. The ISO 27001 standard promotes continuous improvement of security processes and demonstrates our commitment to customer support, customer excellence, and data privacy and security. By moving on to achieve the SOC 2 Type II certification we demonstrate our commitment to these standards. SOC 3 reports are based on the Auditing Standards Board of the American Institute of Certified Public Accountants' (AICPA) existing Trust Services Criteria (TSC). The purpose of the report is to provide a publicly facing version of the SOC 2 attestation report for customers who need assurances about service organization's controls relevant to security, availability, processing integrity, confidentiality, and privacy, but do not require a full SOC 2 report. SOC 3 reports can be freely distributed because they are general use reports. You can read Rollbar’s SOC 3 report here. A SOC 3 report contains a written assertion by service organization management regarding control effectiveness to achieve commitments based on the applicable trust services criteria, as well as service auditor's opinion on whether management's assertion is stated fairly. To achieve these standards we have to prove our processes, elevate the level of our security and compliance controls and demonstrate that our access control, encryption, security testing, penetration... --- ### How to Handle Exceptions in PHP > The simple guide to exception handling in PHP. ✓ Harden your app against unexpected errors ✓ Respond more effectively ✓ Adapt to any issue that may arise. - Published: 2019-02-12 - Modified: 2021-09-20 - URL: https://rollbar.com/guides/php/how-to-handle-exceptions-in-php/ - Guide Languages: PHP The simple guide to exception handling in PHP. ✓ Harden your app against unexpected errors ✓ Respond more effectively ✓ Adapt to any issue that may arise. Exception Handling in PHP The try-catch The primary method of handling exceptions in PHP is the try-catch. In a nutshell, the try-catch is a code block that can be used to deal with thrown exceptions without interrupting program execution. In other words, you can "try" to execute a block of code, and "catch" any PHP exceptions that are thrown. PHP nested try-catch Try-catch blocks in PHP can be nested up to any desired levels and are handled in reverse order of appearance i. e. innermost exceptions are handled first. Nested blocks can be useful in case a block of code causes an exception, which can be handled within that block and program execution can continue in the outer block. They can also be useful in case the handling of an exception causes another exception. Here is an example of a nested try-catch block: try{ try{ if(file_exists("myfile. json")){ //upload file } else { throw new Exception( 'File not found'); } } catch (Exception $e){ throw new Exception( 'Unable to upload file',0,$e); } //continue outer try block code } catch (Exception $e){ echo $e->getMessage . ""; while($e = $e->getPrevious) { echo 'Previous exception: '. $e->getMessage . ""; } } In this example, a file is uploaded and it is checked whether the file exists or not prior to the upload operation. If it does not exist, an exception is thrown. This code that checks whether the file exists or not is placed within a try-catch block, which is nested within another try-catch... --- ### Slack Oauth 2.0 system is available for your projects > NoSuchFieldError in Java is thrown when an application accesses or modifies a field of an object/class that no longer contains that field. - Published: 2022-03-03 - Modified: 2022-03-03 - URL: https://rollbar.com/blog/slack-oauth-2-0-system-is-available-for-your-projects/ - Categories: product - Tags: integrations, Slack Slack Oauth 2. 0 system is available for your projects Rollbar is adopting the updated Oauth 2. 0 flow created by Slack. Slack has revised their access tokens and now allows the Rollbar Slack bot to have its own credentials. This replaces the use of member’s credentials. What does this mean? You don’t have to switchover, but you should consider the benefits of migrating. To complete the migration, you must add Rollbar Slack bot to any channels that you'd like to post alerts. What are the benefits of Bot Tokens on Slack? Slack integration will use a single bot token, so there will not be any confusion regarding switching user access tokens. You will have the chance to manually enter the appropriate Slack channel via a text input box, which will eliminate the long load times of a drop down for channel selection when configuring Slack notifications. When team members leave your Slack workspace, their “owned” tokens do not need to be swapped out as they would today. How to migrate to Slack Oauth 2. 0? We recommend you complete the migration process to ensure continued support of notifications. To start the migration process for the new Slack Oauth 2. 0 version, you will need to go to your Account Settings and follow the steps in Rollbar. Go to Settings, and select Slack, under Notifications. On the Manage Account Slack Settings page, begin the migration process by clicking on the Add to Slack button. On the upper left corner, select... --- ### How to Handle Exceptions in .NET > The simple guide to exception handling in .NET ✓ Harden your app against unexpected errors ✓ Respond more effectively ✓ Adapt to any issue that may arise. - Published: 2019-02-12 - Modified: 2021-09-20 - URL: https://rollbar.com/guides/dotnet/how-to-handle-exceptions-in-net/ - Guide Languages: .Net The simple guide to exception handling in .NET ✓ Harden your app against unexpected errors ✓ Respond more effectively ✓ Adapt to any issue that may arise. Where are . NET Errors Logged? Although every developer aims for bug-free code, it’s nearly impossible to deploy an application without a few unwanted bugs. You can test an application thoroughly, but still have logic errors. These errors can vary from critical issues that inhibit proper use of the application to minor annoyances. Regardless, you must be able to fix any bug in the application before it becomes a huge nuisance for your users. You detect bugs and find the . NET object that’s causing it by using logging techniques. . NET can log errors to the Windows Event Viewer, a database, or a file using libraries already included in the . NET framework. Each solution has its pros and cons. You can use your own custom libraries or simplify the process using third-party libraries installed from NuGet. . NET is a backend coding platform as opposed to client-side languages such as JavaScript. This means that your logging solution for . NET must be able to integrate with your application and your server. If the application is public, the logging solution must also be secure; otherwise, attackers can gain valuable insight on critical components for malicious purposes. Types of logs Logging provides root cause analysis for more than just . NET applications. The operating system, system applications such as IIS, and security and network appliances log events to some location determined by the administrator configurations. Custom applications may have no logging components at all, but the operating system or host... --- ### How to Resolve the NoSuchFieldError in Java > NoSuchFieldError in Java is thrown when an application accesses or modifies a field of an object/class that no longer contains that field. - Published: 2022-02-25 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-nosuchfielderror/ - Categories: Code Tutorials, Java - Tags: java The NoSuchFieldError is an error in Java that occurs when a specified field does not exist. It is thrown when an application attempts to access or modify a field of an object or a static field of a class but the object or class no longer contains that field. The NoSuchFieldError only occurs during runtime if the definition of a class has changed incompatibly. Since it is thrown at runtime, it does not need to be declared in the throws clause of a method or constructor.   What Causes NoSuchFieldError The NoSuchFieldError error occurs if an application tries to access or modify a specified field of an object, and the object no longer has that field. This can occur if the definition of a class changes incompatibly after compilation. In case code is only partially recompiled, old code can exist that references a field which no longer exists in the recompiled classes, causing the NoSuchFieldError.   NoSuchFieldError Example Here is an example of a NoSuchFieldError thrown when a field that does not exist is referenced. Here’s a class MyClass that contains a static variable msg: public class MyClass { public static String msg = "Hello World"; } Here’s a class NoSuchFieldErrorExample that refers to the static variable str from MyClass and prints out its value: public class NoSuchFieldErrorExample { public static void main(String args) { System. out. println(MyClass. msg); } } Running the above code produces the correct output as expected: Hello World Now, if the variable msg is removed... --- ### Where are JavaScript Errors Logged? > This simple guide explains where JavaScript logs are located, how to configure logging, and why error monitoring tools like Rollbar make debugging even faster. - Published: 2019-02-12 - Modified: 2021-06-11 - URL: https://rollbar.com/guides/javascript/where-are-javascript-errors-logged/ - Guide Languages: JavaScript This simple guide explains where JavaScript logs are located, how to configure logging, and why error monitoring tools like Rollbar make debugging even faster. Where are JavaScript Errors Logged? Unlike other web languages, JavaScript was originally a client-side language. As a result, error handling is designed with the client side in mind, rather than the server side. Rather than dealing with log files, rotation, permissions, and all the other fun things that come with server-side languages, JavaScript errors are dealt with inline. While the client-side-only perception is slowly giving way to server-side Node. js due to the increased security and performance benefits of server-side rendering, many of the logging conventions of Node. js are still influenced by its browser-based siblings. Introduction to The Console In both client-side JavaScript and Node. js, log data is handled by default via a global console instance. While client-side JavaScript writes console data to the individual browser's developer console, Node. js console data is written to stdout and stderr. What this means, at least in terms of client-side JavaScript, is that log data is readily available to both the end user and the developer. While this can present some privacy issues, it can make debugging significantly easier in any environment. For those concerned about privacy, logging can also be disabled in production through logging frameworks or minification tools. Log Levels When it comes to logging, console. log is one of the more common debug methods used in JavaScript development. That said, the Console object offers a handful of other useful log levels, which can be used to provide more relevant information with minimal changes. log The purpose of console.... --- ### How to Throw Exceptions in JavaScript > It's not enough to throw exceptions in JavaScript. You need to throw exceptions effectively. Here's how to create a human-readable—and diagnosable—exception object. - Published: 2019-02-12 - Modified: 2021-06-11 - URL: https://rollbar.com/guides/javascript/how-to-throw-exceptions-in-javascript/ - Guide Languages: JavaScript It's not enough to throw exceptions in JavaScript. You need to throw exceptions effectively. Here's how to create a human-readable—and diagnosable—exception object. Throwing Exceptions in JavaScript Errors are thrown by the engine, and exceptions are thrown by the developer. But what exactly does that mean? In JavaScript, all exceptions are simply objects. While the majority of exceptions are implementations of the global Error class, any old object can be thrown. With this in mind, there are two ways to throw an exception: directly via an Error object, and through a custom object. Generic exceptions While the built-in Error class is fairly well defined—including such things as the filename, line number, and stack trace to name a few—when it comes down to it, the most important thing to take note of is the message. The first—and often only—parameter to be passed during Error instantiation, the message is a human-readable error that can often be related directly to the end user. Throwing a generic exception is almost as simple as it sounds. All it takes is to instantiate an exception object—with the first parameter of the Error constructor being the error message—and then... "throw" it. throw new Error('Exception message'); error. code vs. error. message It is important to note here that, while the error message is the human readable error data, Node. js also provides an error code that identifies the kind of error that is being thrown. This value is useful as it allows you to programmatically adapt to errors that may be thrown, regardless of the message contained within the error. While error codes are generally used for system errors, when creating... --- ### How to Fix Unsupported major.minor Version 52.0 Error in Java > Java's unsupported major.minor version error happens when a class is compiled using a higher version JDK but executed on a lower version JRE. - Published: 2022-02-22 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-unsupported-major-minor-version-52-0/ - Categories: Code Tutorials, Java - Tags: java The unsupported major. minor version error is thrown in Java when a class is compiled using a higher version of the Java Development Kit (JDK) but executed on a lower version of the Java Runtime Environment (JRE). The exact cause is printed on the version e. g. in the case of major. minor version 52. 0, the class is compiled using JDK 8 since major version 52 corresponds to Java SE 8. This error can usually be fixed by running the application on the same (or higher) JRE version as the JDK.   What Causes Unsupported major. minor Version Error The unsupported major. minor version error occurs due to a Java version mismatch. When a Java project is compiled on a higher version of Java (e. g. JDK 1. 8) but executed on a lower version (e. g. JRE 1. 7), this error is thrown. Java is backwards compatible, which means a Java class file or binary (JAR file) compiled on a lower version of Java can be executed on a higher version. However, the opposite of this is untrue, i. e. a class compiled on a higher version of Java cannot be executed on a lower version. This is because the higher version usually contains features that are not supported by the lower version on which the application executes. When this happens, the unsupported major. minor version error occurs.   Unsupported major. minor Version Error Example Here is an example of an unsupported major. minor version error thrown when... --- ### How to Handle Exceptions in JavaScript > A simple guide to exception handling in JavaScript. ✓ Harden your app against unexpected errors ✓ Respond more effectively ✓ Adapt to any issue that may arise. - Published: 2019-02-12 - Modified: 2023-09-19 - URL: https://rollbar.com/guides/javascript/how-to-handle-exceptions-in-javascript/ - Guide Languages: JavaScript The simple guide to exception handling in JavaScript. ✓ Harden your app against unexpected errors ✓ Respond more effectively ✓ Adapt to any issue that may arise. Exception Handling in JavaScript The try-catch As with many programming languages, the primary method of dealing with exceptions in JavaScript is the try-catch. In a nutshell, the try-catch is a code block that can be used to deal with thrown exceptions without interrupting program execution. In other words, you can "try" to execute a block of code, and "catch" any exceptions that are thrown. Catching all exceptions At its simplest, catching exceptions in JavaScript requires simply wrapping an expression in a try-catch statement. Without any additional configuration, this method will catch any and all exceptions that get thrown. try { // ... } catch (e) { // ... } While this is relatively simplistic in terms of error handling, it is important to note that the exception that is caught is always an implementation of the JavaScript Error object, which brings with it some useful properties such as a human-readable description of the error. This allows you to log these exceptions for debugging. try { // ... } catch (e) { console. log(e); } Catching specific exceptions In most instances, however, catching every exception thrown is considered bad practice. It is far more manageable to specifically catch and react to exceptions that you expect to encounter, rather than implementing a catchall. To accomplish this, simply check the exception instance type before reacting to it. try { // ... } catch (e) { if ( e instanceof CustomExceptionError ) { // ... } } While JavaScript does offer the ability to... --- ### How to Resolve the SecurityException in Java > The SecurityException in Java is a runtime exception thrown by the security manager to indicate a security violation. - Published: 2022-02-14 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-securityexception/ - Categories: Code Tutorials, Java - Tags: java The SecurityException is a runtime exception in Java that is thrown by the security manager to indicate a security violation. The SecurityException is an unchecked exception and does not need to be declared in the throws clause of a method or constructor.   What Causes SecurityException The SecurityException indicates that a security violation occurred during the execution of an application. Therefore, execution cannot be further continued and has to be terminated. An example scenario of a SecurityException is using a package name for a class in code that is already defined in a signed JAR on the classpath.   SecurityException Example Here is an example of a SecurityException thrown when using a package name that overlaps with the package name of a signed JAR file present in the classpath: package com. rollbar. test; public class SecurityExceptionExample { public static void main(String args) { System. out. println("Hello World"); MyObject obj = new MyObject; } } In this example, the package com. rollbar. test is used for the SecurityExceptionExample class. However, this package name is already present in a signed JAR (which contains the MyObject class) in the application classpath. This causes the JVM to throw a SecurityException when the above code is executed: Hello World Exception in thread "main" java. lang. SecurityException: class "com. rollbar. test. MyObject"'s signer information does not match signer information of other classes in the same package at java. base/java. lang. ClassLoader. checkCerts(ClassLoader. java:1151) at java. base/java. lang. ClassLoader. preDefineClass(ClassLoader. java:906) at java. base/java. lang. ClassLoader. defineClass(ClassLoader.... --- ### How to Debug JavaScript Errors > Identifying the underlying causes of most JavaScript errors can be difficult. Learn the common steps towards pinpointing and resolving JavaScript errors. - Published: 2019-02-12 - Modified: 2021-06-11 - URL: https://rollbar.com/guides/javascript/how-to-debug-javascript-errors/ - Guide Languages: JavaScript Most JavaScript error reports are vague, and identifying the underlying causes can be difficult. Learn the common steps towards pinpointing and resolving JavaScript errors that crop up in production. How to Debug JavaScript Errors Debugging JavaScript errors in a production environment can be a difficult experience. More often than not, the error reports are vague, and identifying the underlying causes can be difficult at best. That said, there are a few common steps that can be followed towards identifying and resolving errors that crop up in production. Gathering information Step 1: Attempt to replicate circumstances In software development, the first step towards debugging any issue is attempting to replicate the circumstances. With most programming languages, this is bolstered by reviewing logs leading up to an error, but with client-side JavaScript, this type of diagnosis requires significantly more foresight (more on that below). Before we can replicate any circumstances of an issue, and assuming we have access to any production logs, we first need to establish some testing guidelines. This involves doing things like mimicking the production database, the user accounts involved, and even the operating system. Everything is fair game here. Step 2: Test assumptions Once you've established the circumstances that you think might throw the exception or error you are hunting down, it's time to test them. Never test exceptions in production. Development and staging environments are designed to be breakable without any impact on the end users, so always always always try to break your code in a safe environment. Step 3: Increase logging More information is always better. Using the methods described in Where are JavaScript Errors Logged? , the first step towards diagnosing any issue... --- ### Where are Java Errors Logged? > This simple guide explains where Java logs are located, how to configure logging, and why error monitoring tools like Rollbar make debugging even faster. - Published: 2019-02-12 - Modified: 2021-06-11 - URL: https://rollbar.com/guides/java/where-are-java-errors-logged/ - Guide Languages: Java This simple guide explains where Java logs are located, how to configure logging, and why error monitoring tools like Rollbar make debugging even faster. Where are Java Errors Logged? Logging Java errors is an essential component in any application as it allows developers to track the root cause of errors and fix them easily. By default, Java log messages are stored only on the console, but they can be transferred to a longer term location as well. These messages let you see what’s happening in your application and troubleshoot problems. Console logs in Java At the most basic level, Java errors are logged on the console. Developers typically call System. out. println to print log messages on the console. Whenever the console is closed, these messages are lost as they cannot be stored in any permanent location. To overcome this problem, developers use Java logging frameworks which are responsible for storing data to any other location such as a file or a database. Java Logging frameworks There are several common frameworks for logging in Java and they let you customize where your logs are sent. Logback and Log4j are two popular Java logging frameworks that are simple to use. Logback was built as a replacement for its predecessor, Log4j. Logback offers a faster implementation than Log4j, provides more options for configuration, and gives more flexibility in archiving old log files. The newest is log4j 2 but it's still catching up in adoption. Let's focus on Logback since it offers many improvements and is very common. The Logback architecture consists of three main classes: logger, appender, and layout. The appender determines where the logs are... --- ### How to Throw Exceptions in Java > It's not enough to throw exceptions in Java. You need to throw exceptions effectively. Here's how to create a human-readable—and diagnosable—exception object. - Published: 2019-02-12 - Modified: 2025-03-17 - URL: https://rollbar.com/guides/java/how-to-throw-exceptions-in-java/ - Guide Languages: Java It's not enough to throw exceptions in Java. You need to throw exceptions effectively. Here's how to create a human-readable—and diagnosable—exception object. Throwing Exceptions in Java It is important to understand how to throw exceptions in Java. This will allow you to create higher quality code where errors are checked at compile time instead of runtime, and create custom exceptions that make debugging and recovery easier. Install the Java SDK to identify and fix exceptions How to throw exceptions in Java Throwing an exception is as simple as using the "throw" statement. You then specify the Exception object you wish to throw. Every Exception includes a message which is a human-readable error description. It can often be related to problems with user input, server, backend, etc. Here is an example that shows how to throw an exception: throw new Exception("Exception message"); It’s limiting to use a generic exception because it makes it difficult for the calling code to catch it. It’s better to throw custom exceptions, which we will come back to in a bit. Using the Throws keyword Throws is a keyword used to indicate that this method could throw this type of exception. The caller has to handle the exception using a try-catch block or propagate the exception. We can throw either checked or unchecked exceptions. The throws keyword allows the compiler to help you write code that handles this type of error, but it does not prevent the abnormal termination of the program. With the help of the throws keyword, we can provide information to the caller of the method about the types of exceptions the method might throw.... --- ### Handling the ArithmeticException Runtime Exception in Java > The ArithmeticException in Java is thrown by the JVM when an arithmetic operation creates an exceptional condition. - Published: 2022-02-10 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-arithmeticexception/ - Categories: Code Tutorials, Java - Tags: exception monitoring, java Introduction Arithmetic is at the core of every program and every programming language in existence. From integer and floating-point arithmetic all the way down to bitwise and pointer arithmetic, these mathematical operations translate into machine instructions which execute with thundering speeds and manipulate the state of software applications used across all sorts of different domains. Most modern programming languages have a dedicated category of errors or exceptions for dealing with all the peculiar cases and problematic conditions that may arise while performing these arithmetic operations.   ArithmeticException & Why it is an Unchecked Exception In Java, any arithmetic operation which creates an exceptional condition makes the Java Virtual Machine throw the ArithmeticException exception . Generally speaking, anything that a scientific calculator isn’t able to process would throw this exception. At a lower level, certain rules and constraints are imposed by the programming language itself, so if any of these are broken, the ArithmeticException exception will emerge. ArithmeticException inherits from the RuntimeException class which means it is an unchecked, runtime exception . This is due to a language design decision made to reduce the exception handling clutter that would otherwise arise with the high frequency of arithmetic operations, but more importantly because throwing and propagating arithmetic exceptions wouldn’t make sense for the majority of cases, which in practice are the result of logical programming errors that need to be refactored, rather than exceptions that need to be handled. Consequently, Java doesn’t require ArithmeticException instances to be checked and will only let... --- ### How to Handle Exceptions in Java > The simple guide to exception handling in Java. ✓ Harden your app against unexpected errors ✓ Respond more effectively ✓ Adapt to any issue that may arise. - Published: 2019-02-12 - Modified: 2022-09-28 - URL: https://rollbar.com/guides/java/how-to-handle-exceptions-in-java/ - Guide Languages: Java The simple guide to exception handling in Java. ✓ Harden your app against unexpected errors ✓ Respond more effectively ✓ Adapt to any issue that may arise. Exception Handling in Java The classic definition of an exception is an event that occurs during the execution of a program and that disrupts the normal flow of instructions. Java exceptions are specialized events that indicate something bad has happened in the application, and the application either needs to recover or exit. Why handle Java exceptions? Java exception handling is important because it helps maintain the normal, desired flow of the program even when unexpected events occur. If Java exceptions are not handled, programs may crash or requests may fail. This can be very frustrating for customers and if it happens repeatedly, you could lose those customers. The worst situation is if your application crashes while the user is doing any important work, especially if their data is lost. To make the user interface robust, it is important to handle Java exceptions to prevent the application from unexpectedly crashing and losing data. There can be many causes for a sudden crash of the system, such as incorrect or unexpected data input. For example, if we try to add two users with duplicate IDs to the database, we should throw an exception since the action would affect database integrity. Developers can predict many of the Java exceptions that a piece of code is capable of throwing. The best course of action is to explicitly handle those exceptions to recover from them gracefully. As we will see ahead, programming languages provide ways to handle exceptions starting from specific ones and moving toward... --- ### How to Debug Java Errors > Most Java error reports are vague, and identifying the underlying causes can be difficult. Learn the common steps towards pinpointing and resolving Java errors that crop up in production. - Published: 2019-02-12 - Modified: 2022-11-28 - URL: https://rollbar.com/guides/java/how-to-debug-java-errors/ - Guide Languages: Java Most Java error reports are vague, and identifying the underlying causes can be difficult. Learn the common steps towards pinpointing and resolving Java errors that crop up in production. How to Debug Java Errors Debugging Java code for errors is a must-have skill for any developer. If an application crashes in a production environment, it can badly impact your business. You can prevent crashes and errors by spending time testing and debugging your code before deploying it. There are several ways to debug Java code. When developing, you can use the tools available in your IDE or debugger. Once the application is deployed to production, you can capture the logs or use an error monitoring solution. Let’s explore each of these ways in more detail. Debugging with Eclipse IDE There are several ways to debug your code in Eclipse. Below are a few popular ways: A conditional breakpoint: For debugging a Java code in Eclipse IDE, a breakpoint is a good approach. Applying breakpoints lets a debugger temporarily suspend the execution of your program at a certain point in the code. This allows you to examine the state of the application, the values of local variables, the call stack, and to step through the code line-by-line. This information gives you more clues to why the problem occurs. To set a breakpoint, just toggle it by clicking on the left-hand side of the screen. Exception breakpoints: Runtime exceptions like NullPointerException and ArrayIndexOutofBoundException are the errors encountered most often. Figuring out the root cause of these errors can be difficult. Eclipse IDE offers exception breakpoints in which the execution of the program is stopped whenever the specified exception occurs. Watch point:... --- ### Where are .NET Errors Logged? > This simple guide explains where .NET logs are located, how to configure logging, and why error monitoring tools like Rollbar make debugging even faster. - Published: 2019-02-12 - Modified: 2022-11-30 - URL: https://rollbar.com/guides/dotnet/where-are-net-errors-logged/ - Guide Languages: .Net This simple guide explains where .NET logs are located, how to configure logging, and why error monitoring tools like Rollbar make debugging even faster. Where are . NET Errors Logged? Although every developer aims for bug-free code, it’s nearly impossible to deploy an application without a few unwanted bugs. You can test an application thoroughly, but still have logic errors. These errors can vary from critical issues that inhibit proper use of the application to minor annoyances. Regardless, you must be able to fix any bug in the application before it becomes a huge nuisance for your users. You detect bugs and find the . NET object that’s causing it by using logging techniques. . NET can log errors to the Windows Event Viewer, a database, or a file using libraries already included in the . NET framework. Each solution has its pros and cons. You can use your own custom libraries or simplify the process using third-party libraries installed from NuGet. . NET is a backend coding platform as opposed to client-side languages such as JavaScript. This means that your logging solution for . NET must be able to integrate with your application and your server. If the application is public, the logging solution must also be secure; otherwise, attackers can gain valuable insight on critical components for malicious purposes. Types of logs Logging provides root cause analysis for more than just . NET applications. The operating system, system applications such as IIS, and security and network appliances log events to some location determined by the administrator configurations. Custom applications may have no logging components at all, but the operating system or host... --- ### Handling the ClassCastException Runtime Exception in Java > The ClassCastException in Java happens when the JVM tries to cast an object to a class (or in some instances, an interface) and fails. - Published: 2022-02-10 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-classcastexception/ - Categories: Code Tutorials, Java - Tags: exception monitoring, java Introduction to Runtime Exceptions Runtime exceptions are exceptions which can not be checked at compile time. In Java, there are a myriad of classes derived from the RuntimeException class , all of which represent unchecked exceptions that need to be carefully considered and managed. Despite being less serious and critical than the unchecked runtime errors , these exceptions can still be very problematic and cause unexpected issues at runtime, especially if necessary precautions aren’t taken and relevant exception handling mechanisms aren’t put in place.   What is ClassCastException and When does it Happen? As its name implies, ClassCastException is an exception that happens when the JVM tries to cast an object to a class (or in some instances, an interface) and fails. This relates to explicit type casting and the reason the cast fails can be traced to an attempt at downcasting an object to a class of which it is not an instance, or to an interface which it does not implement. ClassCastException is a subclass of the RuntimeException class which means it is an unchecked, runtime exception . This exception can not be checked at compile-time because the compiler has no way of knowing whether the object is actually an instance of the target subclass, or if it is an instance of a subclass that implements the target interface. Consequently, if either of these scenarios is encountered at runtime, Java will throw the ClassCastException exception. Parent parent = new Child; /*... */ Child c = (Child) parent; //... --- ### How to Debug .NET Errors > Most .NET error reports are vague, and identifying the underlying causes can be difficult. Learn the common steps towards pinpointing and resolving .NET errors that crop up in production. - Published: 2019-02-12 - Modified: 2022-12-03 - URL: https://rollbar.com/guides/dotnet/how-to-debug-net-errors/ - Guide Languages: .Net Most .NET error reports are vague, and identifying the underlying causes can be difficult. Learn the common steps towards pinpointing and resolving .NET errors that crop up in production. How to Debug . NET Errors There are many tools available to help developers debug errors. For local development, there is a great debugger built into Visual Studio. In production, you can look at log files and error monitoring solutions like Rollbar give your deeper insight into local variables and parameters. Debugging in Visual Studio The most popular IDE for . NET is Visual Studio and it offers great debugging tools. Visual Studio is considered one of the best development platforms on the market, and it’s easy to use once you understand how it works. Developers can put breakpoints in their code to step through each statement and watch the code execution flow. By watching and stepping through statements, you can replicate errors and find bugs. When you click "Run" from the Visual Studio Debug menu, the code is compiled and executes. The binaries are stored in the debug folder in the solution directory, and code executes until it reaches the break point (the red dot in the image above). When the debugger reaches the break point, execution stops and you can view the variable’s value by hovering your mouse over it. As you step through the program (using menu options or F10 and F11 keyboard shortcuts), you can use the Watch section at the bottom of Visual Studio to watch specific variables. Drag and drop variables to this section to watch as they change. This can help you find bugs in your program before you deploy it. It also... --- ### How to Throw Exceptions in .NET > It's not enough to throw exceptions in .NET. You need to throw exceptions effectively. Here's how to create a human-readable—and diagnosable—exception object. - Published: 2019-02-12 - Modified: 2021-09-20 - URL: https://rollbar.com/guides/dotnet/how-to-throw-exceptions-in-net/ - Guide Languages: .Net It's not enough to throw exceptions in .NET. You need to throw exceptions effectively. Here's how to create a human-readable—and diagnosable—exception object. Throwing Exceptions in . NET Types of exceptions and errors Exceptions happen on logic errors when an operation is invalid or impossible, so the normal flow of execution is aborted. If the exception is not handled, it will crash the application. For example, a QA person may be able to find bad input or a combination of bad input and logic flaws that causes an exception. Any unhandled exception is considered a bug, but even handled events can affect user experience if they are done incorrectly. Regardless of the type of bug, it’s a developer’s goal to handle any of them gracefully so the user is able to continue using the application without losing data or abruptly crashing the program. Developers want to avoid uncaught exceptions the most. These errors crash an application and interrupt user workflow. Because they’re unhandled, a user loses data if any is unsaved; these errors can even cause corruption with saved data. For instance, if the database doesn’t handle errors in workflow, orphaned records could occur and users are forced to contact customer support over issues that can’t be remedied on the front end. Exceptions vs errors You should know when to throw an exception versus an error. Throwing an exception means that you raise an event that interrupts the normal program execution. However, some workflows don’t need an exception thrown. Errors could be coded as regular function return values. For instance, a user entering the wrong URL in a browser is an error, not... --- ## KB Posts ### How to Handle String Index Out Of Bounds Exception in Java > The StringOutOfBoundsException in Java that occurs when accessing a string at an index which is negative/greater than the string length. - Published: 2022-02-10 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-stringoutofboundsexception/ - Categories: Code Tutorials, Java - Tags: java The StringIndexOutOfBoundsException is an unchecked exception in Java that occurs when an attempt is made to access the character of a string at an index which is either negative or greater than the length of the string. For some methods of the String class, such as the charAt method, this exception is also thrown when the index is equal to the size of the string. Since the StringIndexOutOfBoundsException is an unchecked exception, it does not need to be declared in the throws clause of a method or constructor. It can be handled in code using a try-catch block.   What Causes StringIndexOutOfBoundsException A Java string is a collection of characters which has a range of . When an attempt is made to access the characters with limits that fall outside the range of the string, the StringIndexOutOfBoundsException is thrown. Therefore, this exception occurs when the index of a character does not exist in the string. Some methods that throw a StringIndexOutOfBoundsException with invalid specified arguments are: String. charAt(int index) - Returns the character at the specified index. The index can have a range of . If the specified index does not belong to this range, a StringIndexOutOfBoundsException occurs. CharSequence. subSequence(int beginIndex, int endIndex) - Returns a new character sequence based on specified arguments. The StringIndexOutOfBoundsException is thrown if any index is negative, the endIndex is greater than the length of the string or the beginIndex is greater than the endIndex. String. substring(int beginIndex) - Returns a substring beginning with the... --- ### How to Handle the NumberFormat Exception in Java > The NumberFormatException in Java is thrown when it is not possible to convert a string to a numeric type (e.g. int, float). - Published: 2022-02-10 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-numberformatexception/ - Categories: Code Tutorials, Java - Tags: java The NumberFormatException is an unchecked exception in Java that occurs when an attempt is made to convert a string with an incorrect format to a numeric value. Therefore, this exception is thrown when it is not possible to convert a string to a numeric type (e. g. int, float). For example, this exception occurs if a string is attempted to be parsed to an integer but the string contains a boolean value. Since the NumberFormatException is an unchecked exception, it does not need to be declared in the throws clause of a method or constructor. It can be handled in code using a try-catch block.   What Causes NumberFormatException There can be various cases related to improper string format for conversion to numeric values. Some of them are: Null input string Integer. parseInt(null); Empty input string Integer. parseInt(""); Input string with leading/trailing whitespaces Integer myInt = new Integer(" 123 "); Input string with inappropriate symbols Float. parseFloat("1,234"); Input string with non-numeric data Integer. parseInt("Twenty Two"); Alphanumeric input string Integer. parseInt("Twenty 2"); Input string exceeding the range of the target data type Integer. parseInt("12345678901"); Mismatch of data type between input string and the target data type Integer. parseInt("12. 34");   NumberFormatException Example Here is an example of a NumberFormatException thrown when attempting to convert an alphanumeric string to an integer: public class NumberFormatExceptionExample { public static void main(String args) { int a = Integer. parseInt("1a"); System. out. println(a); } } In this example, a string containing both numbers and characters is... --- ### Error Grouping Best Practices - Published: 2022-02-08 - Modified: 2022-07-20 - URL: https://rollbar.com/knowledge-base/error-grouping-best-practices/ - KB Tags: Best Practices, Core features - KB Categories: Core Features and Best Practices Why error grouping is important Without grouping, error monitoring and error logs churn out a massive list of unsorted errors that must each be separately triaged, identified, and dealt with. Since applications are being used by thousands or even millions of users simultaneously, development teams spend vast amounts of time in triaging and fixing errors. Grouping errors is increasingly important. Below you can find a checklist that will assist you in reviewing your project settings. We also have some handy tips & tricks for you to make sure your grouping works properly, so you can concentrate on the important thing: fixing errors! Error grouping in Rollbar There are two types of item grouping in Rollbar: automation-grade grouping (default grouping) and custom fingerprinting. Automation-grade grouping is performed by Rollbar automatically, it neither requires nor accepts any input from the user and is typically used for the majority of item grouping. Automation-grade grouping combines Rollbar’s extensive error library with machine learning components to formulate optimal grouping solutions. This provides continuous improvement to the grouping engine to help improve your experience. Custom fingerprinting is more of a specialized feature that allows you to override the default grouping engine by declaring your own rules. Custom fingerprinting rules will always be evaluated first, and if no match is found then the automation-grade grouping engine will group the given occurrence. This feature allows users to create grouping rules for custom data and edge cases that the grouping engine may not properly detect. Grouping Issues Since new... --- ### How to Avoid the Concurrent Modification Exception in Java > The ConcurrentModificationException in Java occurs when an object is attempted to be modified concurrently without permission. - Published: 2022-02-10 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-concurrentmodificationexception/ - Categories: Code Tutorials, Java - Tags: java The ConcurrentModificationException is a very common exception in Java that occurs usually while working with Collections. The ConcurrentModificationException is used to fail-fast when something being iterated on is modified. This exception occurs when an object is attempted to be modified concurrently without permission. For example, if a Collection is modified while a thread is traversing it using an Iterator, a ConcurrentModificationException is thrown from the Iterator. next method. The ConcurrentModificationException can occur in both multithreaded and single-threaded environments.   What Causes ConcurrentModificationException The ConcurrentModificationException generally occurs when working with Java Collections. The Collection classes in Java are very fail-fast and if they are attempted to be modified while a thread is iterating over it, a ConcurrentModificationException is thrown. This exception can occur in both multithreaded and single-threaded Java environments. Here are examples of each: Multithreaded environment - If a thread is traversing over a Collection using an Iterator and another thread attempts to add or remove elements to the Collection. Single-threaded environment - When an element is attempted to be removed from an ArrayList using the remove method while it is being traversed using an enhanced for loop.   ConcurrentModificationException Example Here is an example of a ConcurrentModificationException thrown when attempting to remove an element from an ArrayList using the remove method while traversing it using an enhanced for loop: import java. util. ArrayList; import java. util. List; public class ConcurrentModificationExceptionExample { public static void main(String args) { List list = new ArrayList; list. add("a"); list. add("b"); list. add("c"); list.... --- ### How Rollbar helps ensure Low-Risk Releases - Published: 2021-06-23 - Modified: 2022-07-20 - URL: https://rollbar.com/knowledge-base/how-rollbar-helps-ensure-low-risk-releases/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Pain points You need to get ideas out quickly and with confidence, but releases are inherently risky. The first minutes or hours after release are when errors often first occur. New deploys are a high-risk environment for errors with a high potential impact on user experience. Companies are usually hesitant to deploy code to production, as they are concerned about: Downtime due to a new release in production, Bad user experience when a bug is accidentally released into production Reducing Mean Time To Acknowledge (MTTA) and remediating issues before users notice them is critical to your business. Here's how Rollbar helps make your releases low risk. Customizable notifications help you stay alert and reduce noise Sometimes folks overlook Rollbar’s powerful customizable notification engine. Notifications can be triggered in specific conditions using filters, and the message format can be customized using variables. This ensures that you are notifying people or teams only when it is important. Rollbar supports several messaging tools, including email, Slack, PagerDuty, and many more. Using Rollbar’s customizable notifications can help reduce MTTA (Mean Time To Acknowledge) by taking on the identification and tracking steps. This reduces the manual effort required to notify the right person or team responsible for the affected code. Thanks to Rollbar’s real-time reporting agent and grouping engine, the right people are notified more quickly and can begin to address the issue without spending valuable time gathering information. These notifications are delivered so quickly that they can also be used to trigger LaunchDarkly feature... --- ### Better together: Rollbar and Datadog > It just makes sense to use Rollbar for debugging and error monitoring and Datadog for observability. By taking a little time to integrate the two tools and have them work together you will reap additional benefits throughout your SDLC and also find synergies and features that you might not be making the most of right now. - Published: 2022-02-01 - Modified: 2022-07-19 - URL: https://rollbar.com/blog/better-together-rollbar-and-datadog/ - Categories: product - Tags: datadog, error-monitoring, observability, rollbar Modern software development is a high-pressure affair. Competition means getting to market faster with higher quality code and being able to release software quicker, monitor it and both find and fix problems quickly. By using modern tools and building a new approach and workflow to allow for monitoring, observability, and intelligent and actionable alerts it is possible to achieve faster release cycles with higher code quality. Google promotes the DORA metrics for helping organizations become elite at developing and releasing code. These metrics support approaches like Continuous Code Improvement (CCI) in achieving those high levels of code quality and performance. Tools like Rollbar and Datadog have a part to play in achieving good levels of these metrics, along with your code repository tools, your communication tools and your design approach. Like any other highly skilled endeavour, the craft of software engineering is helped by using the best tools for the job. Rollbar provides industry leading error monitoring in real-time with AI-powered error grouping. Datadog provides industry leading observability into modern applications. While both tools can do parts of what the other can do, they aren’t as good. You wouldn’t use a hacksaw to cut wood for framing and you wouldn’t use a circular saw for cutting metal pipe. It just makes sense to use Rollbar for debugging and error monitoring and Datadog for observability. By taking a little time to integrate the two tools and have them work together you will reap additional benefits throughout your SDLC and also find... --- ### Rollbar as a tool for DevOps Teams > DevOps monitoring & troubleshooting is a complex process. There are many different places where failures can occur, and it is up to you as an engineer to diagnose and address these problems. Fortunately, Rollbar can help DevOps teams by providing better alerting signal and a new starting point for your investigations. - Published: 2021-06-23 - Modified: 2022-07-20 - URL: https://rollbar.com/knowledge-base/rollbar-as-a-tool-for-devops-teams/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices DevOps monitoring & troubleshooting is a complex process. There are many different places where failures can occur, and it is up to you as an engineer to diagnose and address these problems. Fortunately, Rollbar can help DevOps teams by providing better alerting signal and a new starting point for your investigations. Rollbar is most commonly known for its ability to help developers improve their code quality by reporting errors in real-time and grouping those errors to effectively determine the code culprit of a given issue. However, thanks to features like Automation-Grade Grouping and customizable alerting, Rollbar can also be used to empower other roles such as SREs and DevOps engineers. These features give better visibility into DevOps processes such as the CI/CD pipeline and the operational health of the code. Use Rollbar as a Starting Point for all Error Investigations Thanks to Rollbar’s ML-powered grouping engine, alerts can notify your team of errors that have not been previously reported in your code. This intelligent analysis helps keep you informed of new problems as they surface — even if only a small number of users are affected — so that you can proactively be one step ahead. Rollbar items are tightly coupled to the code that causes these items. Features like Code Context can show you the exact version and line of code where an error originated, as well as the last person to change that code. Therefore, the use of Rollbar alerts as a first line of defense can be... --- ### Manage Rollbar automatically through the Rollbar Terraform Provider - Published: 2021-04-08 - Modified: 2022-07-20 - URL: https://rollbar.com/knowledge-base/manage-rollbar-automatically-through-the-rollbar-terraform-provider/ - KB Tags: Best Practices - KB Categories: Managing Your Rollbar Account Terraform Provider is available for Rollbar Accounts The Rollbar account administration is critical to get the most out of Rollbar and to maintain data visibility across teams. However, this process can be tedious for large and fast-growing accounts. Users are required to manually support provisioning and management of Rollbar Accounts (using the UI or the APIs). Fortunately, the Rollbar Terraform Provider offers an automated way! Terraform is a multi-cloud provisioning product used to create, manage, and update infrastructure resources. The Provider will automate the creation, modification, and removal of resources within your account such as projects, users, and teams. The Terraform Provider is a declarative framework - which means that you can describe the end state that you want to achieve without stating the exact steps and ‘how’ to get there. It leverages the Rollbar API to make the changes necessary to reach and maintain its desired state. This way you can reduce the time it takes to provision and manage your Rollbar account, while cutting back on manual efforts and human error. What does the integration do? A Terraform integration, known as a Provider, provides a way to provision and manage a Rollbar Account. Instead of using the Ingestion API, it will use parts of the API that create, edit, and destroy Rollbar Accounts, Project, Teams, Access Tokens, etc. With the Rollbar Terraform Provider you will be able to: Manage projects and users with ease Create, read, update or delete projects and users easily Provision new projects automatically as... --- ### Finding items by UUID - Published: 2021-03-30 - Modified: 2022-07-20 - URL: https://rollbar.com/knowledge-base/finding-items-by-uuid/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices UUID in general A universally unique identifier (UUID) is a 128-bit number used to identify information in computer systems. When generated according to the standard methods, UUIDs are, for practical purposes, unique. Unlike most other numbering schemes, their uniqueness does not depend on a central registration authority or coordination between the parties generating them. While the probability that a UUID will be duplicated is not zero, for most applications it is negligible. How Rollbar uses UUID In Rollbar, each item and the corresponding occurrences have UUIDs based on this pattern: aaaaaaaa-bbbb-cccc-dddd-eeeeffffeeee. Rollbar uses UUIDs to differentiate occurrences from each other within a project. You can use them to search and identify occurrences. Finding items by UUID First, let's see where you can find UUIDs. The two most common places are the UI and Rollbar API responses. Here you can see a UUID inside an occurrence: Here is the UUID in an instance creation API response: As every occurrence have its own UUID, regardless if those were created through an API or by a Rollbar SDK, your logs and error messages might show you some, or even your customers can send you one along with their issue. To easily navigate to the corresponding occurrence on our UI, we created an easy-to-use search link. In our last example, we will use the UUID from the first clip: fe3b5d6b-4f14-4594-b5c2-bd632c012a15 In Rollbar, we have two types of UUID search links. One for the Items: https://rollbar. com/item/uuid/? uuid=aaaaaaaa-bbbb-cccc-dddd-eeeeffffeeee And one for the Occurrences: https://rollbar. com/occurrence/uuid/?... --- ### Using Zapier to create Zendesk tickets - Published: 2021-03-19 - Modified: 2022-07-20 - URL: https://rollbar.com/knowledge-base/using-zapier-to-create-zendesk-tickets/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Why use webhooks? Webhooks are a powerful tool to receive information from Rollbar and use in any other workflows you have. These will trigger on conditions you set and contain information about the Rollbar item. More information on webhook configuration and information can be found here. What can we do with webhooks? Here’s one example utilizing Rollbar webhooks and Zapier. Zapier is a tool which can "catch" the webhook, process it, and forward it to other tools you’re using (called Zaps). The following will need a paid subscription to Zapier. For this demonstration, we will use both webhooks and our people tracking features. Suppose you have high priority clientele and need to ensure they have a smooth experience on your application. If they encounter an error you want to triage that immediately and inform your customer success team. As an example, let’s create a ticket in Zendesk for your team to follow up. Don't have time to read? Watch our short video on how you can setup Zapier to create Zendesk tickets: Create a Zendesk ticket automatically using Rollbar webhooks First, copy this Zap to your own Zapier account: https://zapier. com/shared/c2afe0eba9c4e8a565227315ac4831d2db905580 You’ll see a screen which contains the Zapier webhook URL. Copy this URL and we shall use it when creating the Rollbar webhook: We now are able to create the webhook from Rollbar. Go to your project settings, then select the + button in the Integrations column: Select Webhook and proceed to the next page: Paste the webhook URL... --- ### Rollbar Solutions: Enabling Support Teams - Published: 2021-03-18 - Modified: 2022-07-20 - URL: https://rollbar.com/knowledge-base/rollbar-solutions-enabling-support-teams/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Overview When your application surfaces bugs, it might put your Support team in a difficult position in understanding the impact of an error on users and customers and who might be the right team to assign the issue to. A proactive approach is essential: when users are affected by bugs in your software, it corrupts the customer experience, leading to users eventually choosing to stop using your product. In this article, we will walk you through how you can help Support team enablement with certain features of Rollbar: People tracking provides visibility over which users of the application are impacted by an error Item Severity level and error frequency help prioritize errors Automated Issue Tracking helps you to assign a developer to an issue to ensure resolution Rollbar helps your team understand the impact of errors on specific users, and you will be able to prioritize and assign errors based on the frequency of bugs and the volume/value of customers impacted by them. This will enable your team to address and resolve customer issues faster and with more context. People tracking When an error occurs in your application, one of the first questions is “How many people are affected? ” When you have People tracking set up, you will have visibility on how the errors in your application have impacted your customers. You can check the People menu in the Item details view to see: Which customers were affected by any one error: This gives you details on a particular... --- ### How to Handle the InterruptedException Checked Exception in Java > Java's InterruptedException is thrown when a thread is interrupted from waiting, sleeping, or when otherwise occupied. - Published: 2022-01-24 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-interruptedexception-checked-exception/ - Categories: Code Tutorials, Java - Tags: error-handling, java Introduction: Java Threads Threads are a basic concept in concurrent and parallel programming . They allow programs to do multiple things at the same time and are often used for performing computationally intensive tasks in the background without interrupting the main program. This is accomplished through multithreading, a common programming and execution model which allows multiple threads to exist within the context of one process. These threads share resources but are able to execute independently. In Java, threads are lightweight , which means they run in the same memory context and the time it takes to switch between threads is very short. This also means that inter-thread communication is fast and simple. Each and every Java application has a special thread created by the Java Virtual Machine, called the main thread, which is initiated by the main method as the application’s entry point. From there, it is possible to have many user threads created and controlled from within the application, able to execute portions of the program code in parallel with the main thread. The conventional way to create a thread in Java is by utilizing the Thread class , often used in conjunction with the Runnable interface . Threads can be started, stopped, suspended, or otherwise switched between their life-cycle states . In addition, Java threads can also be interrupted.   InterruptedException Exception: What, Why & How? InterruptedException (from java. lang. InterruptedException) is a checked exception which directly extends java. lang. Exception. This exception is thrown when a thread... --- ### How to Handle the UnsatisfiedLinkError Runtime Error in Java > The Java java.lang.UnsatisfiedLinkError is thrown when a program uses a native libaray but is unable to find it at runtime for some reason. - Published: 2022-01-24 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-unsatisfiedlinkerror-runtime-error/ - Categories: Code Tutorials, Java - Tags: error-handling, java Introduction: Using Native Libraries in Java A native library is a library containing code compiled for a specific (native) architecture. There are certain scenarios like hardware-software integrations and process optimizations where using libraries written for different platforms can be very useful or even necessary. For this purpose, Java provides the Java Native Interface (JNI), which allows Java code that runs inside a Java Virtual Machine (JVM) to interoperate with applications and libraries written in other programming languages, such as C, C++, and assembly. The JNI enables Java code to call and be called by native applications and libraries written in other languages and it enables programmers to write native methods to handle situations where an application cannot be written entirely in Java . Common native library formats include . dll files on Windows, . so files on Linux and . dylib files on macOS platforms. The conventional idiom for loading these libraries in Java is presented in the code example below. package rollbar; public class ClassWithNativeMethod { static { System. loadLibrary("someLibFile"); } native void someNativeMethod(String arg); /*... */ } Java loads native libraries at runtime by invoking the System. load or the System. loadLibrary method. The main difference between the two is that the latter doesn’t require the absolute path and file extension of the library to be specified—it relies on the java. library. path system property instead. To access native methods from the loaded libraries, method stubs declared with the native keyword are used.   UnsatisfiedLinkError Error: What is... --- ### Intelligent alerting helps you stay on top of critical errors and reduce noise in your notification channels - Published: 2021-02-24 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/intelligent-alerting-helps-you-stay-on-top-of-critical-errors-and-reduce-noise-in-your-notification-channels/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Overview Discovering errors in a timely manner is crucial when it comes to fixing bugs in your product. Moreover, you should learn about an error before it is reported by your users. Setting up your alerts - for example enabling Slack notifications- can give you a huge advantage and helps your team to quickly react to critical events in a given domain. However, a large number of alerts can be overwhelming and counterproductive. The important alerts might get lost in the avalanche of notifications, and you might not notice severe alerts in time. One of the main problems causing alert noise is the under-specification of alerts created in a system. By providing insufficient parameters and filters and notifying unnecessarily large groups of users, you are essentially creating noise and causing problems in the future. The best way to reduce alert noise is to create a set of specific alert rules targeting the smallest subset of necessary users. This will involve a bit of planning and configuration, but the overhead will pay off in the long run. In this article, you will learn about: how best to set-up relevant channels and groups for notifications, how to specify filters and parameters that notify the appropriate groups of people at the right times, and how best to monitor and fine-tune alert thresholds. Create dedicated notification channels and groups Keeping your team informed on incoming errors is vital, however the noise incurred by false positive alerts can cause users to ignore notifications, which can... --- ### Introducing Automation-Grade Grouping - Published: 2020-12-01 - Modified: 2022-07-20 - URL: https://rollbar.com/knowledge-base/introducing-automation-grade-grouping/ - KB Tags: Core features - KB Categories: Working with Rollbar Items Overview Proactively discover, predict, and remediate errors with Rollbar’s real-time, AI-assisted workflows! The foundation for these workflows is Automation-Grade Grouping which dramatically improves the performance and accuracy of error categorization. Automation-Grade Grouping is the next generation of our grouping engine that is trained by machine learning on millions of crashes. Machine learning enables us to continuously analyze frequently occurring error types to deduplicate items accurately. Benefits include: Reduced noise in your items list and alerts Easier triaging by removing duplicates from the error list Faster response to errors through less manual effort and more automation Machine learning trained grouping algorithm Unlike our competitors, who use hard-coded grouping algorithms, we use machine learning to determine patterns on a on-going basis and identify frequently occurring error types. This helps increase the performance of Automation-Grade Grouping over hard-coded algorithms and significantly reduces the number of both over-grouped and under-grouped errors, getting rid of missed bugs and noise. Hardcoded rules can’t keep up with constantly changing stack traces, so we regularly run our AI model against new errors from our customers to recognize different error types and group them effectively. Frequent Grouping Update releases On the path to Automation-Grade Grouping, we frequently release new grouping updates that further improve grouping accuracy and allow users to observe and respond to errors quickly. Automation-Grade Grouping is currently available for Ruby, JavaScript, Java, Python and C#. We’ll be releasing it for additional languages, including Go and PHP soon! Our latest Ruby Grouping Update improves the grouping accuracy... --- ### How to Handle the Illegal Monitor State Exception in Java > The IllegalMonitorStateException in Java occurs when a multithreaded application attempts to wait or notify a monitor that it does not own. - Published: 2022-01-17 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-illegalmonitorstateexception/ - Categories: Code Tutorials, Java - Tags: error-handling, java An IllegalMonitorStateException is a runtime exception in Java that occurs in multithreaded applications. It indicates that the calling thread has attempted to wait on an object's monitor, or attempted to notify other threads waiting on an object's monitor, without owning the specified monitor. Since the IllegalMonitorStateException is an unchecked exception, it does not need to be declared in the throws clause of a method or constructor.   What Causes IllegalMonitorStateException When building multithreaded applications in Java, if a monitor needs to be synchronized on, the IllegalMonitorStateException is thrown to indicate a thread attempted to wait or to notify other threads waiting on that monitor, without owning it. Therefore, this exception occurs if one of the wait, notify or notifyAll methods of the Object class are called outside a synchronized block or method.   IllegalMonitorStateException Example Here’s an example of an IllegalMonitorStateException, thrown when the wait method is called outside a synchronized block: class MyRunnable implements Runnable { public void run { try { this. wait(100); // calling wait without outside synchronized block System. out. println("Thread in runnable state"); } catch (InterruptedException e) { e. printStackTrace; } } } public class IllegalMonitorStateExceptionExample { public static void main(String args) { MyRunnable myRunnable = new MyRunnable; Thread myThread = new Thread(myRunnable); myThread. start; } } Since a thread must own a lock on the object’s monitor before calling the wait method, calling it outside a synchronized block throws an IllegalMonitorStateException. Running the above code throws the exception: Exception in thread "Thread-0" java. lang.... --- ### Reduce noise with the help of Slack notifications integration - Published: 2020-09-25 - Modified: 2021-12-13 - URL: https://rollbar.com/knowledge-base/reduce-noise-with-the-help-of-slack-notifications-integration/ - KB Tags: Best Practices, Tool Integrations - KB Categories: Core Features and Best Practices Rollbar supports multiple messaging tools, where your team can get notified about errors and significant events. Integrating a messaging tool with your Rollbar projects helps you manage the incoming alerts, so you won’t overlook any essential event in your projects while you are not overloaded with messages. This way, you can focus on the important things: fixing bugs. In this article, we will focus on the most popular notification integration: Slack. We will cover: the benefits of using Slack integration in your projects, the perks of using Slack Actions, and tips and tricks to get the most out of using Slack (or other) notifications. So let’s get to it then! Slack notifications Slack is one of the most commonly used options for notification integration for Rollbar projects. Once Slack is integrated with Rollbar, default rules will have been created for your projects, ready to be used. You can also customize these rules and set them up to make sure they serve your team the best (and least annoying) way. With the help of notifications, you can: set-up the types of notifications you are interested in, add notification filters, to keep the messages relevant and limit the number of alerts, include notification variable values to customize the content of the messages based on the type of event that triggers the notification. With these set-ups, you can make sure that notifications are only triggered in specific conditions, with tailored messaging that fits your needs. For example, you can set-up an alert for... --- ### How to Handle the Negative Array Size Exception in Java > The Negative Array Size Exception in Java occurs when an application attempts to create an array with a negative size. - Published: 2022-01-14 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-negativearraysizeexception/ - Categories: Code Tutorials, Java - Tags: error-handling, java The NegativeArraySizeException is a runtime exception in Java that occurs when an application attempts to create an array with a negative size. Since the NegativeArraySizeException is an unchecked exception, it does not need to be declared in the throws clause of a method or constructor.   What Causes NegativeArraySizeException in Java The NegativeArraySizeException occurs when an attempt is made to assign a negative size to an array. Here's an example: public class NegativeArraySizeExceptionExample { public static void main(String args) { int array = new int; System. out. println("Array length: " + array. length); } } Running the above code throws the following exception: Exception in thread "main" java. lang. NegativeArraySizeException: -5 at NegativeArraySizeExceptionExample. main(NegativeArraySizeExceptionExample. java:3)   How to Handle NegativeArraySizeException in Java The NegativeArraySizeException can be handled in code using the following steps: Surround the piece of code that can throw an NegativeArraySizeException in a try-catch block. Catch the NegativeArraySizeException in the catch clause. Take further action as necessary for handling the exception and making sure the program execution does not stop. Here's an example of how to handle it in code: public class NegativeArraySizeExceptionExample { public static void main(String args) { try { int array = new int; } catch (NegativeArraySizeException nase) { nase. printStackTrace; //handle the exception } System. out. println("Continuing execution... "); } } In the above example, the lines that throw the NegativeArraySizeException are placed within a try-catch block. The NegativeArraySizeException is caught in the catch clause and its stack trace is printed to the console.... --- ### Jira integration best practices - Published: 2020-09-25 - Modified: 2022-07-20 - URL: https://rollbar.com/knowledge-base/jira-integration-best-practices/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Perks of an issue tracking integration Save time and debug faster by integrating an issue tracking tool with your Rollbar projects so that you can streamline workflows and issue monitoring. Rollbar can integrate with many popular issue tracking softwares, making it easy to track Rollbar detected errors in your already existing workflow. Integrating an issue tracker allows you to Manually: Create an issue to track a Rollbar error Link a Rollbar error to an already created issue Automatically: Create an issue for new or frequent occurrences Reopen a linked issue when a Rollbar error is reactivated or reopened by a user Resolve a linked issue when a Rollbar error is resolved In this article, we will focus on Jira, one of the most popular issue tracking tool for teams. Please continue reading to learn how to best leverage it with your Rollbar projects. Tracking Rollbar detected errors with Jira Setting up Jira with your Rollbar projects allows you to create issues instantly with rich contextual data and error analytics. Moreover, you can track all these in your already existing issue tracker workflow. Once you connect Rollbar with Jira, you can significantly improve your monitoring workflow with: Link and display root cause exception data in issues Set notification rules to open new issues automatically Create and assign Jira issues with a few clicks Bidirectional syncing, update statuses in both Rollbar and Jira Detailed error data will be conveniently and easily accessible within Jira, including: stack traces, error status, number total occurrences,... --- ### How to Fix the Unsupported Class Version Runtime Error in Java > The UnsupportedClassVersionError in Java occurs when the JVM attempts to read a malformed or otherwise erroneous class file. - Published: 2022-01-14 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-unsupportedclassversionerror/ - Categories: Code Tutorials, Java - Tags: error-handling, java Introduction: Early-Stage Runtime Errors Runtime errors occur when a program is being executed and, in the case of compiled languages, after the program has been successfully compiled. Runtime errors are, therefore, harder to detect and prevent than compile-time errors . In Java, some of these runtime errors (namely throwable objects which are not exceptions) are triggered at a very early stage, while the program is basically starting up. Namely, there is a process of dynamic loading, linking, and initializing of classes and interfaces by the Java Virtual Machine (JVM) that occurs at the very beginning of execution of any Java application . This allows for a certain category of errors to be captured and dealt with before the program effectively starts. This category of high level runtime errors in Java is represented by classes which are direct descendants of the java. lang. Error class , including the java. lang. LinkageError class which denotes errors occurring during the aforementioned startup process . An instance of the Error class (or any of its subclasses) is a throwable object that a program is not expected or advised to handle, but instead, should cause immediate termination of the program. This is because most of these errors occur as a result of abnormal conditions, often so severe that it is impossible to know or control what further execution of the program might do. LinkageError instances in particular indicate critical class-related errors triggered during the class linking phase of the startup process, usually as a consequence... --- ### Filter or Ignore Errors from Bots - Published: 2020-09-22 - Modified: 2021-06-14 - URL: https://rollbar.com/knowledge-base/filter-or-ignore-errors-from-bots/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Filter or Ignore Errors from Bots Rollbar provides a few ways to filter or ignore errors that happen in requests made by bots. Using Custom Grouping You can create a Custom Grouping rule to group all errors from known bots into their own Item in Rollbar, separate from your other data. Then mute that item or change its severity. Here's an example custom grouping rule to ignore client-side JavaScript errors that are caused by the Baidu spider: }, "fingerprint": "Baiduspider js error", "title": "Baiduspider js error" } ] We use this ourselves: these errors are still tracked in case we need them, but they stay out of sight in day-to-day use. Filtering Client-Side If you would rather ignore them completely, you can filter them out before they are sent to the Rollbar API in the first place. For example, for client-side JavaScript: _rollbarConfig = { // current config... checkIgnore: function(isUncaught, args, payload) { if (window. navigator. userAgent && window. navigator. userAgent. indexOf('Baiduspider') ! == -1) { // ignore baidu spider return true; } // no other ignores return false; } } Some of our other libraries don't implement checkIgnore yet. Please check out the docs for your SDK to see if checkIgnore is implemented, and open an issue on the appropriate repo in GitHub if you'd like checkIgnore in an SDK that hasn't implemented it yet. --- ### Unknown(Script Error) - Published: 2020-09-22 - Modified: 2021-06-09 - URL: https://rollbar.com/knowledge-base/unknownscript-error/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices This happens when your JS code is hosted on a different domain (i. e. a CDN). To fix, set Access-Control-Allow-Origin: * on the JS file, and crossorigin="anonymous" on the tag. If the script errors are coming from Javascript that you don't maintain, you can suppress them using the ignoreMessages option in Rollbar. js It is normal to still get some of these errors even after following the steps below and setting up CORS, because almost everyone has third party JS on their site that isn't set up with the CORS headers. Full explanation "Script Error" happens when an uncaught JavaScript error crosses domain boundaries in violation of the cross-origin policy. For example, if you host your JavaScript code on a CDN, any uncaught errors (errors that bubble up to the window. onerror handler, instead of being caught in try-catch) will get reported as simply "Script error" instead of containing useful information. This is a browser security measure intended to prevent passing data across domains that otherwise wouldn't be allowed to communicate. It's implemented in Firefox and Chrome. To get the real error messages, do the following: 1. Send the Access-Control-Allow-Origin header Setting the Access-Control-Allow-Origin header to * signifies that the resource can be accessed properly from any domain. You can replace * with your domain if necessary, for example Access-Control-Allow-Origin: www. example. com. However, handling multiple domains gets tricky, and may not be worth the effort if using a CDN due to caching issues that may arise. See more here.... --- ### How to Handle the Exception In Initializer Runtime Error in Java > Java's ExceptionInInitializerError occurs when an unchecked exception takes place in a static initializer or static variable assignment. - Published: 2022-01-13 - Modified: 2022-11-28 - URL: https://rollbar.com/blog/java-exceptionininitializererror-runtime-error/ - Categories: Code Tutorials, Java - Tags: error-handling, java Introduction to Runtime Errors & Exceptions Unlike compile-time errors which are detected during compilation , runtime errors occur during program execution, i. e. runtime. Java’s runtime error hierarchy is somewhat complicated compared to other programming languages, but at the basic level there are two main categories: runtime errors and runtime exceptions, the latter of which being further divided into checked and unchecked exceptions (see Figure 1 below). Unchecked exceptions are also lumped into the somewhat confusingly named RuntimeException superclass, while all runtime errors are also considered to be unchecked. The term “unchecked” refers to errors and exceptions that Java doesn’t require to be caught or otherwise specified in the code . Runtime Java errors and exceptions are otherwise jointly referred to as throwables, as per the name of the Throwable class—the parent class of all errors and exceptions in this language . Figure 1. Java runtime errors & exceptions hierarchy   ExceptionInInitializerError Error: What, Why & How? After successfully compiling a program, the Java Virtual Machine (JVM) performs dynamic loading, linking, and initializing of classes and interfaces, broadly known as the class loading process . This process includes the evaluation of all static initializer blocks and variable assignments present in the compiled code. If, during this evaluation, any unexpected exception occurs, the JVM throws an ExceptionInInitializerError runtime error, points to the specific exception that caused the error, and subsequently exits the program. The ExceptionInInitializerError error occurs every time there is an unchecked (and uncaught) exception taking place inside a static... --- ### Spot and prioritize production errors with Versions - Published: 2020-09-22 - Modified: 2022-07-20 - URL: https://rollbar.com/knowledge-base/spot-and-prioritize-production-errors-with-versions-2/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Overview Versions feature is available for our Advanced and Enterprise plan customers as a useful addition to Deploy tracking. This feature comes handy if you are deploying continuously or if you have multiple code versions in production. With the help of Versions you will be able to: See which version of your deploys are throwing exceptions, Resolve your items in Versions, Resolve your items easily via Git commit messages. Watch our short video on Versions! Versions Enabling Versions provides you visibility on which versions of your code are throwing exceptions. With Version, you can have a clear view of which occurrences are the result of your latest deployed version, thus being able to decide whether to proceed with a full deployment after a canary deploy or if you should just stick with a previous stable version. It is also very helpful if you have multiple code versions running in production, such as with mobile apps. Triaging your errors will also become easier with Versions, as you will have more insights on when and who was the last to deploy and if the error has already been resolved by a teammate or not. Resolve in version With Versions, you can track which versions your errors are resolved in. When you resolve an item within Rollbar, you have the option to enter a version number. It will then appear in the item’s status history, thus providing more info about the item, when it was fixed and in which version of your deployments.... --- ### Send Log Messages to Rollbar - Published: 2020-09-22 - Modified: 2025-02-19 - URL: https://rollbar.com/knowledge-base/send-log-messages-to-rollbar/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices You can send any log message to Rollbar, not just exceptions. This is especially helpful for client-side applications that don't write to your server logs. Log messages can have the same attached metadata as exceptions (request, server, person, etc. ) and go through a similar fingerprinting process as exceptions. Log messages have a level (critical, error, warning, info, or debug), a body (just a string), and any arbitrary optional parameters you want to include. Javascript // log methods exist for each level, or pass as a param Rollbar. critical("Crash while processing payment"); Rollbar. log("error", "Crash while checking order status"); Rollbar. warning("Facebook API unavailable"); Rollbar. info("User logged in"); Rollbar. debug("Cron job starting"); // can pass arbitrary params Rollbar. info("User logged in", {loginType: "email+password"}); // rich metadata will be included automatically, but if you want to override: Rollbar. scope({person: {id: "123"}}). info("User logged in"); Ruby log methods exist for each level, or pass as a param Rollbar. critical("Crash while processing payment") Rollbar. log("error", "Crash while checking order status") Rollbar. warning("Facebook API unavailable") Rollbar. info("User logged in") Rollbar. debug("Cron job starting") # can pass arbitrary params Rollbar. info("User logged in", :login_type => "email+password") # rich metadata will be included automatically, but if you want to override: Rollbar. scope(:person => {:id => "123"}). info("User logged in") Python default level is 'error' rollbar. report_message('Got an IOError in the main loop') # logs at the 'warning' level rollbar. report_message('Got an IOError in the main loop', 'warning') # can also include the request object rollbar. report_message('Got an... --- ### How to Fix ArrayStoreException in Java > The ArrayStoreException in Java is a runtime exception that occurs when an incorrect type of object is stored into an array of objects. - Published: 2022-01-03 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/arraystoreexception-in-java/ - Categories: Code Tutorials, Java - Tags: java An ArrayStoreException is a runtime exception in Java that occurs when an attempt is made to store the incorrect type of object into an array of objects. For example, if an Integer object is attempted to be stored in an String array, a “java. lang. ArrayStoreException: java. lang. Integer” is thrown.   What Causes ArrayStoreException in Java The ArrayStoreException occurs when an attempt is made to store the wrong type of object into an array of objects. Here's an example of an ArrayStoreException thrown when an Integer is attempted to be stored in an array of type String: public class ArrayStoreExceptionExample { public static void main(String args) { Object array = new String; array = 5; } } Running the above code produces the following output: Exception in thread "main" java. lang. ArrayStoreException: java. lang. Integer at ArrayStoreExceptionExample. main(ArrayStoreExceptionExample. java:4)   How to Handle ArrayStoreException in Java The ArrayStoreException can be handled in code using the following steps: Surround the piece of code that can throw an ArrayStoreException in a try-catch block. Catch the ArrayStoreException in the catch clause. Take further action as necessary for handling the exception and making sure the program execution does not stop. Here's an example of how to handle it in code: public class ArrayStoreExceptionExample { public static void main(String args) { try { Object array = new String; array = 5; } catch (ArrayStoreException ase) { ase. printStackTrace; //handle the exception } System. out. println("Continuing execution... "); } } In the above example, the... --- ### Reduce Noisy Javascript Errors - Published: 2020-09-22 - Modified: 2021-09-20 - URL: https://rollbar.com/knowledge-base/reduce-noisy-javascript-errors/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Ignore noisy errors on the client-side Rollbar. js enables you to ignore errors client-side if you wish. You can filter by any value in the payload, and ensure that the error never even gets sent to the Rollbar API. To do this, use the checkIgnore configuration function. var _rollbarConfig = { ... checkIgnore: function(isUncaught, args, payload) { // Code here to determine whether or not to send the payload // to the Rollbar API // return true to ignore the payload } ... }; isUncaught is true if the error bubbled up to window. onerror. It is false if the error came from one of the Rollbar. js logging methods. args are the args passed to the Rollbar. js logging method. If the error is uncaught and is from an unhandled rejection, the args parameter contains the Promise object. payload is the payload that will be sent to the Rollbar API. You can use anything in the payload to conditionally filter these errors out. To have Rollbar. js ignore the payload here, return true from the function. To continue processing and have the error sent to the Rollbar API, return false. Whitelist specific domains You can configure Rollbar. js to only accept errors from your own domains. We recommend this if you use a lot of third party scripts that are generating errors you have no control over, and you only want to see errors coming from your own domains. var _rollbarConfig = { ... hostWhiteList: ... }; When hostWhiteList... --- ### How to Handle the Incompatible Types Error in Java > The Java incompatible types error happens when a value assigned to a variable or returned by a method is incompatible with the one declared. - Published: 2021-12-28 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/how-to-handle-the-incompatible-types-error-in-java/ - Categories: Code Tutorials, Java - Tags: error-handling, java Introduction to Data Types & Type Conversion Variables are memory containers used to store information. In Java, every variable has a data type and stores a value of that type. Data types, or types for short, are divided into two categories: primitive and non-primitive. There are eight primitive types in Java: byte, short, int, long, float, double, boolean and char. These built-in types describe variables that store single values of a predefined format and size. Non-primitive types, also known as reference types, hold references to objects stored somewhere in memory. The number of reference types is unlimited, as they are user-defined. A few reference types are already baked into the language and include String, as well as wrapper classes for all primitive types, like Integer for int and Boolean for boolean. All reference types are subclasses of java. lang. Object . In programming, it is commonplace to convert certain data types to others in order to allow for the storing, processing, and exchanging of data between different modules, components, libraries, APIs, etc. Java is a statically typed language, and as such has certain rules and constraints in regard to working with types. While it is possible to convert to and from certain types with relative ease, like converting a char to an int and vice versa with type casting , it is not very straightforward to convert between other types, such as between certain primitive and reference types, like converting a String to an int, or one user-defined type to... --- ### Multiple Production Environments - Published: 2020-09-22 - Modified: 2021-05-05 - URL: https://rollbar.com/knowledge-base/multiple-production-environments/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Rollbar requires the environment property on all error occurrences to indicate where they occurred (production ,staging , qa , etc. ). The choice of which environment values to use is very important due to the following considerations: Items cannot be merged if they are in different environments The Dashboard, Items, and Deploys views can only show information from a single environment or all environments. Many of our customers deploy their apps to multiple production environments, e. g. multiple zones in Amazon Web Services, Google Cloud Platform, Azure, etc. In this case, you might want to see all the items and deploys to any of your production environments at once, but also be able to track which environment a particular error occurred in. You probably will want to merge items that occurred in different production environments if they have the same root cause. Recommended usage: Use the environment value production for all errors from and deploys to any production environment. Use the host property in your error payloads to include the 'full path' of the server where an error occurred, including the name of the region/zone, e. g. us-east-1-web02 for the server web-02 that is hosted in the us-east-1 region. If you follow this approach, you can then merge any items that occur in a production environment. To find the items that are only occurring in a particular region, you can use the host advanced search option, which supports prefix search: host:us-east-1 To find items that occurred on a specific server... --- ### How to Handle the Unclosed String Literal Error in Java > Python unclosed string literal error refers to the Java compiler failing to interpret a string literal due to the missing of a double quote. - Published: 2021-12-24 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/java-unclosed-string-literal-error/ - Categories: Code Tutorials, Java - Tags: error-handling, java Introduction to Strings & String Literals Strings are a fundamental data type in most modern general-purpose programming languages. In Java, strings are defined as character sequences and are represented as immutable objects of the class java. lang. String which contains various constructors and methods for creating and manipulating strings . A string literal is simply a reference to an instance of the String class, which consists of zero or more characters enclosed in double quotes. Moreover, a string literal is also a constant, which means it always refers to the same instance of the String class, due to interning . Below is an example of the string literal "rollbar" being assigned to two different variables a and b which both reference the same (automatically interned) String object. String a = "rollbar"; String b = "rollbar"; System. out. println(a == b);// true For string literals to be interpreted correctly by the Java compiler, certain (so called “special”) characters need to be escaped by using the appropriate escape sequence (or escape for short) . Such is the case with the double quote character, which is considered a special character as it is used to mark the beginning and the end of a string literal. So, in order to have quotes within these quotes, one must use the escape sequence \” on the inner quotes, as shown below. System. out. println("Say \"Hi! \" to Rollbar. "); // Say "Hi! " to Rollbar.   Unclosed String Literal Error: What It Is and Why It... --- ### Keep an eye on your deploys with the help of Deploy Tracking - Published: 2020-09-22 - Modified: 2021-06-14 - URL: https://rollbar.com/knowledge-base/keep-an-eye-on-your-deploys-with-the-help-of-deploy-tracking-2/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Overview Nowadays, constant and fast deployment has become essential for your applications to keep up with the ever-changing needs of your customers. Elevate your Rollbar projects with Deploy tracking, and notify Rollbar about each one of your deployments to: See new errors for each deployment, Highlight the deployment that is suspected to have caused each error, Auto-resolve errors that were fixed in each deployment, Enable GitHub to notify Rollbar about errors. Watch our short video! Track your deploys for more details Every project that is connected to a web app should use deploys! Reporting a new deploy to Rollbar can allow us to display all the code revisions between each release of the application. The Deploys screen provides a detailed view of all your deployments that were made to a particular environment. The entry for each deploy displays a wide range of information to help you with the debugging process, including: Start & finish time Deploy status Deploying user (if known) Target environment Code version (typically a Git SHA or a version number) Deploy comments List of commits included (if you've connected Rollbar to a git repository) The Deploys screen offers visibility over your successful commits and your undeployed commits too. Undeployed commits are the ones that were added to the master branch but have not yet been deployed. These commits will be highlighted at the top of the Deploys screen. This will provide more visibility for developers who have missed the commits while deploying to act quickly upon them.... --- ### Jenkins - Published: 2020-09-22 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/jenkins/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Tracking deployments in Jenkins will allow you to see new errors for each deployment, determine the deployment that is suspected to have caused each error, and automatically resolve errors that were fixed in each deployment. You can read more examples in our blog Continuous Delivery with Jenkins and Rollbar. To configure Jenkins, use the curl command to notify Rollbar of the deployment: curl https://api. rollbar. com/api/1/deploy/ -F access_token=access_token -F environment=development -F revision=${GIT_COMMIT} -F rollbar_username=rollbar_username -F local_username=jenkins_user -F comment='any comments' Place this command in your deploy script so that it runs once the deploy has completed successfully. If successful, Rollbar's API will give a JSON response like this: { "data": {} } Replace each of the example values according to the parameter reference below. If using a version control system other than Git, change the revision= line as appropriate to set the revision ID. Parameter Reference access_token - Your project access token (required). environment - Name of the environment being deployed, e. g. production (required). revision - Revision number/sha being deployed. If using git, use the full sha (required). local_username - User who deployed (optional). rollbar_username - Rollbar username of the user who deployed (optional). comment - Deploy comment (e. g. what is being deployed) (optional). --- ### The Ultimate Guide to Logging in Python > Logging in Python allows you to track, tag, and assign severity levels to events that happen when an application runs. - Published: 2021-12-24 - Modified: 2024-07-18 - URL: https://rollbar.com/blog/logging-in-python/ - Categories: Code Tutorials, Python - Tags: Python Logging is used to track events that happen when an application runs. Logging calls are added to application code to record or log the events and errors that occur during program execution. In Python, the logging module is used to log such events and errors. An event can be described by a message and can optionally contain data specific to the event. Events also have a level or severity assigned by the developer. Logging is very useful for debugging and for tracking any required information.   How to Use Logging in Python The Logging Module The Python standard library contains a logging module that provides a flexible framework for writing log messages from Python code. This module is widely used and is the starting point for most Python developers to use logging. The logging module provides ways for applications to configure different log handlers and to route log messages to these handlers. This enables a highly flexible configuration that helps to handle many different use cases. To write a log message, a caller requests a named logger. This logger can be used to write formatted messages using a log level (DEBUG, INFO, ERROR etc). Here's an example: import logging log = logging. getLogger("mylogger") log. info("Hello World")   Logging Levels The standard logging levels in Python (in increasing order of severity) and their applicability are: DEBUG - Detailed information, typically of interest when diagnosing problems. INFO - Confirmation of things working as expected. WARNING - Indication of something unexpected or a... --- ### Transfer Projects Between Accounts > How to transfer Rollbar projects to another Rollbar Account. Includes Heroku and GitHub project transfers steps. - Published: 2020-09-22 - Modified: 2023-06-16 - URL: https://rollbar.com/knowledge-base/transfer-projects-between-accounts/ - KB Tags: Knowledge Base - KB Categories: Managing Your Rollbar Account Transfer Projects Between Rollbar Accounts Rollbar projects can be moved between accounts by anyone who is a member of the Owners team in both accounts. To transfer a project to a different account Go to Project Settings --> Advanced / Transfer Accounts Select the destination account, then confirm your Rollbar username and password and submit the request. What to do before transferring projects: Add your teams into the new account Add the users you want into the new account Select the correct plan (Essenstials or Advanced) and setup payment options. What will be transferred: *Notification rules will transfer only if it’s the same user token Source control JIRA Github issues Environments settings Project access tokens Slack + its rules (need to allow the new account under Connected Accounts) Service links History and comments What will not be transferred: Existing users and existing teams (additional people on the Owners excluding myself were removed) Need to add the right teams to projects If a user was assigned to an item it turns back to unassigned (see history below) Items to review after transfer: Once you have transferred the project, you should confirm the configuration of the project in the new account, including: Team assignments Notification rules We will attempt to transfer as many settings as possible to the new account, but some may not move depending on which users have access to the new account. Transferring from Heroku / GitHub to a Direct Rollbar Account Rollbar accounts can be created via partners... --- ### Personal vs. Organization Accounts - Published: 2020-09-22 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/personal-vs-organization-accounts/ - KB Tags: Knowledge Base - KB Categories: Managing Your Rollbar Account When you sign up for Rollbar, two separate but related things are created in our system: A user, which has a username, primary email address, and password. An account, which can contain projects representing your apps/services. If you sign up with the username johndoe , then we will also create an account accessible via https://rollbar. com/johndoe . Personal vs. Organizational Accounts All new accounts are created as personal accounts, which are meant to be used by a single person for their personal projects. If you are creating an account for your organization, then you can change the account into an organization account by going to Account Settings → General → Convert to Organization. The only difference between an organization account and a personal account is that organization accounts can be renamed. The name of a personal account is based on the user, so if user johndoe is renamed to johnfoo , then their personal account would change from https://rollbar. com/johndoe to https://rollbar. com/johnfoo . --- ### How to Fix Method/Constructor X in Class Y Cannot be Applied to Given Types in Java > Java "Method/Constructor in Class Cannot Be Applied To Given Types" happens when formal parameters and the actual parameters differ. - Published: 2021-12-16 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/how-to-fix-method-constructor-in-class-cannot-be-applied-to-given-types-in-java/ - Categories: Code Tutorials, Java - Tags: java Introduction to Method and Constructor Signatures In computer programming, a function is a set of instructions that can be invoked to perform a particular task. In object-oriented programming (OOP), a method is a function that is typically associated with an object and models its behavior . In Java, methods can also be static, in which case they are part of a class definition and do not require an object to be created before they are invoked. Figure 1: The Method Signature in Java   Every method has a unique method signature, which consists of the method name and its input parameters, which can be zero or more. Java methods also have return types, but these are not considered a part of the method signature, as it would be impossible for a compiler to distinguish between overloaded methods in certain contexts . Below is an example of a method declaration with a method signature consisting of the method name “doSomething” and two method parameters; the 1st one of type String and name “param1,” and the 2nd one of type int with the name “param2. ” It is important to note that method parameters always have a type and a name, and the order in which they appear in the method declaration matters. Figure 2: The Constructor Signature in Java   Constructors are a special type of method invoked to create objects from a class. Constructors have no return type and always use the name of the class in which they are... --- ### Billing in Rollbar - Published: 2020-09-22 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/billing-in-rollbar/ - KB Tags: Billing - KB Categories: Billing and Event Quotas For both monthly and annual plans, your account will have a billing cycle that starts on the day of the month when you originally signed up for the plan. The billing cycle is used to calculate your monthly usage. If you sign up after the 28th then your billing cycle date will vary depending on the length of the month. If you exceed your monthly event limit, you can pay per event over the limit. If your on-demand charge is sufficiently high that it would be more economical to upgrade to the next plan, then we'll do it for you automatically and you won't be charged for the overages. Once your account has been automatically upgraded, it will remain at the new plan level for future billing cycles. You can change your plan at any time by going to Account Settings –> Choose Plan. If you choose a lower plan level, the change will take effect at the start of your next monthly billing cycle. You may also upgrade your subscription manually at any time by going to Account Settings –> Choose Plan. If you are on a strict budget and don't mind missing some errors, then you can choose to disable on-demand events at Account Settings –> Billing Info. If on-demand is disabled and you reach your plan limit, we will not process new errors until your next billing cycle begins. On-demand event charges are calculated at the end of your billing cycle, and are included in the next... --- ### Rollbar Log4J CVE-2021-44228 (“Log4Shell”) Community Update - Published: 2021-12-14 - Modified: 2021-12-20 - URL: https://rollbar.com/blog/log4j-zero-day-2021-log4shell/ - Categories: company TLDR; Your data is safe with Rollbar. A zero day in the Java ecosystem was discovered that could exploit Apache’s Log4J library. The vulnerability can, potentially, impact users of Rollbar’s Java SDK if they selected Log4J for their project. We recommend that all projects that are dependent on Log4J upgrade their dependencies so they require a version at/after 2. 17. 0. UPDATE: we have updated the guidance so it covers the new Log4J issues (CVE-2021-45046 & CVE-2021-45105) that've been discovered and patched by Log4J. We have published rollbar-java 1. 8. 1 SDK on Maven and on Github. What’s the problem? Log4J, a popular open-source Java logging library, has presented a two zero days that’ve been resolved in the core library. It can allow for malicious code to be executed within the JVM. Log4J has made three point releases since the discovery of the vulnerability, 2. 15. 0, 2. 16. 0 and 2. 17. 0. The current rollbar-java SDK doesn’t log through Log4J explicitly; however, if the customer leverages Log4J as their primary logger then Rollbar’s own logging will go through the affected library. The vulnerabilities have been labeled by MITRE as CVE-2021-44228 and CVE-2021-45046. CVE-2021-44228 was given the highest CVSS score (10. 0) and 2021-45046 is considered LOW. If exploited, the original vulnerability can give an attacker full control of any impacted system. After learning of the announcement, our security and engineering teams began working diligently to evaluate all of our products and internal services for any potential impact. Please... --- ### Bash - Published: 2020-09-22 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/bash/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Use Curl to send an HTTP POST: ACCESS_TOKEN=POST_SERVER_ITEM_ACCESS_TOKEN ENVIRONMENT=production LOCAL_USERNAME=whoami REVISION=git rev-parse --verify HEAD curl https://api. rollbar. com/api/1/deploy/ -F access_token=$ACCESS_TOKEN -F environment=$ENVIRONMENT -F revision=$REVISION -F local_username=$LOCAL_USERNAME Place this command in your deploy script so that it runs once the deploy has completed successfully. If the POST is successful, you will receive a JSON response like: {"data": {}} If using a version control system other than Git, change the revision= line as appropriate to set the revision ID. Parameter Reference ● access_token - Your project access token (required). ● environment - Name of the environment being deployed, e. g. "production" (required). ● revision - Revision number/sha being deployed. If using git, use the full sha (required). ● local_username - User who deployed (optional). ● rollbar_username - Rollbar username of the user who deployed (optional). ● comment - Deploy comment (e. g. what is being deployed) (optional). --- ### Enable GitHub Organization Access for Rollbar - Published: 2020-09-22 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/enable-github-organization-access-for-rollbar/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Sometimes the GitHub repo you want isn't showing up in the dropdown in our UI. If typing the repo name in and saving the settings doesn't work, it may be because you haven't granted permission to the Rollbar application on Github. Go to your personal settings on GitHub, then go to Applications and navigate to the Authorized OAuth Apps. There you should see Rollbar, click on the link and you should be able to grant permission to the organization. --- ### How to Catch Multiple Exceptions in Python > Python try-except blocks can be used to catch/respond to processes that raises more than one possible exception, with a single except clause. - Published: 2021-12-13 - Modified: 2023-07-31 - URL: https://rollbar.com/blog/python-catching-multiple-exceptions/ - Categories: Code Tutorials, Python - Tags: Python When a program encounters an exception during execution, it is terminated if the exception is not handled. By handling multiple exceptions, a program can respond to different exceptions without terminating it. In Python, try-except blocks can be used to catch and respond to one or multiple exceptions. In cases where a process raises more than one possible exception, they can all be handled using a single except clause. There are several approaches for handling multiple exceptions in Python, the most common of which are discussed below. Install the Python SDK to identify and fix exceptions Using Same Code Block for Multiple Exceptions With this approach, the same code block is executed if any of the listed exceptions occurs. Here's an example: try: name = 'Bob' name += 5 except (NameError, TypeError) as error: print(error) rollbar. report_exc_info In the above example, the code in the except block will be executed if any of the listed exceptions occurs. Running the above code raises a TypeError, which is handled by the code, producing the following output: cannot concatenate 'str' and 'int' objects   Using Different Code Blocks for Multiple Exceptions If some exceptions need to be handled differently, they can be placed in their own except clause: try: name = 'Bob' name += 5 except NameError as ne: # Code to handle NameError print(ne) rollbar. report_exc_info except TypeError as te: # Code to handle TypeError print(te) rollbar. report_exc_info In the above example, NameError and TypeError are two possible exceptions in the code, which... --- ### Filtering Javascript errors by language - Published: 2020-09-22 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/filtering-javascript-errors-by-language/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices If your application has an international user base, you may be receiving Javascript error reports in the local language of your users' browsers. While Rollbar can't translate error messages into your preferred language, it is possible to group errors by language so that you have fewer items to manage. Here are a few custom grouping recipes to match errors based on browser language: One supported language The following rule groups errors where client. language. javascript does not contain en-: { "condition": { "path": "client. javascript. language","ncontains": "en-" }, "fingerprint": "non-en error", "title": "non-english error" } Multiple supported languages The following rule groups errors where client. language. javascript does not contain en-,fr-,de-, or es-: { "condition":{ "all": }, "fingerprint": "non-supported language error", "title": "non-supported language error" } --- ### How to Handle Unhashable Type List Exceptions in Python > The Python TypeError: Unhashable Type: 'list' happens when a mutable list, instead of an immutable tuple, is used as a hash argument. - Published: 2021-12-13 - Modified: 2023-03-16 - URL: https://rollbar.com/blog/handling-unhashable-type-list-exceptions/ - Categories: Code Tutorials, Python - Tags: Python The Python TypeError: unhashable type: 'list' usually means that a list is being used as a hash argument. This error occurs when trying to hash a list, which is an unhashable object. For example, using a list as a key in a Python dictionary will cause this error since dictionaries only accept hashable data types as a key. The standard way to solve this issue is to cast a list to a tuple, which is a hashable data type. Install the Python SDK to identify and fix these undefined errors Tuples vs Lists Tuples are similar to lists but are immutable. They usually contain a heterogeneous sequence of elements that are accessed via unpacking or indexing. On the other hand, lists are mutable and contain a homogeneous sequence of elements that are accessed by iterating over the list. Immutable objects such as tuples are hashable since they have a single unique value that never changes. Hashing such objects always produces the same result, so they can be used as the keys for dictionaries.   TypeError: Unhashable Type: 'List' Example Here’s an example of a Python TypeError: unhashable type: 'list' thrown when a list is used as the key for a dictionary: my_dict = {1: 'Bob', : 'names'} print(my_dict) Since a list is not hashable, running the above code produces the following error: Traceback (most recent call last): File "test. py", line 1, in my_dict = {1: 'Bob', : 'names'} TypeError: unhashable type: 'list'   How to Fix TypeError: unhashable type:... --- ### Hiding Third-Party Code - Published: 2020-09-22 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/hiding-third-party-code/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices When using libraries or frameworks you will often have large portions of well-tested third party code that is unlikely to have caused an error for you. In order to keep the focus on your code Rollbar will collapse stack frames from third party code. Single Root To set this up all you have to do is configure your SDK to send the server. root, or the prefix URL for all in-house stack frame filenames. Any code from outside the server. root directory will be collapsed by default when you load that item in the Rollbar UI. For example, in a hypothetical stack trace with lines from the following files: ● /home/deploy/www/app/model. py ● /home/deploy/www/app/controller. py ● /home/deploy/www/vendor/webfmwk/eventloop. py ● /home/deploy/www/vendor/webfmwk/startup. py ● /home/deploy/www/app/main. py and with server. root set to /home/deploy/www/app, the lines from the vendor directory would be collapsed together, to allow you to focus on your code, and not the unlikely possibility that webfmk has a bug. Extra Roots Sometimes you'll have split your code into multiple sibling modules adjacent to folders you do not want included as project code (vendor, models, controllers, for instance). In these cases you can send additional application roots in the project_package_paths key. These paths should look identical to the server root (the beginning of a URL), and the key should be in an array containing any additional folders to be considered "in-project". --- ### How to Solve the Chunk Load Error in JavaScript > Whenever there’s an error observed in dynamically fetching helper JavaScript files known as Chunks, a ChunkLoad Error is thrown. - Published: 2021-12-13 - Modified: 2025-03-17 - URL: https://rollbar.com/blog/javascript-chunk-load-error/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript The way React, Vue, Angular and similar frameworks work is by downloading JavaScript files and using them to render websites on the browser. Whenever a project is built, two types of files are created: Main entry file - The file to which the script tag in index. html points to Other helper files - The files which are imported by the main entry file whenever required. Most of the time, if you have a small project, a single entry file is enough. You can store all the JavaScript code into the same file. But, for faster loading and better user experience, the JavaScript code can also be broken down into multiple files when it's built and these files are dynamically fetched by the main entry file whenever required. Now, whenever there’s an error observed in fetching these other helper JavaScript files, a ChunkLoad Error is thrown. The multiple JavaScript files used are also known as chunks, and hence the name of the error. What Causes the Chunk Load Error? To recap, the Chunk Load Error occurs when the browser encounters an error in fetching some JavaScript files, which were dynamically imported. There’s a couple reasons you may have encountered this error: The checksum validation for the JavaScript file failed This can occur when the checksum of the received file does not match the integrity attribute of the script tag. (For more information on why this is important and how it’s done you can refer to Subresource Integrity - Web security... --- ### Disable Two Factor Authentication - Published: 2020-09-22 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/disable-two-factor-authentication/ - KB Tags: Security - KB Categories: Security If you no longer have access to your 2FA device and do not have your recovery codes, Rollbar cannot disable 2FA on your user account unless you are on a paid account (see below). There are a couple of possible solutions that can allow you to regain access to your account. If there is another user in your account that is a member of the Owners team, they can disable 2FA for you via the Account Settings --> Members screen. If you are the only Owner in your account, and your 2FA device was a smart phone (e. g. iPhone, Android), then you can restore a backup of your device that has your authentication app properly configured. Note: If you are a paying customer, we can make two small charges (less than $1 US) to your credit card. If you can tell us the amount of those charges, then we will disable 2FA and immediately reverse the charges. --- ### Preventing Client-Side Access Token Abuse - Published: 2020-09-22 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/preventing-client-side-access-token-abuse/ - KB Tags: Security - KB Categories: Security Unfortunately there is no silver bullet here -- all analytics services have this problem too (Google Analytics, Mixpanel, etc. ). Our best practices for mitigating this problem: Access tokens Use a separate client-side token with post_client_item scope only. (This is the default post_client_item token. ) The client-side access token can only be used to send events and only from client-side platforms. It can't be used to read any data, and it can't be used to spoof server-side events. Tokens can be disabled and replaced at any time. If someone is abusing your token, you can disable it and use a new one instead. IP Blocklist We also provide an IP Blocklist so that you can blocklist specific malicious IPs. You can find the source IPs in the Rollbar interface, and then add those IP(s) to the blocklist. (Project -> Settings -> IP Blocklist) --- ### How to Resolve The Non-static Variable/Method X Cannot be Referenced from a Static Context Error in Java > Attempting to access a non-static variable/method from a static context without a class instance creates ambiguity. - Published: 2021-12-13 - Modified: 2025-02-19 - URL: https://rollbar.com/blog/java-non-static-variable-method-x-cannot-be-referenced-from-a-static-context/ - Categories: Code Tutorials, Java - Tags: error-handling, error-monitoring, java Introduction to Static Variables and Methods The static keyword in Java is a modifier that makes a member of a class independent of the instances of that class. In other words, the static modifier is used to define variables and methods related to the class as a whole, rather than to an instance (object) of the class. Hence, static variables are often called class variables, while static methods are commonly referred to as class methods. Class variables and methods are stored in fixed locations in memory and are accessed without a reference to an object, directly through the class name itself . A common use for static methods is to access static variables. However, not all combinations of instance and class variables and methods are allowed. Namely, static methods can only use static variables and call static methods—they cannot access instance variables or methods directly, without an object reference. This is because instance variables and methods are always tied to a specific instance, i. e. , object of their class. Due to their instance-less nature, static variables and methods are sometimes used to construct stateless utility classes   Non-static Variable X Cannot be Referenced from a Static Context & Non-static Method X Cannot be Referenced from a Static Context A static variable is initialized once, when its class is loaded into memory, and its value is shared among all instances of that class. On the other hand, a non-static variable is initialized every time a new instance of its class... --- ### Source Map Troubleshooting - Published: 2020-09-22 - Modified: 2021-06-14 - URL: https://rollbar.com/knowledge-base/source-map-troubleshooting/ - KB Tags: Troubleshooting - KB Categories: Troubleshooting Rollbar applies source maps to exceptions from minified Javascript so you can view the original line and character numbers for debugging. For full details on source maps in Rollbar, check out our Source Maps guide. Do your source maps work locally? Source maps were originally developed to support local debugging of minified Javascript. If you are not able to debug your minified Javascript code via your browser, then it will probably not work in Rollbar either. For instructions on using source maps for local debugging, see this article in Google's Tools for Web Developers. Are your source maps being successfully uploaded/downloaded? Rollbar provides a detailed view of known source maps for each project. You can view it by going to Settings -> Symbol Mapping -> Source Maps in your Rollbar project. This screen shows all attempt to access source maps, both successful and unsuccessful. It includes a search feature that can be used to look for source maps for specific Javascript files. Are your source maps valid? Sometimes source maps can be generated with no content in them, or in an invalid format, e. g. base64. Check the source maps that are being uploaded to make sure they are in a human-readable format. We also have this helpful tool to help check if your source map produces the correct mapping for the line numbers and column numbers from the exception. Are source maps enabled by default for older projects? If your project was created prior to May 16, 2017, then... --- ### E_ERRORs in PHP: What You Need to Know > PHP E_ERRORs occures when a major, irrecoverable issue arises during runtime. Lesser errors are recoverable and PHP would continue to run. - Published: 2021-12-07 - Modified: 2022-12-12 - URL: https://rollbar.com/blog/e_errors-in-php/ - Categories: Code Tutorials, PHP - Tags: PHP What is E_ERROR? PHP’s E_ERROR typically indicates a major issue with PHP. Normally, PHP may be able to recover from a lesser error and the PHP application could continue to run. However, with E_ERROR, PHP will usually outright fail and stop working entirely.   What causes E_ERROR? Several factors can cause an E_ERROR to occur. The examples below are generalized to get the point across regardless of which version of PHP you are using.   Wrong Type You may, for example, have a function definition which is called or used incorrectly. function my_function (a_value: String) { echo a_value; } my_function(123); In the example above, you would receive an E_ERROR related to the fact that you are using an integer when a string is expected.   Parsing Errors You may also have parsing errors that cause E_ERROR to show up such as a missing semicolon or an unexpected character. Here is an example: function my_function (a_value: String) { echo a_value }) my_function(123); Note how there’s a missing semicolon after “echo a_value” and there’s an extra bracket at the end of the curly function bracket. Both (or just one of these) would cause an error.   Calling an Undefined Function You may also be calling an undefined function. For example, if you simply call “my_function” without ever first declaring it, you will get this error. Or you may have a dependency chain failure wherein your function definition is run later on in the code, after you’ve called it, although this tends to... --- ### Improve your Error Grouping with the help of Rollbar - Published: 2020-09-22 - Modified: 2021-06-14 - URL: https://rollbar.com/knowledge-base/improve-your-error-grouping-with-the-help-of-rollbar/ - KB Tags: Strategies - KB Categories: Working with Rollbar Items Overview Congratulations on setting up your Rollbar projects! You took a step towards more visibility and an easier flow when it comes to debugging. Now, you might as well learn how the incoming errors are examined and grouped together by Rollbar. Let’s see how it happens and what else do we have to offer! With the help of Rollbar’s default grouping algorithm, you will: Keep your items list transparent and organized, Reduce the noise in your notifications, Understand and respond to your errors better. Learn how Rollbar groups your items by default Error grouping means that when you release a code to production, and it crashes hundreds of times, our system groups all of those crashes together in one error item and sends you one notification, instead of notifying you every time, resulting in 100 notifications in your inbox. The 1 item in your items list will include all the details of all the occurrences of your error. The Rollbar grouping algorithm is smart and is being improved constantly, so we can serve our customers. Rollbar tries to group occurrences together with the same root cause in one item so that you: Have visibility over all the occurrences of one error item, which makes you Understand your errors a lot easier, and Speed up the bugfixing process. The occurrence fingerprints are resilient to deploys and code changes, so you can track the history of your occurrences through multiple deploys and code versions. Take your Grouping to the next level It... --- ### Resolving TypeError: "X" is Not a Constructor in JavaScript > JavaScript "TypeError: "x" is not a constructor" errors occur when invalid objects or a variable is erroneously used as a constructor. - Published: 2021-12-07 - Modified: 2022-12-12 - URL: https://rollbar.com/blog/javascript-typeerror-x-is-not-a-constructor/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript What is a Constructor in JavaScript? A constructor is a special function that creates and initializes an object instance of a class. In JavaScript, a constructor gets called when an object is created using the new keyword. The purpose of a constructor is to create a new object and set values for any existing object properties.   What Happens When a Constructor Gets Called? When a constructor gets invoked in JavaScript, the following sequence of operations take place: A new empty object gets created. The this keyword begins to refer to the new object and it becomes the current instance object. The new object is then returned as the return value of the constructor.   JavaScript Constructor Examples Here’s a few examples of constructors in JavaScript: Using the "this" Keyword When the this keyword is used in a constructor, it refers to the newly created object: //Constructor function User { this. name = 'Bob'; } var user = new User;   Create Multiple Objects In JavaScript, multiple objects can be created in a constructor: //Constructor function User { this. name = 'Bob'; } var user1 = new User; var user2 = new User; In the above example, two objects are created using the same constructor.   Constructor with Parameters A constructor can also have parameters: //Constructor function User (name, age) { this. name = name; this. age = age; } var user1 = new User('Bob', 25); var user2 = new User('Alice', 27); In the above example, arguments are passed to... --- ### Manual merging vs. Custom fingerprints - Published: 2020-09-22 - Modified: 2021-06-14 - URL: https://rollbar.com/knowledge-base/manual-merging-vs-custom-fingerprints/ - KB Tags: Tool Integrations - KB Categories: Working with Rollbar Items Overview Rollbar has a pretty sufficient default grouping algorithm, that automatically analyzes the stack traces of the incoming occurrences and groups them if there is a common pattern. This helps to reduce the noise of incoming occurrences by a great deal! But what happens, if you want to organize your Items list differently? In this article, we will walk you through all the benefits of: Merging items manually, instantly, when you think 2 or more items should go together, Create custom fingerprints for future occurrences and tailor grouping to your own needs. Merge your items instantly You can manually merge items together, thus combining items into one new group for easier management. In this case, all past and future occurrences of those items will be combined automatically, and you will have one unified view on the Item details page of all the occurrences of the error. Manually merging your items comes handy, when the grouping algorithm separates items that you think should rather go together. You can then group them instantly with the merging option. It is also useful when you want to group items together, that do not require their own custom fingerprint. If you want to remove items from a group, because they were mistakenly grouped together or you decided to organize the occurrences separately, you have the chance to un-merge them and from then on they will be handled as separate items. Create custom fingerprints When you manually merge items together, Rollbar will analyze the items and... --- ### JavaScript Constructors: What You Need to Know > JavaScript constructors are special functions that creates and initializes an object instance of a class when created using the "new" keyword. - Published: 2021-12-06 - Modified: 2022-12-12 - URL: https://rollbar.com/blog/javascript-constructors/ - Categories: topics - Tags: JavaScript What is a Constructor in JavaScript? A constructor is a special function that creates and initializes an object instance of a class. In JavaScript, a constructor gets called when an object is created using the new keyword. The purpose of a constructor is to create a new object and set values for any existing object properties.   What Happens When A Constructor Gets Called? When a constructor gets invoked in JavaScript, the following sequence of operations take place: A new empty object gets created. The this keyword begins to refer to the new object and it becomes the current instance object. The new object is then returned as the return value of the constructor.   JavaScript Constructor Examples Here’s a few examples of constructors in JavaScript: Using the "this" Keyword When the this keyword is used in a constructor, it refers to the newly created object: //Constructor function User { this. name = 'Bob'; } var user = new User;   Create Multiple Objects In JavaScript, multiple objects can be created in a constructor: //Constructor function User { this. name = 'Bob'; } var user1 = new User; var user2 = new User; In the above example, two objects are created using the same constructor.   Constructor with Parameters A constructor can also have parameters: //Constructor function User (name, age) { this. name = name; this. age = age; } var user1 = new User('Bob', 25); var user2 = new User('Alice', 27); In the above example, arguments are passed to... --- ### Streamline your items workflow - Published: 2020-09-22 - Modified: 2021-06-14 - URL: https://rollbar.com/knowledge-base/streamline-your-items-workflow-2/ - KB Tags: Tool Integrations - KB Categories: Working with Rollbar Items Overview Chances are you have multiple incoming occurrences in your Rollbar projects, grouped into items, appearing in your Item list, one after another. You also start to receive notifications pouring in your inbox. Now, you might as well keep your incoming items organized and clean by Rollbar’s useful options of: Setting up statuses for your items, that determine how they appear and behave, Triaging and rating them based on their severity level. This way you can make sure your item list is transparent, you will not be spammed by irrelevant notifications, provide clear visibility for your teams who manage the same project by appropriately triaging your errors and setting up the relevant severity level and status, to speed up the process of debugging, making sure everyone focuses their attention on the relevant things! Item statuses At Rollbar, we offer the chance to assign 3 statuses for your items: Active, Resolved, Muted. Active items All items start as active. Active means that the error is present and on-going and it requires your attention. It could represent a bug that has not yet been fixed or an intermittent ongoing backend issue. Active items Appear on the Dashboard Trigger notifications on their first occurrence and when thresholds are crossed (according to your notification rules) Count for billing purposes Can be changed to Resolved and Muted Resolved items When you believe your item is fixed or if you want to be notified if the bug re-appears you can mark it as Resolved. If possible... --- ### Introducing Adaptive Alerts: Detect application-level error trends > Adaptive Alerts is a new feature from Rollbar that adds to our reliable, informative and actionable alerts about unexpected issues in monitored applications and services. Adaptive Alerts uses anomaly detection to learn the standard behavior of enterprise applications, and alerts developers about atypical exception rates, reducing unwanted noise. - Published: 2021-12-02 - Modified: 2022-07-23 - URL: https://rollbar.com/blog/introducing-adaptive-alerts-detect-application-level-trends-with-greater-accuracy/ - Categories: product - Tags: adaptive alerts Adaptive Alerts is a new feature from Rollbar that adds to our reliable, informative and actionable alerts about unexpected issues in monitored applications and services. Adaptive Alerts uses anomaly detection to learn the baseline rates of various error types in your production applications, and alerts developers about atypical exception rates. When Errors Become More Active Production applications often have a large number of unique errors that are open, but not a priority to fix as long as they occur at a low rate. Developers and SREs want to know when such errors become more active than usual, so that they can resolve them if needed. But alerts based on fixed error thresholds generate too much noise and waste valuable developer time. Brian Rue, our CEO and co-founder says, “Error alerting is important, but historically developers have had to deal with a lot of noise. Adaptive Alerts is the next generation of trendline alerting in Rollbar. Compared to the previous generation, which Rollbar customers know as the 10^nth Occurrence and High Occurrence Rate, Adaptive Alerts sends 86% fewer notifications, thanks to automatically adjusting thresholds, and a broader exception-level view that effectively detects application-level trends. ” Training and Anomaly Detection The Rollbar algorithm is continuously trained using two weeks of historical data for each product/application. After analyzing a project’s historical data, Adaptive Alerts determines a baseline, monitors the exceptions rate continuously, and sends an alert within minutes when it detects something significant. Users can adjust the minimum exception rate to alert and... --- ### Auto-upgrading in Rollbar - Published: 2020-09-21 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/auto-upgrading-in-rollbar/ - KB Tags: Billing - KB Categories: Billing and Event Quotas If you have a paid subscription to Rollbar, then you can choose to automatically upgrade your account whenever you reach your monthly event limit. Automatic upgrades are enabled by default, and can be turned on/off by going to Account Settings --> Billing Info. If automatic upgrades are enabled, you will receive several warning emails before your plan is upgraded. We send you emails when your account has reached 70%, 90%, and 100% of your monthly quota, and we'll also notify you if your account was automatically upgraded. If automatic upgrades are disabled and your account reaches its monthly event limit, then your account will not receive any more data until your next monthly cycle begins. We send out notifications throughout the month to notify you if you are likely to hit your event limit, so you have the opportunity to choose to auto-upgrade or to limit the number of events sent to Rollbar. Click here for more information about billing in Rollbar --- ### How to Resolve The Cannot Find Symbol Error in Java > The cannot find symbol error refers to a situation where the Java compiler is unable to find the symbol associated with a given identifier. - Published: 2021-11-25 - Modified: 2025-03-17 - URL: https://rollbar.com/blog/how-to-resolve-the-cannot-find-symbol-error-in-java/ - Categories: Code Tutorials, Java - Tags: error-handling, error-monitoring, java Introduction to Symbol Tables Symbol tables are an important data structure created and maintained by compilers to store information associated with identifiers in a given source code. This information is entered into the symbol tables during lexical and syntax analysis and is used in the later phases of compilation. As the declarations of classes, interfaces, variables, and methods are processed, their identifiers are bound to corresponding entries in the symbol tables. When uses of these identifiers are encountered in the source code, the compiler looks them up in the symbol tables and relies on this information for things such as verifying that a variable has been declared, determining the scope of a variable, and verifying that an expression is semantically correct with type checking. Symbol tables are also used for code generation and optimization . A simplified representation of a symbol table entry (or simply, a symbol) in Java has the following format: . Given a global variable declaration like final double ratio; the corresponding symbol would then be . Install the Java SDK to identify and fix exceptions Cannot Find Symbol Error As its name implies, the cannot find symbol error refers to a symbol which cannot be found. While there are multiple ways and reasons this can occur, they all boil down to the fact that the Java compiler is unable to find the symbol associated with a given identifier. The message produced by the compiler for the cannot find symbol error includes two additional fields: “symbol”—the name... --- ### GDPR & Rollbar - Published: 2020-09-20 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/gdpr-rollbar/ - KB Tags: Knowledge Base - KB Categories: Security Rollbar is compliant with GDPR and can serve as a data processor for customers who control data from individuals in the EU. We provide the following measures to enable our customers to maintain GDPR compliance: Data Processing Agreement Rollbar provides a data processing agreement (DPA) which can be viewed and accepted by going to Account Settings -> Security -> Data Processing Agreement. Data Retention To ensure that you retain your customer's identifiable data no longer than necessary, we've added the option in paid Rollbar accounts to customize your data retention period between 7-180 days. You can update this by going to Account Settings -> Security -> Data Retention. Right to be Forgotten We've added an API for deleting person tracking data. See our API docs for details. Data Subprocessor Explanation If you are required to list Rollbar as a data subprocessor, the following information can be provided: Purpose: Exception reporting Location: USA Questions? Don't hesitate to contact us via privacy@rollbar. com. --- ### Could not compare commits between SHAs ... - Published: 2020-09-17 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/could-not-compare-commits-between-shas/ - KB Tags: Tool Integrations - KB Categories: Troubleshooting Occasionally when using Rollbar's Deploy Tracking feature, you may see a message such as the following: Could not compare commits between SHAs abcdef... . and 123456... . This usually means that one of the SHAs is either invalid or has not been pushed to Github. A common cause of this problem is that your Github OAuth token has expired. Here are steps to see if this is the source of the problem: In Rollbar: In the Rollbar project where you encountered the issue, go to Settings → Source Control . Copy the Repository , Default Branch , and Project Root settings for later use. Click Disconnect where it says Connected to Github as {github-username} . In GitHub: Go to Settings → Applications → Authorized OAuth Apps, find Rollbar, click Revoke, and then confirm that you want to revoke access. In Rollbar: In the Rollbar project where you encountered the issue, go to Settings → Source Control, select Github as the source control provider, then click Connect to Github, and then complete the authorization process. Reconfigure Repository , Default Branch , and Project Root . Check your deploys page. If the SHAs specified in the deploys are valid, then you should no longer see the message. --- ### How to Handle the <Identifier> Expected Error in Java > The expected error in Java occurs when an expression statement is written outside of a constructor/method/instance initialization block. - Published: 2021-11-22 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/how-to-handle-the-identifier-expected-error-in-java/ - Categories: Code Tutorials, Java - Tags: java Introduction to Identifiers By definition, an identifier in Java is a sequence of one or more characters, where the first character must be a valid first character (letter, $, _) and each subsequent character in the sequence must be a valid non-first character (letter, digit, $, _). An identifier can be used to name a package, a class, an interface, a method, a variable, etc. An identifier may contain letters and digits from the entire Unicode character set, which supports most writing scripts in use in the world today, including the large sets for Chinese, Japanese, and Korean. This allows programmers to use identifiers in programs written in their native languages .   Identifier Expected Error: What It Is & What Triggers It The initial phase of the Java compilation process involves lexical analysis of the source code. The compiler reads the input code as a stream of characters and categorizes them into lexemes of tokens, before proceeding to parse the tokens into a syntax tree. Here is where all tokens, including identifiers, are being checked against a predefined set of grammar rules. When the compiler reaches a point where, according to these rules, an identifier is expected to appear but something else is found instead, it raises the expected error, where the angle brackets denote a reference to a token object . The expected error is a very common Java compile-time error faced by novice programmers and people starting to learn the language. This error typically occurs when an... --- ### Get more insights and control over your errors - Published: 2020-09-17 - Modified: 2021-06-14 - URL: https://rollbar.com/knowledge-base/get-more-insights-and-control-over-your-errors/ - KB Tags: Tool Integrations - KB Categories: Core Features and Best Practices Overview In this article, we will walk you through all the perks of integrating GitHub source control with your Rollbar projects. Once you have source control integration set up and a Git repository is connected to your Rollbar projects, you will have more visibility on: where the error was most recently activated, the context of the code line where the bug occurred, and who the last person was to work on the affected code section, thus being able to assign it to the right person to work on it and resolve it faster. Additionally, you won’t even have to leave your Rollbar project. Sounds tempting, right? Let's get to it! Don't have time to read? Watch our short video on GitHub source control integration. Gain more visibility all in one place When a Rollbar project is connected to a Git repo, stack traces will include links to each file in the code version where the error was most recently activated. Another advantage is that the list of commits included in each deploy will include URLs so you can view the difference for each commit as well as the entire deployed code version, thus spotting where the error occurred and fixing it with ease. You will also have the chance to view un-deployed commits. Any commit that has been merged to your master branch but not yet deployed will be highlighted at the top of the Deploys screen. This will provide more visibility for developers who have missed the commits while... --- ### Spring vs. Spring Boot: Whats the Difference > Spring Boot was introduced as a Spring Framework as the latter has become increasingly complex because of added functionalities. - Published: 2021-11-16 - Modified: 2022-05-03 - URL: https://rollbar.com/blog/spring-vs-spring-boot-whats-the-difference/ - Categories: topics - Tags: java, spring, spring boot Spring vs. Spring Boot Spring is the most popular application development framework in Java. However, over the past few years, Spring has become increasingly complex because of added functionalities. Starting a new project usually requires going through a lengthy process and takes a lot of time. To avoid starting from scratch and to save time, Spring Boot was introduced. Spring Boot uses Spring as its foundation layer and allows developers to build a standalone application with none or minimal configuration. It is targeted specifically towards building web applications and microservices.   What is Spring? Spring is a lightweight open-source Java development framework. It provides a comprehensive programming and configuration model for developing enterprise level Java applications. It aims to simplify enterprise Java development and helps developers build applications more effectively and efficiently. Spring focuses on several areas of application development and provides a wide range of features.   Spring Main Features One of the major features of Spring is dependency injection, which allows developing loosely coupled applications. It also includes the following modules out of the box: Spring MVC Spring JDBC Spring Web Flow Spring Security Spring ORM Spring AOP Spring Test These modules offer better functionalities for web applications and drastically reduce development time.   Spring Use Cases Some of the tasks that can be performed using Spring are: Building serverless applications Creating scalable microservices Ensuring top-notch server-side security Building asynchronous applications Creating batches to automate tasks Event driven architecture   Benefits of Spring Can be used for all... --- ### "There was a problem trying to connect to your Asana account." message appears - Published: 2020-09-17 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/there-was-a-problem-trying-to-connect-to-your-asana-account-message-appears/ - KB Tags: Tool Integrations - KB Categories: Troubleshooting This warning message typically appears because the Rollbar app is having problems accessing the Asana API due to an outage or a timeout. This happens intermittently and is a known issue in the Asana API. Asana's platform team are working to improve performance and stability of the API to reduce future occurrences. If you encounter this error, please wait a couple of minutes and try to repeat your action again. If the error persists, please notify Asana via https://asana. com/support as well as Rollbar via support@rollbar. com or the in-app chat. --- ## Press ### How to Fix Unreachable Statement Errors in Java > The “Unreachable Statement” error in Java arises when the compiler detects a statement that's never executable in the program's control flow. - Published: 2021-11-15 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/handling-the-unreachable-statement-error-in-java/ - Categories: Code Tutorials, Java - Tags: java Introduction to Statements and Compile-time Errors in Java Statements are foundational language constructs that have an effect on the execution of a program. Statements are similar to sentences in natural languages. In Java, there are three main types of statements, namely expression statements, declaration statements, and control-flow statements . As a compiled programming language, Java has an inbuilt mechanism for preventing many source code errors from winding up in executable programs and surfacing in production environments . One such error, related to statements, is the unreachable statement error.   What Causes the Unreachable Statement Error? By performing semantic data flow analysis, the Java compiler checks that every statement is reachable and makes sure that there exists an execution path from the beginning of a constructor, method, instance initializer, or static initializer that contains the statement, to the statement itself. If it finds a statement for which there is no such path, the compiler raises the unreachable statement error .   Unreachable Statement Error Examples After a branching control-flow statement The break, continue, and return branching statements allow the flow of execution to jump to a different part of the program. The break statement allows breaking out of a loop, the continue statement skips the current iteration of a loop, and the return statement exits a method and returns the execution flow to where the method was invoked . Any statement that follows immediately after a branching statement is, by default, unreachable. After break When the code in Fig. 1(a) is... --- ### SafetyDetectives - Interview with Brian Rue - CEO and Co-founder at Rollbar - Published: 2024-01-22 - Modified: 2024-01-22 - URL: https://rollbar.com/press/safetydetectives-interview-with-brian-rue-ceo-and-co-founder-at-rollbar/ Inter --- ### Coding Java Applications the Serverless Way > Advantages, disadvantages, and use cases of going serverless with Java. Build ✓on-demand, ✓high-availability apps without tedious server management! - Published: 2021-11-08 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/guide-to-going-serverless-with-java/ - Categories: Code Tutorials, Java - Tags: java, serverless j What is Serverless Java? Serverless Java applications use modern cloud computing to let developers focus on business logic rather than infrastructure. In a serverless environment, the infrastructure provider takes care of scaling, runtimes, resource management, security and other specifics. Concerns such as number of instances to run and which OS to use are managed by Function as a Service (FaaS) platforms, allowing developers to focus on application code. A serverless Java setup allows developers to build and run applications on-demand, guaranteeing high availability without having to manage servers themselves. Servers still exist behind the scenes, but they are abstracted away from application development.   Serverless Application Characteristics Serverless applications have a number of specific properties, including the following: Event-driven execution using triggers Resource management handled by the platform including starting, stopping and scaling Scales down to zero, with no or low cost when idle Stateless A serverless Java architecture is simple to comprehend. Developers write code that performs certain operations and trigger execution in response to an event. These events could be generated by the system or the end-user. As an example, in AWS, API Gateway can be used to handle HTTP requests, Lambda to handle business logic and RedShift to store data.   Advantages of Serverless with Java Serverless applications offer the following advantages: Simple delivery - Using cloud services to build a Java application and writing the smallest possible amount of code is quite an effective and attractive model. Developers are relieved from having to create boilerplate,... --- ### Rollbar Research Shows Developers Feel Most Productive When Creating Better Quality Code - Published: 2022-07-12 - Modified: 2022-09-28 - URL: https://rollbar.com/press/rollbar-research-shows-developers-feel-most-productive-when-creating-better-quality-code/ SAN FRANCISCO--(BUSINESS WIRE)--New research from Rollbar, provider of real-time error monitoring Software as a Service, indicates that nearly a third (32%) of CTOs, developers, engineers and technical leads feel the most productive when they are creating better quality code – and not just more code. Nearly as many (28%) said that meeting and exceeding their managers’ expectations is what makes them feel the most productive, while more than a quarter (26%) said that productivity means delivering more new product features and services. Meanwhile, just 13% said that they equate productivity with the quantity of code they create. This research is based on a national survey of more than 1,000 CTOs, developers, engineers and technical leads across sectors done on behalf of Rollbar by Propeller Insights in 2022. “Coding is hard, tedious work, and it’s easy for developers to become tired of it, especially amid the uncertainties created by COVID-19 and the changing global business landscape,” said Brian Rue, CEO and co-founder at Rollbar. “But, as our research highlights, developers care deeply about code quality and meeting business objectives, and they equate their productivity to these considerations and to improving product. And 76% of survey participants said that better tools could increase their productivity. So, managers and companies must keep developers engaged with new and challenging tasks, support them with new tools to code better and faster, and create environments that nurture creativity and acknowledge that burnout is real. ” Most organizations are already working on making all of that happen.... --- ### Rollbar Secures $11 Million Series B To Help Engineering Teams Release More Often - Published: 2020-03-03 - Modified: 2021-06-11 - URL: https://rollbar.com/press/rollbar-secures-11-million-series-b-to-help-engineering-teams-release-more-often/ SAN FRANCISCO, CA - March 4, 2020 -- Rollbar, provider of real-time error monitoring Software as a Service, today announces $11 million in Series B funding. The round was led by Runa Capital, an international VC firm headquartered in Silicon Valley that backs early-stage startups in deep tech and cloud business software. Long Light Capital and Blossom Street Ventures also participated in this round, along with existing investors Cota Capital, Bain Capital, and Patagonia Capital. Dmitry Galperin from Runa Capital will take a board seat. As every business becomes a software business, real advantages come from being able to iterate quickly and release continuously. And for that, automated release is not enough anymore, you also need automated response. Automated response includes being able to see, understand, and resolve problems in real-time across the entire software development lifecycle. And that's exactly what Rollbar is building. Rollbar provides an automated error response platform centered around its proprietary, customizable grouping engine. Its solution offers workflow capabilities and integrates seamlessly into the modern development stack. "Traditional monitoring doesn't give developers what they need to understand and respond to massive amounts of machine data. Developers need a better way to see where they're going. We're already working with more than 100,000 developers at over 4,000 customers, such as Twilio, Branch, Salesforce and Instacart to help them iterate faster and with more confidence. We're pleased with the support from Runa Capital as we scale our company," said Brian Rue, CEO and Co-Founder of Rollbar. Rollbar plans... --- ### What Are Cloud Native Java Applications & Architectures > Cloud-native Java is an approach to building and running a Java application that provides organizations with greater elasticity, resiliency, and portability. - Published: 2021-11-03 - Modified: 2022-06-23 - URL: https://rollbar.com/blog/what-is-cloud-native-java/ - Categories: topics - Tags: cloud native, java   What is Cloud Native Java Cloud-native has been one of the biggest trends in software development for quite a while. Developing, deploying and managing applications outside of local machines and entirely in the cloud offers countless opportunities to businesses. The cloud computing delivery model helps them bring new ideas to market faster and respond swiftly to customer requests. From a technical point of view, cloud-native development provides faster and lighter runtimes, reduces complexity and stabilizes applications. It provides distributed application architecture with elasticity and resilience that allows businesses to adapt quickly to ever-changing needs. Businesses that use Java to build cloud-native applications are major beneficiaries of this approach due to its popularity, consistency, reliability and scalability. Java concepts like containers, JVM optimizations, multi-purpose frameworks and native image technology offer further advantages. In this article, an introduction is provided into cloud-native development using Java, as well as the useful tools, components and approaches of cloud-native Java.   Key Components of Cloud Native Applications Cloud-native methodology incorporates the following architecture principles: Microservices: A microservice is a small, individual application that can be deployed, upgraded, scaled and restarted independently of other applications. A microservices architecture is a set of loosely coupled elements that run independently, each executing its own business logic, running its own process and communicating with other services via APIs or messaging. Microservices are lightweight compared to monolithic architectures and are great for building clean interfaces. Containers: Containers are an alternative to virtual machines (VMs) - leveraging a separate and... --- ### New UX From Rollbar Takes The Hassle Out Of Monitoring And Debugging Errors In Microservices - Published: 2019-12-15 - Modified: 2021-06-11 - URL: https://rollbar.com/press/new-ux-from-rollbar-takes-the-hassle-out-of-monitoring-and-debugging-errors-in-microservices/ Centralized Realtime View of Errors Helps Companies Deliver Better Customer Experiences SAN FRANCISCO – December 16, 2019 - Rollbar, provider of real-time error monitoring Software as a Service, announced today a new UX and interface that fully supports microservices and provides users with a much richer experience. As complex distributed architecture becomes the norm, Rollbar is working diligently to ensure its core user experience reflects this paradigm shift by adopting powerful multi-project views across the entire user workflow. Rollbar’s new UX allows users to monitor all microservices with one tool in one view and receive real-time alerts on errors across multiple services with its multi-project filter. Developers know exactly where the error occurred, how many times, and why. They can also track deploy version quality across one or every microservice in a single glance. And users can set up their own personal workspace for services or projects they are working on with powerful filters for projects, environments, frameworks, and error severity that persist across different views. “When Rollbar was first introduced, practices such as microservice architecture and continuous delivery weren’t as common,” said Cory Virok, co-founder and CTO of Rollbar. “But most enterprises have or are in the process of migrating to a microservices model, which was the primary driving force behind our new UX. ” With the new UX, Rollbar users can have their own personal workspace for services or projects they care about. Whether looking at the main dashboard, the Items view, or Versions, users only see what... --- ### Rollbar Announces First Error Monitoring Solution For Salesforce Apex Platform - Published: 2019-11-13 - Modified: 2021-06-11 - URL: https://rollbar.com/press/rollbar-announces-first-error-monitoring-solution-for-salesforce-apex-platform/ Four Million Salesforce Developers Can Now Find and Fix Errors in Apex Apps in Real-Time SAN FRANCISCO – November 13, 2019 -- Rollbar, provider of real-time error monitoring Software as a Service, announced today the first error monitoring solution for Salesforce’s Apex platform. Rollbar’s automatic error detection and analysis solution empowers Salesforce customers and partners using its Apex platform with customizable tools and filters that greatly reduce the time it takes to detect and fix errors in code. There are currently more than four million developers on the Salesforce platform and thousands of ISVs that have built apps on Apex. Apex is a strongly typed, object-oriented programming language that allows developers to execute flow and transaction control statements on Salesforce servers in conjunction with calls to the API. Using syntax that looks like Java and acts like database stored procedures, Apex enables developers to add business logic to most system events, including button clicks, related record updates and Visualforce pages. “The idea to develop a Rollbar solution for Apex was really driven by our customers, who are increasingly utilizing this robust platform to develop a wide variety of applications,” said Francesco Crippa, VP of engineering at Rollbar. “Salesforce developers can now monitor Apex applications they’ve created in real-time and see if anything is broken, where it’s broken, does it matter, and how to fix it, which saves time and human resources and gets applications to the market sooner. ” Whether developing apps internally to extend the functionality of Salesforce or... --- ### Quarkus vs Spring Boot: Which Framework is Right for You > If you’re vacillating between the extremely popular Quarkus and Spring Boot microservices frameworks for building cloud-native Java apps, we’re here to help. - Published: 2021-11-01 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/quarkus-vs-spring-boot/ - Categories: Code Tutorials, Java - Tags: frameworks, spring In modern application architecture and development, there has been a push from monolithic applications towards microservices. This has made microservices frameworks (micro-frameworks) very popular since they make it easier to prototype, design and build microservices applications. Spring Boot and Quarkus are both very popular microservices frameworks for building cloud native Java applications. In this article, several features of Spring Boot and Quarkus will be discussed such as core capabilities, memory consumption, ease of development and performance to help developers decide which one to pick for building their application. What is Quarkus? Quarkus is a Kubernetes native Java framework for developing and delivering small artefacts and is an effective platform for serverless, cloud-native environments. Quarkus is similar to Spring Boot but with an additional promise of faster boot times, lower request times and offers developers a unified reactive and imperative programming model to address a broad range of distributed application architectures optimally. Quarkus is designed to work with popular Java frameworks, libraries and environments such as Eclipse Microprofile, Spring, Kafka and Hibernate. Quarkus provides dependency injection and is an extensive framework to set-up, boot and integrate applications. Quarkus Pros and Cons Some of the pros and cons of Quarkus are listed below: Pros: Lots of simple documentation is available on the web since it has several communities to help developers. The application boot time is much faster with Quarkus compared to other frameworks such as Spring Boot. This is because of the build-time metadata processing mechanism and the fact that standalone... --- ### Rollbar to Offer Its Error-Monitoring Solution on Google Cloud Platform Marketplace - Published: 2019-04-08 - Modified: 2021-06-11 - URL: https://rollbar.com/press/rollbar-to-offer-its-error-monitoring-solution-on-google-cloud-platform-marketplace/ SAN FRANCISCO - April 9, 2019 -- Rollbar, provider of real-time error monitoring Software as a Service, announced today its partnership with Google Cloud and its availability on the Google Cloud Platform (GCP) Marketplace. Rollbar provides automatic error detection and analysis centered around its customizable grouping engine. GCP Marketplace lets users quickly deploy software that runs on Google Cloud Platform and allows customers to easily start up a familiar software package with Google Cloud services, with no manual configuration required. With debugging taking up to 50 percent of software development time, adding Rollbar’s error-monitoring solution to the GCP Marketplace means customers now have instant access to a cutting-edge solution that enables developers and DevOps teams to monitor errors in real-time as new software is built and deployed, notify the right team of an error, and have rich contextual data for debugging the error faster across the development lifecycle. With Rollbar, engineering teams can detect application errors and resolve them quickly - greatly reducing time and human resources spent on traditional debugging. “Availability on the GCP Marketplace empowers development teams to take advantage of Rollbar’s real-time error monitoring solution - enabling them to release their software with confidence by providing visibility into the quality of code throughout their development lifecycle,” said Brian Rue, CEO of Rollbar. GCP Marketplace supports ready-to-go technology stacks to accelerate development. Deploying Rollbar into any GCP environment is fast and easy, and billing is simplified because Rollbar shows up as a line item in the monthly GCP... --- ### Rollbar Acquires Hungary-Based Samebug - Published: 2019-02-24 - Modified: 2022-07-20 - URL: https://rollbar.com/press/rollbar-acquires-hungary-based-samebug/ SAN FRANCISCO and BUDAPEST, February 25, 2019 -- Rollbar, provider of real-time error monitoring Software as a Service, announced today it has acquired Hungary-based Samebug, in a strategic move that further deepens its domain expertise in grouping and allows for integration of proprietary Samebug technology into its error monitoring solution. It also allows Rollbar to quickly grow its engineering team and have greater access to European customers. A study, published in InfoQ, shows debugging takes up to 50 percent of the development cycle, and that it’s twice as hard as writing code in the first place. Rollbar enables developers and DevOps teams to monitor errors in real-time as new software is built and deployed, notify the right team of an error, and provide rich contextual data for debugging the error faster across the development lifecycle. With Rollbar, engineering teams can detect application errors and resolve them quickly - greatly reducing time and human resources spent on traditional debugging, which can better be used elsewhere. Samebug was founded by CEO, Renáta Tamási-Irsai, a recognized entrepreneur and innovator who was the second-place winner at the prestigious CEE Women Startup Competition, along with CTO Árpád Tamási and lead developer Dániel Poroszkai. “We are very excited to be part of the Rollbar family and ready to tackle the challenges associated with this fast-growing market,” said Renáta. “Our goal is to change how developers, in any industry, code and debug, providing solutions to software problems (crashes) automatically whenever it’s needed, in a form it’s needed.... --- ### Scary Developer Stories to Tell in The Dark > We've all heard developer horror stories. Here are some that you submitted to Rollbar. Make sure to turn on the light and read on with caution! - Published: 2021-10-27 - Modified: 2022-05-03 - URL: https://rollbar.com/blog/developer-horror-stories-2021/ - Categories: topics - Tags: error-handling Twas the night of production, and all through the server, all the bugs were stirring... We've all heard the developer horror stories or have had our fair share of shocking experiences as a developer tackling an unfortunate event. To keep up with the Halloween season, we wanted to hear some of the spooky encounters that developers dealt with. Here are some of the stories that you submitted to Rollbar. Make sure to turn on the light and read with caution! 1. A Nightmare in Production "I learned the hard way never to use the “latest” tag for Docker images in production. One of my projects used a base image from an open source project that packaged an optical character recognition (OCR) model. I used the latest tag and my Continuous Delivery process would build the image from the ground up, whereas my local dev environment kept using its cache of the base image. This was fine for a year, but then the pandemic started and suddenly that open source project was on fire — causing major updates to the image every 12 hours. Things started changing too fast and the inevitable incompatibility with my code happened about a week in when my CD process merged my code with an incompatible update to the image. " - Anonymous Developer at Transport Company 2. "Psycho" "I'm most frightened by bugs for which the development environment behaves entirely differently than production, so I'll tell you one of those. One time, I had to... --- ### A Rollbar felvásárolja a Samebugot - Published: 2019-02-24 - Modified: 2021-06-11 - URL: https://rollbar.com/press/rollbar-acquires-hungary-based-samebug-hu/ San Francisco & BUDAPEST, 25 február 2019 -- A szoftverhibák valós idejű monitorozását végző szoftvercég, a Rollbar felvásárolja a magyarországi székhelyű Samebugot. A stratégiai lépés célja a szoftverfejlesztés során felmerülő hibák csoportosításában szerzett eddig tudás mélyítése, valamint a Samebug technológiájának integrálása a jelenlegi szolgáltatásba. Egyben remek lehetőség ez arra is, hogy a Rollbar gyorsan növelje fejlesztői létszámát és könnyebben elérjék az európai ügyfeleiket. Egy InfoQ-ban megjelent tanulmány szerint a fejlesztők idejének nagyjából ötven százaléka telik hibakereséssel, vagyis debugginggal és javítással, ráadásul hibákat keresni kétszer olyan nehéz, mint kódot írni. A Rollbar megoldásával a fejlesztőcsapatok valós időben, a szoftverek megírásával egyidőben követhetik nyomon a hibákat és azonnal értesíthetik a megfelelő csapatot, hogy azok javítsák a problémát. Ezzel kellő mennyiségű adatot szolgáltatnak és maga a hibakeresés folyamata is felgyorsul - az így felszabaduló erőforrást új célok elérésére tudják használni. A Samebugot hárman alapították, Tamási-Irsai Renáta cégvezető, Tamási Árpád technológiai vezető és Poroszkai Dániel vezető fejlesztő. "Büszkék vagyunk arra, hogy a kaliforniai Rollbar csapat tagjaivá válunk és együtt nézünk szembe a gyorsan növekvő piac kihívásaival", mondta Tamási-Irsai Renáta. "Célunk, hogy megváltoztassuk ahogyan a fejlesztők kódolnak és hibákat javítanak azzal, hogy automatikus megoldásokat nyújtunk a szoftveres problémákra olyan formában és ott, ahol azokra szükség van. ” "Ez a felvásárlás megszilárdítja a Rollbar vezető pozícióját az ágazatban", ezt Salil Deshpande, a Palo Alto-i Bain Capital Ventures igazgatója mondta, cége hatmillió dollárt fektetett a Rollbarba. "A valós idejű hibakeresés gyorsan válik minden fejlesztő eszköztárának meghatározó részévé, a Samebug technológiájának és szakértelmének integrációjával a Rollbar elsődleges választása... --- ### Series A Funding - Published: 2017-10-22 - Modified: 2021-06-11 - URL: https://rollbar.com/press/series-a-funding/ --- ## Testimonials ### How to Throw & Handle Scala Exceptions > Here's how to respond to and investigate the cause of exceptions in Scala: 1. Try/Catch → 2. Finally Clauses → 3. Custom Exceptions. - Published: 2021-10-21 - Modified: 2022-11-28 - URL: https://rollbar.com/blog/how-to-throw-handle-scala-exceptions/ - Categories: Code Tutorials, Scala - Tags: Scala An exception is an unwanted or unexpected event that occurs during the execution of a program which changes its normal flow. Exception handling is the mechanism to respond to and investigate the occurrence and cause of an exception. Generally, exceptions are of two types - checked and unchecked. Scala only allows unchecked exceptions - this means that there is no way to know if a method throws an unhandled exception at compile-time It is best practice in Scala to handle exceptions using a try{... } catch{... } block, similar to how it is used in Java, except that the catch block uses pattern matching to identify and handle exceptions.   Scala Exceptions Hierarchy All exception and error types in Scala are subclasses of the Throwable class, the base class of the Scala exception hierarchy: Fig1: Scala Exceptions Hierarchy As evident from the diagram shown above, one branch of the hierarchy under Throwable is headed by Exception, which is the class used for exceptional conditions that programs should catch. An example of an exception is NullPointerException. Another branch is Error, which is used by the Java Virtual Machine (JVM) to indicate errors that are related to the Java runtime environment itself (JRE). An example of an error is StackOverflowError.   Throwing Exceptions in Scala Throwing exceptions in Scala is very similar to how it's done in Java. An exception object is created and thrown using the throw keyword. Here is an example: throw new IllegalArgumentException   Scala try/catch Construct Scala allows... --- ### 6 Ways Artificial Intelligence Improves Software Development - Published: 2021-09-20 - Modified: 2021-09-30 - URL: https://rollbar.com/blog/6-ways-artificial-intelligence-improves-software-development/ - Categories: topics Artificial intelligence is transforming software development. From the code to the deployment, AI is slowly but surely upping its game and helping us discover a brand new paradigm for inventing technology. Algorithm-based machine learning is being used to accelerate the software development lifecycle and AI is supporting developers to optimize software workflow at every stage of the development process. We can expect big things in the future as AI brings in disruptive developments for software developers. As AI redefines how developers work and how their codeis built and managed, the industry should improve in leaps and bounds in terms of productivity, quality, and speed. Artificial intelligence is a term for computer systems that can perform tasks that require human intelligence and discernment, like the ability to reason, perceive, and generalize. The computer should be able to sense its environment and take action according to what it learns. AI algorithms can improve project planning, aid with automation QA (quality assurance), and enhance user experience. A recent report found that AI-enhanced software development increased the productivity of a developer by 10 times. Here are some ways AI can power your software development and deployment processes by automating various cognitive and physical tasks. 1. Increase in the Speed and Scale of Development How DevOps will change once AI is rooted within every part of it can be judged by key aspects of software delivery performance. Deployment frequency, lead time for changes, and time to restore service are all key performance indicators that are... --- ### What is the Quickest Way to Show All PHP Errors > Viewing PHP errors is critical for developers to troubleshoot an application. Learn how to show all PHP errors and warning notifications. - Published: 2021-09-16 - Modified: 2022-12-12 - URL: https://rollbar.com/blog/what-is-the-quickest-way-to-show-all-php-errors/ - Categories: Code Tutorials, PHP - Tags: PHP A PHP application may produce many different levels of errors and warnings when executed. Viewing these errors is critical for developers to troubleshoot an application. However, difficulties are often encountered when trying to display errors from PHP applications, which often fail silently. Quickest Way to Show All PHP Errors Adding the following lines to your PHP code is the quickest way to show all PHP errors and warnings: ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL); The above functions are directives work as follows: ini_set The ini_set function tries to override the configuration found in the PHP . ini file. display_errors The display_errors is a directive that determines whether the errors will be shown to the user or remain hidden. This should usually be disabled after development. display_startup_errors The display_startup_errors is also a directive, which is used to find the errors encountered during the PHP startup sequence. This is a separate directive because the display_errors directive does not handle such errors. Unfortunately, the display_errors and display_startup_errors directives do not show parse errors such as missing semicolons or curly braces. The PHP ini configuration must be modified to achieve this. error_reporting The error_reporting is a native PHP function that is used to show errors. This function can be used to report all types of errors in the PHP script. For that, the named constant E_ALL is used as the argument in the function. Configure PHP. ini to Display All Errors and Warnings If adding the above functions and directives does not show all errors,... --- ### Anonymous ThredUP (Results) - Published: 2021-10-18 - Modified: 2021-10-18 - URL: https://rollbar.com/?testimonial=anonymous-thredup-results --- ### Anonymous ThredUP (Strategy #2) - Published: 2021-10-18 - Modified: 2021-10-18 - URL: https://rollbar.com/?testimonial=anonymous-thredup-strategy-2 --- ### .NET Error Logging Best Practices > Following .Net error logging best practices helps make sure they contain the right information when needed. - Published: 2021-08-25 - Modified: 2022-12-15 - URL: https://rollbar.com/blog/dotnet-error-logging-best-practices/ - Categories: .NET, Code Tutorials - Tags: dotnet Following best practices when logging helps make sure they contain the right information when needed. Some common best practices for logging errors in . NET are listed below: Install the DotNET SDK for fast error logging 1. Use a Third Party . NET Logging Library Logging frameworks in . NET such as NLog, Log4Net and Serilog provide high level APIs and handle the heavy lifting involved with logging errors. This helps developers use a field-tested option and not reinvent the wheel. Choosing the right library for . NET frameworks depends on the application architecture but these libraries are quite similar in functionality at a high level. 2. Using . NET Logging Levels Logging frameworks associate a log level to each message by default. The levels are usually - DEBUG, INFO, WARN, ERROR and FATAL. These levels are useful for conveying the kind of information being logged. ERROR indicates that an . NET error occurred in the application. Usually, ERROR messages should be logged when exceptions are caught. FATAL generally indicates that a major irrecoverable . NET error occurred that requires termination of the application. 3. Enabling Appropriate Log Levels in Production In a development or test environment, all . NET log messages of DEBUG level and above are useful and can be enabled for analysis. However, in production, only high-severity logs should be enabled. Usually, DEBUG and INFO levels should not be enabled - only WARN/ERROR and above. This helps improve performance, reduce storage and ensure more important . NET... --- ### Anonymous ThredUP (Strategy #1) - Published: 2021-10-18 - Modified: 2021-10-18 - URL: https://rollbar.com/?testimonial=anonymous-thredup-strategy-1 --- ### Plexus (Goal) - Published: 2021-09-17 - Modified: 2021-09-21 - URL: https://rollbar.com/?testimonial=plexus-goal --- ### Monolithic vs Microservices Architecture > We look at the key differences between using a monolithic and microservices architecture as well as their inherent strengths and weaknesses. - Published: 2021-08-13 - Modified: 2022-06-21 - URL: https://rollbar.com/blog/monolithic-vs-microservices-architecture/ - Categories: topics - Tags: business-impact Microservices are an accelerating trend thanks to rousing endorsements from the likes of Google, Netflix, and Amazon. The microservice architecture is advantageous for it’s scalability, agility and flexibility. In contrast, the monolithic approach is the traditional tried-and-true model for building software. It’s much easier to debug and test. But how do you know which approach is best for your organization? In this article, we look at the key differences between using a monolithic and microservices architecture as well as their inherent strengths and weaknesses. What is a Monolithic Architecture? The monolithic architecture is considered to be the traditional way of building an application. A monolithic application is usually built as a single unit and indivisible unit, generally comprising of the following layers: A database, usually an RDBMS (relational database management system), that consists of many tables. A server-side application that handles and serves client-side requests, retrieves and stores data from/to the database and executes business logic. A client-side UI (User Interface) that generally consists of HTML and/or Javascript pages running on a browser. The above layers group together to form a single logical executable. A monolithic application usually has one large codebase and lacks modularity. If any updates are needed in the system, developers must build and deploy the entire stack at once. What is a Microservices Architecture? The microservices architecture breaks down an application into a collection of smaller independent units. These units carry out application processes as separate services, each of which perform specific functions and have their... --- ### Plexus (Strategy) - Published: 2021-09-17 - Modified: 2021-09-21 - URL: https://rollbar.com/?testimonial=plexus-strategy --- ### Plexus (Results) - Published: 2021-09-17 - Modified: 2021-09-21 - URL: https://rollbar.com/?testimonial=plexus-results --- ### W. Habib - Everplans (light) As an agile - Published: 2021-07-28 - Modified: 2021-07-28 - URL: https://rollbar.com/?testimonial=w-habib-everplans-light-as-an-agile --- ### How to Make a Build vs. Buy Decision for a Software Solution > Sourcing the perfect product for your engineering team? Buying software is often the answer, but there is a lot you need to consider first. - Published: 2021-08-04 - Modified: 2021-09-16 - URL: https://rollbar.com/blog/build-vs-buy-software-solution/ - Categories: topics - Tags: build vs buy Buying software is often the answer for busy engineering teams in search of a quick solution with minimum aftercare. But while your team may be sure of the problem, how do you go about searching for a product to fix it? Far from being the 'easy option', there is a lot you need to consider before you invest in a bought solution – user experience, cost comparisons, and support features to name a few. Let’s explore some of the considerations when making a good decision. What do you and your organization need to get out of this solution? Discuss and define the problem you need to solve clearly and its scope so that you don’t over or under shoot with your solution. It’s worthwhile to put in the time to make sure that you don’t get a solution that is not going to scale or adapt as your needs grow or change. Make sure the codebases, APIs, frameworks, and tools that the solution will need to work with are defined so that you have your bases covered. Sound out the wider team in case others are also looking for the same or a similar solution so that their requirements get included. How do you approach the topic with your team and the relevant engineering stakeholders? Ask your engineers on the team for their feedback and their experience with the problem and how they have dealt with it in the past. Ask what tools they’ve used or in what other creative... --- ### A. Childs - Clubhouse (dark) Rollbar lets us - Published: 2021-07-28 - Modified: 2021-07-28 - URL: https://rollbar.com/?testimonial=a-childs-clubhouse-light-rollbar-lets-us --- ### Fintech (dark) The more you - Published: 2021-07-28 - Modified: 2021-07-28 - URL: https://rollbar.com/?testimonial=fintech-dark-the-more-you --- ### Automate Secure Access Management With Rollbar + Okta - Published: 2021-08-03 - Modified: 2023-01-25 - URL: https://rollbar.com/blog/automate-secure-access-management-with-rollbar-okta/ - Categories: product - Tags: access-management https://www. youtube. com/watch? v=RA6THYP5SgA&sub_confirmation=1 At Rollbar, we know security matters. Our customers represent the leading technology companies in the world today, and keeping their data secure is our top priority. Look no further than our investment in security and compliance. Rollbar is fully compliant with stringent industry standards like GDPR and HIPAA. We have also received ISO27001, SOC 2 Type 1, and Type 2 compliance certifications to ensure that even the most security-conscious companies can use our SaaS platform. We all agree that data privacy is an important part of security, so controlling access to your Rollbar account should matter too. Rollbar's integration with Okta ensures your account is more secure and simplifies your user and admin experience by automating Rollbar user lifecycle management. How Does Rollbar's Okta Integration Work? When you integrate Okta with Rollbar, you ensure only the right people access your Rollbar account by syncing Users and Groups in Okta with Users in Teams in Rollbar. When you assign a User to the Rollbar application in Okta, a user will be created in your Rollbar account. When she tries to access Rollbar for the first time, she will be prompted to log in via Okta and can seamlessly access the data she needs—no more asking "@here who can grant me access to our Rollbar account? " in Slack! When you assign a Group to the Rollbar application in Okta, a Team will be provisioned in your Rollbar account, and a Rollbar User will be created for each... --- ### J. Bazemore - Greenhouse (light) When you move - Published: 2021-07-28 - Modified: 2021-07-28 - URL: https://rollbar.com/?testimonial=j-bazemore --- ### R. Zuber - CircleCI (light) If you don't - Published: 2021-07-28 - Modified: 2021-07-28 - URL: https://rollbar.com/?testimonial=r-zuber-circleci-light-if-you-dont --- ### D. Rohov - CVENT (light) Rollbar has been - Published: 2021-07-28 - Modified: 2021-07-28 - URL: https://rollbar.com/?testimonial=d-rohov-cvent-light-rollbar-has-been --- ### Improve Error Detection and Speed Up Resolution in Selenium Tests - Published: 2021-08-03 - Modified: 2021-09-16 - URL: https://rollbar.com/blog/improve-error-detection-and-speed-up-resolution-in-selenium-tests/ - Categories: Code Tutorials - Tags: Selenium Reducing errors in production is critical for all engineering teams. The earlier the error is detected, the cheaper it is to fix and the lower the impact it has on your development team and customer experience. The shift-left movement has pushed more and more of this test automation work on development teams even though the way to debug a failed test and find the root cause is still inefficient and time consuming for all developers. There is a better way to detect, identify and resolve errors in your applications when executing your automated testing suite. Developer Pain with Automated Tests Automated Test Report does not show the full error stack trace. Missing detail to understand and fix the root cause. Debug process is time consuming to re-run test script and debug locally. Reproducing errors is often inconsistent or impossible. Environment may lack exact data points and variables to accurately reproduce the error. What do we have to do today? Let’s look at a practical example of what most development teams do today. Imagine that we’ve run our automated test and some failure occurred. If you have a QA team your first question is; what failed? The QA team will point you to the test results of the failed test case or test suite. The test failure happens in most cases because of an assert that failed in the test case without any other information. Example Assert: Assert. assertNotEquals(Actual, Expected); Example Test Failure Report We can see the exact step that... --- ### D Rohov - CVENT (light) You could have - Published: 2021-07-28 - Modified: 2021-07-28 - URL: https://rollbar.com/?testimonial=d-rohov-cvent-light-you-could-have --- ### Can Constructors Throw Exceptions in Java > The short answer is yes! Of course, properly implementing exceptions in your constructors is essential to getting the best results. Learn how here. - Published: 2021-07-30 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/can-constructors-throw-exceptions-in-java/ - Categories: Code Tutorials, Java - Tags: java A well-written Java constructor is a beautiful thing. Taking advantage of these special methods allows you to initialize an object with data when you instantiate it. Additionally, using constructors to their fullest can help you maintain clean, organized code. However, what happens if some of the data passed to the object through the constructor is invalid? Exception handling is the key. The short answer to the question “can a constructor throw an exception in Java” is yes! Of course, properly implementing exceptions in your constructors is essential to getting the best results and optimizing your code. To do so, it is valuable to understand constructors, exceptions, how they work together and best practices for using both. Java Constructors A constructor is a special method used to instantiate an object. The following is an example of a very simple constructor being called to create an object: ExClass newObject = new ExClass; The section “ExClass” is the constructor method. This is what the constructor definition may look like in the class: public class ExClass { public ExClass {} } The above example would be unnecessary because Java automatically creates a no-argument constructor for all classes that don’t have other constructors. Typically, if you define a constructor in a class, it is so that you can pass data to the object through parameters. This is an example of that: public class ExClass { private int value = 0; public ExClass(int valueInput){ value = valueInput; } } When you instantiate this class, you would... --- ### D. Rohov - CVENT (light) The out of the - Published: 2021-07-28 - Modified: 2021-07-28 - URL: https://rollbar.com/?testimonial=d-rohov-cvent-light-the-out-of-the --- ### How to Solve the Most Common Runtime Errors in Java > A runtime error in Java is an application error that occurs during the execution of a program. Learn how to solve the most common runtime errors in Java. - Published: 2021-07-29 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/most-common-java-runtime-errors/ - Categories: Code Tutorials, Java - Tags: java A runtime error in Java is an application error that occurs during the execution of a program. A runtime error occurs when a program is syntactically correct but contains an issue that is only detected during program execution. These issues cannot be caught at compile-time by the Java compiler and are only detected by the Java Virtual Machine (JVM) when the application is running. Runtime errors are a category of exception that contains several more specific error types. Some of the most common types of runtime errors are: IO errors Division by zero errors Out of range errors Undefined object errors Runtime Errors vs Compile-Time Errors Compile-time errors occur when there are syntactical issues present in application code, for example, missing semicolons or parentheses, misspelled keywords or usage of undeclared variables. These syntax errors are detected by the Java compiler at compile-time and an error message is displayed on the screen. The compiler prevents the code from being executed until the error is fixed. Therefore, these errors must be addressed by debugging before the program can be successfully run. On the other hand, runtime errors occur during program execution (the interpretation phase), after compilation has taken place. Any code that throws a runtime error is therefore syntactically correct. Runtime Errors vs Logical Errors A runtime error could potentially be a legitimate issue in code, for example, incorrectly formatted input data or lack of resources (e. g. insufficient memory or disk space). When a runtime error occurs in Java, the compiler... --- ### H. Villafuerte – Duolingo – light – I really can't imagine... - Published: 2021-07-28 - Modified: 2021-07-28 - URL: https://rollbar.com/?testimonial=h-villafuerte-duolingo-light-i-really-cant-imagine --- ### Tyler Wells - Twilio (light) if a tool - Published: 2021-07-28 - Modified: 2021-07-28 - URL: https://rollbar.com/?testimonial=tyler-wells-twilio-light-if-a-tool --- ### Introducing the New Rollbar Integration for GitHub Enterprise Server > We’re excited to launch our new integration with GitHub that supports GitHub Enterprise Server customers. This allows companies using GitHub… - Published: 2021-07-28 - Modified: 2021-09-16 - URL: https://rollbar.com/blog/introducing-the-new-rollbar-integration-for-github-enterprise-server/ - Categories: product - Tags: integrations We’re excited to launch our new integration with GitHub that supports GitHub Enterprise Server customers. This allows companies using GitHub Enterprise on their own domains to access key features in Rollbar that help developers fix errors faster. GitHub Enterprise offers a fully integrated development platform for organizations to accelerate software innovation and secure delivery. With Rollbar, GitHub Enterprise Server customers can now access: Code-context with the exact line of code in the stack trace that caused an error Git blame information for the offending line of code directly within the Rollbar application Spend More Time Building, Less Time Fixing We believe that developers should be spending as much time as possible on building new features and less time fixing bugs. With expanded availability for GitHub Enterprise Server, enterprises can now reduce the time it takes them to resolve bugs and spend more time building and scaling software. Debug Faster With More Context Let’s dig a little deeper into the features to see how a developer might use them. Let’s say you get a notification for a new or reactivated error in Rollbar. To get to the root cause, you can go to the Traceback in the Item details page and see the exact line of the code that caused the error in each frame of the stack trace directly within the Rollbar UI. This is the ‘Code Context’ functionality that helps developers save time and see critical information instantly in Rollbar. Now, you may want to get more context on... --- ### H. Villafuerte - Duolingo - light - Rollbar helps make... - Published: 2021-07-28 - Modified: 2021-07-28 - URL: https://rollbar.com/?testimonial=h-villafuerte-duolingo-light-rollbar-helps-make --- ### R. Zuber (circle - dark) - Published: 2021-06-02 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=r-zuber-circle-dark --- ### Accelerating Code Quality with DORA Metrics > DORA metrics help DevOps teams make data-driven decisions to continuously improve practices, deliver software faster, and ensure that it remains reliable. - Published: 2021-07-24 - Modified: 2022-06-21 - URL: https://rollbar.com/blog/accelerating-code-quality-with-dora-metrics/ - Categories: topics - Tags: dora-metrics What do Google’s DevOps Research and Assessment (DORA) and Rollbar have to do with each other? DORA identified four key metrics to measure DevOps performance and identified four levels of DevOps performance from Low to Elite. One way for a team to become an Elite DevOps performer is by focusing on Continuous Code Improvement. What is DORA? The DevOps Research and Assessment (DORA) team is a Google research group that is best known for its work on measuring and understanding DevOps practices and capabilities across the IT industry. The group produced an annual State of Devops Report (2014-2019) as well as an ROI whitepaper providing insights into DevOps transformations. The DORA team identified four key metrics that indicate software development and delivery performance. To find out more about the findings we recommend reading a book called “Accelerate: The Science of Lean Software and Devops: Building and Scaling High Performing Technology Organizations” - co-authored by Nicole Forsgren who is a DORA team lead. What is Continuous Code Improvement? Continuous Code Improvement is an approach to maintaining and updating any software application that allows for faster deployments, fewer errors and quicker fixes to problems. Companies that follow this approach have a compact feedback loop to know when there's a code issue that needs to be fixed, fix it, and go back to writing and running code. The continuous code improvement feedback loops consists of: Visibility — real-time identification that there is an issue Grouping — recognizing error patterns to provide trustworthy signals... --- ### T. Wells (circle - dark) - Published: 2021-06-02 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=t-wells-circle-dark --- ### S. Hacker (circle - dark) - Published: 2021-06-02 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=s-hacker-circle --- ### Duolingo - Hacker (light) - Published: 2021-05-26 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=duolingo-hacker-light --- ### Handling Node.js Exceptions > Debugging errors is the hardest part of programming. Errors can appear in your code in a variety of ways, whether as syntax errors, errors… - Published: 2021-07-23 - Modified: 2024-01-02 - URL: https://rollbar.com/blog/handling-node-js-exceptions/ - Categories: Code Tutorials, JavaScript - Tags: Node.js Debugging errors is the hardest part of programming. Errors can appear in your code in a variety of ways, whether as syntax errors, errors in logic, or the most dreaded of all, runtime errors. Runtime errors occur whenever something unexpected occurs in your application, and they often lead to catastrophic issues that can crash your program. Like many languages, Node. js provides a mechanism to anticipate errors before they occur. When an error occurs in your code, it turns into an object called an exception. Properly handling these exceptions allows you to recover gracefully from unforeseen issues, resulting in a much better user experience. In this post, we'll take a look at what causes these errors in Node. js, and how to recover from them. What can cause an error exception in Node. js? Runtime errors can occur in a variety of ways. One example includes referencing an undefined variable, or passing the wrong type to an argument. Other common Node. js errors include: EvalError: errors that occur within the global function eval RangeError: these errors occur when you attempt to access a variable outside its range, such as trying to get the fifth element of an array with only three items ReferenceError: these errors arise when you attempt to use a variable that doesn't exist SyntaxError: these errors come from invalid code TypeError: this occurs when you attempt to use a variable that is not a valid type URIError: this error occurs whenever encodeURI or decodeURI are given invalid... --- ### D. Rohov - CVENT (dark) - Published: 2021-05-26 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=d-rohov-cvent-dark --- ### R. Zuber - CircleCI (dark) - Published: 2021-05-26 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=r-zuber-circleci-dark --- ### How to Throw Exceptions in Python > This guide is the ultimate resource for Python developers who want to design, implement, and maintain applications that can deal with errors properly. - Published: 2021-07-23 - Modified: 2023-07-31 - URL: https://rollbar.com/blog/throwing-exceptions-in-python/ - Categories: Code Tutorials, Python - Tags: Python Introduction Software applications don’t run perfectly all the time. Despite intensive debugging and multiple testing levels, applications still fail. Bad data, broken network connectivity, corrupted databases, memory pressures, and unexpected user inputs can all prevent an application from performing normally. When such an event occurs, and the app is unable to continue its normal flow, this is known as an exception. And it's your application's job—and your job as a coder—to catch and handle these exceptions gracefully so that your app keeps working. Install the Python SDK to identify and fix exceptions What Are Python Exceptions? Exceptions in Python applications can happen for many of the reasons stated above and more; and if they aren't handled well, these exceptions can cause the program to crash, causing data loss, or worse, corrupted data. As a Python developer, you need to think about possible exception situations and include error handling in your code. Fortunately, Python comes with a robust error handling framework. Using structured exception handling and a set of pre-defined exceptions, Python programs can determine the error type at run time and act accordingly. These can include actions like taking an alternate path, using default values, or prompting for correct input. This article will show you how to raise exceptions in your Python code and how to address exceptions.   Difference Between Python Syntax Errors and Python Exceptions Before diving in, it's important to understand the two types of unwanted conditions in Python programming—syntax error and exception. The syntax error exception... --- ### T. Wells - Twilio (dark) - Published: 2021-05-26 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=t-wells-twilio-dark --- ### M. Blaze - Duolingo (dark) - Published: 2021-05-26 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=m-blaze-duolingo-dark --- ### C. Amadieh - Cvent (dark) - Published: 2021-05-26 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=c-amadieh-cvent-dark --- ### Most Common Java Exceptions > We take a look at how Java handles exceptions, checked vs. unchecked exceptions, and then the ten most common exceptions you’ll face in Java. - Published: 2021-07-19 - Modified: 2022-11-28 - URL: https://rollbar.com/blog/most-common-java-exceptions/ - Categories: Code Tutorials, Java - Tags: java Like most modern programming languages, Java includes the concept of exceptions to handle both errors and "exceptional events. " When an exception occurs in your code, it disrupts the normal instruction logic and abnormally terminates the process. However, with a little foresight and code, you can often handle these exceptions gracefully, allowing your code to continue running and providing insight for tracking down the root cause of the unexpected result. In this article, we’ll take a brief look at how Java handles exceptions, the difference between checked and unchecked exceptions, and then walk through ten of the most common exceptions you’ll face in Java, and why they might occur. How Java Handles Exceptions When an exception occurs within a class or method, the method/class creates an exception object and hands the results to the runtime system (JVM). The runtime system then travels over the call stack in order to determine what layer can handle the exception that was created or thrown. The search begins with the method in which the exception was created, then walks sequentially through the call stack until it finds an exception handler. When the type of exception matches a type that can be handled by the exception handler, it finds a match. Consider the following stack trace example: If an uncaught exception occurs in the Worker class, the exception will flow to the Service class. If no handler exists in the Service class, then the exception will flow through the stack trace to the Controller class.... --- ### M. Blaze - Duolingo (light) - Published: 2021-05-13 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=m-blaze-duolingo --- ### C. Amadieh - Cvent (Light) Anytime you fix - Published: 2021-05-13 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=c-amadieh --- ### Spring Boot Logging > Logging in Spring Boot is very flexible and easy to configure. Spring Boot supports various logging providers. Learn more about Spring Boot logging here. - Published: 2021-07-19 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/spring-boot-logging/ - Categories: Code Tutorials, Java - Tags: java, spring Logging in Spring Boot is very flexible and easy to configure. Spring Boot uses Apache Commons Logging for internal logging but allows developers to configure the underlying log implementation. Various logging providers are supported through simple configuration. Spring Boot provides default configurations for Java Util Logging, Log4J2 and Logback. Each logging provider is preconfigured to use console output with optional file output available as well. Spring Boot applications need to collect log data to help troubleshoot and fix issues in code, as well as measure business metrics. Zero Configuration Logging Spring Boot auto-tunes the majority of the configuration settings within an application so that developers can focus on the code. The only required dependency for logging using Spring Boot is Apache Commons Logging. When using Spring Boot 2. x, the spring-boot-starter-logging starter pulls in the spring-jcl module, which contains the Apache Commons Logging provider. If using Spring Boot 1. x, Apache Commons Loggingem> needs to be imported explicitly. When Spring Boot starters are used, Logback is used for logging by default. The default Logback implementation logs the output to the console at the info level. Logback routing is included as well to ensure support for Apache Commons Logging, Java Util Logging, Log4J and SLF4J. Spring Boot Logging Levels A logger logs a message with a specific logging level. Spring Boot provides the following logging levels: TRACE DEBUG INFO WARN ERROR All supported logging providers can have the logging level set in the Spring Environment using the following syntax: logging. level.... --- ### T. Wells - Twilio (light) - Published: 2021-05-13 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=t-wells-twilio --- ### R. Zuber - CircleCI (light) - Published: 2021-05-13 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=r-zuber-circleci --- ### How to Solve ClassCastException in Java > When your code attempts to cast an object to another class of which the original object is not an instance, a ClassCastException is thrown. Learn how to fix it. - Published: 2021-07-19 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/how-to-solve-classcastexception-in-java/ - Categories: Code Tutorials, Java - Tags: java If a ClassCastException is one of the most common exceptions in Java. It is a runtime exception that occurs when the application code attempts to cast an object to another class of which the original object is not an instance. For example, a String object cannot be cast to an Integer object and attempting to do so will result in a ClassCastException. Since the ClassCastException is an unchecked exception, it doesn't need to be declared in the throws clause of a method or constructor. Sources of ClassCastException Some of the most common sources of ClassCastException in Java are: Using collections like HashMap, ArrayList and HashTable which do not use Java Generics. Using methods which were written on interfaces prior to Java 5 that use polymorphism. Not using type-safety when casting objects in Java. ClassCastException Example Here is an example of a ClassCastException thrown when a String is attempted to be cast to an Integer: public class ClassCastExceptionExample { public static void main(String args) { Object obj = new String("Hello"); System. out. println((Integer) obj); } } In this example, the String obj is attempted to be cast to an Integer. Since it is not an instance of the Integer class, this operation throws a ClassCastException: Exception in thread "main" java. lang. ClassCastException: class java. lang. String cannot be cast to class java. lang. Integer at ClassCastExceptionExample. main(ClassCastExceptionExample. java:4) How to Fix ClassCastException To fix the ClassCastException in the above example, the object type should be checked before performing the cast operation:... --- ### D. Rohov - CVENT (light) - Published: 2021-05-12 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=d-rohov-cvent --- ### Duolingo - Hacker (dark) - Published: 2021-04-05 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=duolingo-hacker --- ## Employees ### How to Resolve InvocationTargetException in Java > The InvocationTargetException wraps an exception thrown by an invoked method or constructor. Learn how to handle it. - Published: 2021-07-19 - Modified: 2024-07-24 - URL: https://rollbar.com/blog/how-to-resolve-invocationtargetexception-in-java/ - Categories: Code Tutorials, Java - Tags: java If a InvocationTargetException is a checked exception in Java that wraps an exception thrown by an invoked method or constructor. The method or constructor that throws the exception is invoked using the Method. invoke method. The InvocationTargetException is quite common when using the Java Reflection API. The Java reflection layer wraps any exception as an InvocationTargetException. This helps clarify whether the exception is caused by an issue in the reflection call or within the called method. What Causes InvocationTargetException The InvocationTargetException occurs mainly when working with the Java reflection API to invoke a method or constructor, which throws an exception. This underlying exception is the actual cause of the issue, therefore resolving the InvocationTargetException equates to finding and resolving the underlying exception that occurs within the invoked method. InvocationTargetException Example Here is an example of a InvocationTargetException thrown when a method that is called using Method. invoke throws an exception: import java. lang. reflect. InvocationTargetException; import java. lang. reflect. Method; public class InvocationTargetExceptionExample { public int divideByZero { return 1 / 0; } public static void main(String args) throws NoSuchMethodException, IllegalAccessException { InvocationTargetExceptionExample itee = new InvocationTargetExceptionExample; Method method = InvocationTargetExceptionExample. class. getMethod("divideByZero"); try { method. invoke(itee); } catch (InvocationTargetException ite) { ite. printStackTrace; } } } In this example, the main method invokes divideByZero using Method. invoke. Since divideByZero throws an ArithmeticException, it is wrapped within an InvocationTargetException thrown in the main method: java. lang. reflect. InvocationTargetException at java. base/jdk. internal. reflect. NativeMethodAccessorImpl. invoke0(Native Method) at java. base/jdk. internal.... --- ### How to Fix java.lang.NoSuchMethodError in Java > A java.lang.NoSuchMethodError is a runtime error which occurs when a method is called that exists at compile time, but does not exist at runtime. Let's fix it. - Published: 2021-07-19 - Modified: 2024-07-24 - URL: https://rollbar.com/blog/how-to-fix-java-lang-nosuchmethoderror-in-java/ - Categories: Code Tutorials, Java - Tags: java A java. lang. NoSuchMethodError is a runtime error in Java which occurs when a method is called that exists at compile-time, but does not exist at runtime. The Java Garbage Collector (GC) cannot free up the space required for a new object, which causes a java. lang. OutOfMemoryError. This error can also be thrown when the native memory is insufficient to support the loading of a Java class. What Causes java. lang. NoSuchMethodError The java. lang. NoSuchMethodError occurs when an application does not find a called method at runtime. Some of the most common causes for ajava. lang. NoSuchMethodError are: Breaking change in an third party library If an application calls a method in a third party library, which exists at compile time but not at runtime, it can cause a java. lang. NoSuchMethodError. The third party library may have introduced a breaking change from one version to another - for example, it may have removed the method being called. This usually indicates a problem with the build, since the method does exist at compile time but not at runtime. The version of the library used in the build may be different from the one used in the application code. Breaking change within an application A change in the class structure within an application can also cause a java. lang. NoSuchMethodError. This can happen in a multi-module application where a method may have been removed from the code in one module, which was called by another module. This also indicates... --- ### How to Fix OutOfMemoryError: Permgen Space Exceptions in Java > Is your permanent generation area in memory exhausted? Here's how to adjust the maximum size of the PermGen area and find out what caused this Java error. - Published: 2021-04-08 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/how-to-fix-java-lang-outofmemoryerror-permgen-space-exceptions-in-java/ - Categories: Code Tutorials, Java - Tags: java A java. lang. OutOfMemoryError: PermGen Space is a runtime error in Java which occurs when the permanent generation (PermGen) area in memory is exhausted. The PermGen area of the Java heap is used to store metadata such as class declarations, methods and object arrays. Therefore, the PermGen size requirements depend on the number of classes and methods as well as their size. Java memory is separated into different regions - Young, Tenured and PermGen. The sizes of these regions, including the PermGen area, are set when the JVM is launched. If these sizes are not specified, platform-specific defaults are used. Since Java applications are only allowed to use a limited amount of memory, the PermGen can easily be exhausted if there are a large number of classes, objects or methods in an application. The size of the PermGen can be specified using the JVM arguments -XX:PermSize and -XX:MaxPermSize depending on the application needs. What Causes java. lang. OutOfMemoryError: PermGen Space The PermGen area of the Java heap mostly contains the following: Class declarations, including class names and fields Methods with the method bytecode Constant pool information Object arrays and type arrays associated with a class Just In Time compiler optimizations The PermGen size depends on both the number of classes loaded as well as the size of class declarations. Therefore, the main cause for java. lang. OutOfMemoryError: PermGen space is either too many classes or too large classes loaded in the PermGen. java. lang. OutOfMemoryError: PermGen space Example Here is... --- ### Anler Hernandez Peral - Published: 2023-02-16 - Modified: 2023-02-16 - URL: https://rollbar.com/?employee=anler-hernandez-peral --- ### Cyrus Radfar - Published: 2022-06-30 - Modified: 2022-06-30 - URL: https://rollbar.com/?employee=cyrus-radfar --- ### Nick Hodges - Published: 2022-03-10 - Modified: 2022-06-30 - URL: https://rollbar.com/?employee=nick-hodges --- ### - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=1139 --- ### Juanjo Marrón - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=juanjo-marron --- ### Maggie Liu - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=maggie-liu --- ### Drew Meyers - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=drew-meyers --- ### Diego Veralli Bortheiry - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=diego-veralli-bortheiry --- ### Owen Linderholm - Published: 2021-05-05 - Modified: 2022-06-30 - URL: https://rollbar.com/?employee=owen-linderholm --- ### Rafael Moore Cid - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=rafael-moore-cid --- ### David Hackett - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=david-hackett --- ### Christian Fitzgerald - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=christian-fitzgerald --- ### Jennifer Vannoy - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=jennifer-vannoy --- ### Justin Hochsprung - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=justin-hochsprung --- ### Krisztián Griz - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=krisztian-griz --- ### Nitin Bhasin - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=nitin-bhasin --- ### Maria Stanley - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=maria-stanley --- ### Daniel McCoy - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=daniel-mccoy --- ### Rollbar Editorial Team - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=rollbar-editorial-team --- ### Pawel Szczodruch - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=pawel-szczodruch --- ### Patrick Bonner - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=patrick-bonner --- ### Nico Kruger - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=nico-kruger --- ### Jack Delahunt - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=jack-delahunt --- ### Nia Hampton - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=nia-hampton --- ### Queen Lee - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=queen-lee --- ### Gaurav Anand - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=gaurav-anand --- ### Hayden Kempton - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=hayden-kempton --- ### Ian Flanagan - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=ian-flanagan --- ### Israel Perez - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=israel-perez --- ### Matheas Hutcherson - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=matheas-hutcherson --- ### Abby Dugan - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=abby-dugan --- ### Martin Malloy - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=martin-malloy --- ### András Tarsoly - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=andras-tarsoly --- ### Dean Rizzo - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=dean-rizzo --- ### Jeffrey Hoffer - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=jeffrey-hoffer --- ### Alex Tkach - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=alex-tkach --- ### Nathan Sweet - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=nathan-sweet --- ### Oluwarotimi Joseph Olorunyomi - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=oluwarotimi-joseph-olorunyomi --- ### Yoz Grahame - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=yoz-grahame --- ### Ami Felson - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=ami-felson --- ### Tamsin Guy - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=tamsin-guy --- ### Omar Powell Guaglione - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=omar-powell-guaglione --- ### Árpád Fülöp - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=arpad-fulop --- ### Michael Ng - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=michael-ng --- ### Syed Ahmed - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=syed-ahmed --- ### Daniel Day - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=daniel-day --- ### Charles Roberts - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=charles-roberts --- ### Sachin Goyal - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=sachin-goyal --- ### Mrunal Kapade - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=mrunal-kapade --- ### Ryan Clark - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=ryan-clark --- ### Sami Atiq - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=sami-atiq --- ### Hardik "HK" Parekh - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=hardik-hk-parekh --- ### Angeline Junaedy - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=angeline-junaedy --- ### Finbar Fleming - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=finbar-fleming --- ### Eva Zhang - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=eva-zhang --- ### Zoltán Bődi - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=zoltan-bodi --- ### Phillip Ramirez - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=phillip-ramirez --- ### Christopher Seaman - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=christopher-seaman --- ### Julian Simpson - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=julian-simpson --- ### An Nguyen - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=an-nguyen --- ### Renee Wells-Wood - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=renee-wells-wood --- ### Jonathan Lilienthal - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=jonathan-lilienthal --- ### David Woller - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=david-woller --- ### Tin Nguyen - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=tin-nguyen --- ### Atsuko Nishiguchi - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=atsuko-nishiguchi --- ### Mani Askari - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=mani-askari --- ### Patrick Smyth - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=patrick-smyth --- ### Michael Mukhin - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=michael-mukhin --- ### Colin Flynn - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=colin-flynn --- ### Ramon Niebla - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=ramon-niebla --- ### Gianina Borcean - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=gianina-borcean --- ### Austen Lacy - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=austen-lacy --- ### Marcelo Oliveira - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=marcelo-oliveira --- ### Imran Rizvi - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=imran-rizvi --- ### Dmitry Mazin - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=dmitry-mazin --- ### Chris Maki - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=chris-maki --- ### Nicholas Vincent-Hill - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=nicholas-vincent-hill --- ### Gabriella Papp - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=gabriella-papp --- ### Lubos Parobek - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=lubos-parobek --- ### Mike French - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=mike-french --- ### Rachel Foster - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=rachel-foster --- ### Erwin Tung - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=erwin-tung --- ### Paul Moriarty - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=paul-moriarty --- ### Steve Beane - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=steve-beane --- ### Michael "MC" McCullough - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=michael-mc-mccullough --- ### David Basoco - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=david-basoco --- ### Francesco Crippa - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=francesco-crippa --- ### Anthony Tran - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=anthony-tran --- ### Kay Xiong - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=kay-xiong --- ### Sharrin Fuller - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=sharrin-fuller --- ### Artur Moczulski - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=artur-moczulski --- ### How to Detect Memory Leaks in Java: Causes, Types, & Tools > If memory leaks are not handled, your application can eventually run out of memory and terminate. Learn what causes memory leaks in Java and how to handle it. - Published: 2021-04-01 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/how-to-detect-memory-leaks-in-java-causes-types-tools/ - Categories: Code Tutorials, Java - Tags: java A memory leak is a situation where unused objects occupy unnecessary space in memory. Unused objects are typically removed by the Java Garbage Collector (GC) but in cases where objects are still being referenced, they are not eligible to be removed. As a result, these unused objects are unnecessarily maintained in memory. Memory leaks block access to resources and cause an application to consume more memory over time, leading to degrading system performance. If memory leaks are not handled, an application can eventually run out of memory and terminate with an 'OutOfMemoryError', which is irrecoverable. What Causes Memory Leaks in Java In general, a Java memory leak happens when an application unintentionally (due to logical errors in code) holds on to object references that are no longer required. These unintentional object references prevent the built-in Java garbage collection mechanism from freeing up the memory consumed by these objects. Common causes for these memory leaks are: Excessive session objects Insertion without deletion into Collection objects Unbounded caches Excessive operating system page swapping Un-invoked listener methods Poorly written custom data structures Types of Memory Leaks in Java Memory leaks can be of various types, depending on how they happen. The most common types are detailed below: 1. Through static Fields Excessive usage of static fields can potentially lead to a memory leak. In Java, static fields usually remain in memory as long as the application is running. Here’s an example: public class StaticFieldsMemoryLeakExample { private static List integers = new ArrayList; public... --- ### Andrey Kornich - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=andrey-kornich --- ### Mary Lee Olson - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=mary-lee-olson --- ### Jessica Hsieh - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=jessica-hsieh --- ### How to Debug Java Code Faster with Eclipse > Modern IDEs like Eclipse provide debugging tools that make it easier for developers to walk through their code interactively. Learn all the best practices here. - Published: 2021-03-26 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/how-to-debug-java-code-faster-with-eclipse/ - Categories: Code Tutorials, Java - Tags: java Java Debugging with Eclipse Debugging is the process of identifying and fixing any issues in the source code of a program. Modern IDEs like Eclipse provide debugging tools that make it easier for developers to walk through their code interactively and inspect it to spot and resolve any issues. Debugging support in Eclipse Eclipse allows running an application in Debug mode which helps with stepping through each line of code in a program. Eclipse also provides a Debug Perspective which is a set of views grouped together that help inspect code and make the debugging process very effective. Let’s walk through the steps of debugging a Java application with Eclipse using a simple program, as shown below: public class EclipseDebuggingExample { public int add(int a, int b) { int result = a + b; return result; } public static void main(String args) { EclipseDebuggingExample ede = new EclipseDebuggingExample; int a = 3; int b = 7; int result = ede. add(a, b); System. out. printf("%d + %d = %d", a, b, result); } } Two simple methods mainandaddare defined in the above code example. The main method calls the add method to add two integers a and b and return their sum. The steps for debugging this program are shown below: Step One: Set Breakpoints A breakpoint is a point in code where the program execution pauses during debugging. This allows the programmer to inspect code and the flow of execution at the defined breakpoint. To define a breakpoint, either... --- ### Letania Ferreira - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=letania-ferreira --- ### Vijay Selvaraj - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=vijay-selvaraj --- ### Renáta Tamási-Irsai - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=renata-tamasi-irsai --- ### Árpád Tamási - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=arpad-tamasi --- ### Dániel Poroszkai - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=daniel-poroszkai --- ### András Horváth - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=andras-horvath --- ### Announcing the Rollbar Terraform Provider For Managing Rollbar Automatically - Published: 2021-03-23 - Modified: 2021-09-08 - URL: https://rollbar.com/blog/announcing-the-rollbar-terraform-provider-for-managing-rollbar-automatically/ - Categories: product - Tags: integrations It can be really exciting when your development team is growing fast! But then you soon realize that managing all the developer tools to constantly create new projects or add users is becoming a full-time job. Well, not anymore. At least, not for Rollbar. We’re releasing our HashiCorp Terraform Verified Provider for Rollbar today, built in partnership with HashiCorp. Organizations can now provision and manage Rollbar accounts automatically through Terraform, the world’s most widely used multi-cloud provisioning product. We know that managing tools can become harder as teams scale. This shouldn’t get in the way of discovering and resolving errors in real-time across applications to ensure the desired customer experience. Our partnership with HashiCorp allows teams to solve this by utilizing infrastructure-as-code to manage Rollbar for the first time ever. Teams can easily automate several account management processes while saving time and preventing manual errors. This offers an easier way to manage your Rollbar account instead of relying on the UI or the API directly. “With the new HashiCorp Terraform Verified Provider for Rollbar, our joint customers can manage their Rollbar projects, tokens, users, and teams with ease. ” said Asvin Ramesh, Director, Technology Alliances, HashiCorp “ We are pleased to have Rollbar as a technology partner and look forward to our future collaboration”. What can you do with it? Manage projects and users with ease Terraform can control resources such as projects, teams, and users in your Rollbar account. You can use declarative config files to - Create, read,... --- ### Infographic: The State of Software Code - Published: 2021-03-16 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/infographic-the-state-of-software-code/ - Categories: topics - Tags: error-monitoring We surveyed nearly 1,000 developers across the U. S. to uncover key development trends and insights. Today’s businesses are software businesses. If there was any positive in 2020, it’s the power software has to allow us to continue in some “normal” sense. Learn how this survey uncovers how too many companies and their development teams still have a major blind spot when it comes to errors in their code. Take a look at our recent infographics for the highlights of the state of software code today. --- ### Announcing The 2021 State of Software Code Report - Published: 2021-02-17 - Modified: 2023-06-20 - URL: https://rollbar.com/blog/announcing-the-2021-state-of-software-code-report/ - Categories: topics - Tags: error-monitoring When Cory Virok and I started Rollbar in 2012, we knew something was lacking in how software was being built. Developers continue to get better everyday at building applications — the widespread adoption of microservices architectures and open source are evidence of this. But, we realized something was still holding us back. And that was how we track and fix bugs. We both personally felt the pain of spending hours, days, or even weeks investigating issues, combing through logs, to not just figure out how to fix a bug, but to figure out what the bug was. We had application performance monitoring (APM) tools but they only told us the health of our system and infrastructure. The rise of observability is helpful to gain that systematic insight as software becomes more complex. But we didn’t need to understand the health of our systems, we needed to know where our code was broken. I knew we weren’t the only developers lacking that insight, and I know that pain is still felt in companies, large and small, today. That’s why I’m excited to share our first “State of Software Code Report” that provides insights into the current state of how developers are building software and dealing with the inevitability of bugs and errors. We surveyed nearly 1,000 developers across the U. S. to find out and uncover key trends and insights, including: Traditional Error Monitoring Falls Short. Nearly every developer surveyed responded that traditional methods fall short. They’re spending too much time... --- ### Spring Boot vs Spring MVC: How do They Compare? - Published: 2021-01-11 - Modified: 2022-06-21 - URL: https://rollbar.com/blog/spring-boot-vs-spring-mvc-how-do-they-compare/ - Categories: topics - Tags: frameworks It’s common to confuse Spring Boot and Spring MVC. They both, after all, include the word “Spring” and are used with the Spring Framework. However, both accomplish different purposes and can be used alongside each other, rather than one being better than the other. We unravel and demystify your frequently asked questions so you can grasp when to use which and reduce the development time of your web application. What Is Spring Boot? Spring Boot is an extension of the Spring framework that allows developers to shorten the process needed to build a web application by using auto-configuration. You can create a standalone application that uses Java and get it up and running without needing to install it onto a separate web server. Use Spring Boot anytime you need a production-ready application quickly. What Is Spring MVC? Spring MVC is a library within the Spring framework that simplifies handling HTTP requests and responses. It’s built on the Servlet API and is an essential component of the Spring Framework. The MVC stands for Model-View-Controller, which is its core function, allowing separation of the business logic, presentation logic, and navigation logic. Use Spring MVC’s ready-made components to build fully functional Java web applications. Difference Between Spring MVC and Spring Boot While Spring MVC is an essential framework that exists within Spring as a whole, Spring Boot is an optional module that is used to streamline the development process, which can include integrating Spring MVC during the build process. Without Spring Boot, Spring... --- ### Introducing AI-Assisted Workflows and Automation-Grade Grouping - Published: 2020-11-17 - Modified: 2022-12-07 - URL: https://rollbar.com/blog/introducing-ai-assisted-workflows-and-automation-grade-grouping/ - Categories: product - Tags: continuous-delivery Imagine you’ve been working on a new feature for weeks. Finally—after exhaustive QA and testing, and more late coding sessions than you care to count—you release with a feeling of both accomplishment and relief. Only to be woken up at 3am that something’s wrong. Or worse, you get flooded with customer complaints that it’s not working properly. Well, it’s probably a scenario you don’t need to imagine. Every developer has a version of this story to tell. But, it doesn’t have to be this way. At Rollbar, we help developers focus on continuously improving their code. Instead of just fixing it. That’s why we’re excited to announce our newest features that let developers do just that: AI-Assisted Workflows and Automation-Grade Grouping. Rollbar’s AI-Assisted Workflows are automated workflows made for development teams who want to get ahead of errors before they impact users. Automation-Grade Grouping, our next generation grouping engine, provides the foundation for these AI-Assisted Workflows. Powered by machine learning, it automatically groups similar errors together to give developers trustworthy alerts, while eliminating noise and missed alarms. Read on to learn more about how these new features help developers proactively discover, predict, and remediate errors faster at all stages from dev to staging to release. The Benefits of AI-Assisted Workflows Companies, and their development teams, invest significant time and resources in QA, testing, and the tools to support those efforts to find and fix errors. Because they know uncaught bugs can negatively impact user experience and, ultimately, revenue. But investing... --- ### Magdalena Dzindzisz - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=magdalena-dzindzisz --- ### Ádám Németh - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=adam-nemeth --- ### Meet Continuous Code Improvement - Published: 2020-11-17 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/meet-continuous-code-improvement/ - Categories: company - Tags: company growth If your experience as a developer is anything like mine, the best moments are those known as the "flow state. ” When distractions drift into the background and all your energy is going in the creative direction of solving the problem at hand. Your brain is directly connected to your users through your code. Months of progress happens in hours. Unfortunately, those moments are rare. But it’s not emails or Slack messages that are the biggest distractions. The biggest headache is when things should work but don't. We spend too much time and effort banging our heads against the wall just trying to keep things from breaking. It’s not sustainable. Especially in 2020, when every business is now a software business. I believe that “flow state” is achievable. The entire Rollbar team and I are inspired by the challenge to make it a reality for every developer, every day. But we need to move the focus from fixing to building. And, after 8 years with more than 5,000 businesses relying on Rollbar to build software quickly and painlessly, I’m excited to share our vision for the future. Today, we’re announcing the next evolution of Rollbar as The Continuous Code Improvement Platform. In support of this evolution, we’re introducing a new brand identity—including a new logo—and we’re releasing unique features to enable a new way to code. We call them AI-Assisted Workflows and Automation-Grade Grouping. Now, it’s possible to deal with errors proactively, instead of being reactive. Introducing Continuous Code Improvement... --- ### Zita Lőrinczi - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=zita-lorinczi --- ### Walt Jones - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=walt-jones --- ### Nellie Sisti - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=nellie-sisti --- ### Vince Power - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=vince-power --- ### Rollbar SDKs and the new Apple-Silicon Mac Platform - Published: 2020-11-11 - Modified: 2023-01-19 - URL: https://rollbar.com/blog/rollbar-sdks-and-the-new-apple-silicon-mac-platform/ - Categories: product - Tags: SDK Apple just introduced Apple M1, it’s new processor, along with their latest product versions. Back in June, when Apple had first announced the transition to Apple silicon, we applied for their Universal App Quick Start Program and, eventually, received an Apple Developer Transition Kit (DTK) so that we could try out our Rollbar-iOS and Rollbar. NET (via Xamarin) SDKs on the Apple new platform. After setting up a beta version of Big Sur macOS that came preinstalled on the DTK and installing our development tools, we downloaded the latest at the time source code of our Rollbar-iOS SDK v2 codebase and our latest Rollbar. NET SDK codebase. Here is a summary of our findings. Rollbar-iOS SDK v2 (Coming out soon as the Rollbar-Apple SDK) The SDK source code was fully compilable (using the latest available Xcode beta-version) and run-time operational with no issue at all. A payload sent from one of our SDK sample apps compiled and ran on the DTK was successfully transmitted to the Rollbar Project Dashboard and reflected some specifics of its origin: macOS 11. 0. 0 (Big Sur) and device code listed as arm64: Rollbar. NET SDK Since the SDK must be built on a Windows machine (due to the SDK also targeting . NET Framework that is only available on Windows), our test case for this SDK looked like this: After downloading the SDK source code, we opened one of our sample apps in Visual Studio for Mac (that installed on the DTK without a... --- ### Sergei Bezborodko - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=sergei-bezborodko --- ### Chris Pfohl - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=chris-pfohl --- ### Zachary Flower - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=zachary-flower --- ### 10 Developer Horror Stories To Keep You Up at Night - Published: 2020-10-19 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/10-developer-horror-stories-to-keep-you-up-at-night/ - Categories: topics - Tags: error-handling This is a guest post from our partners at LaunchDarkly. We software engineers like to think ourselves unflappable. Consider that we spend most of our days staring at glowing pages of eldritch horror that no mortal was meant to witness. We whisper and type our otherworldly incantations, all the while feeling the hungry gaze of a lurking cross-site scripting bug, or a shadowy use-after-free, or an accidental summoning of ZALGO. (H̨e̛ ̕c͢om͢es, you know. ) But no. Truthfully, we’re far more fragile than that. Living our lives on a tightrope over an ocean of chaos (or “unspecified behaviour”), we’re only one bad deploy away from a manic screaming fit, followed by a move to the countryside and banishment of any technology invented after 1947. So we consume horror novels by the truckload in an attempt to persuade ourselves that... well, things could be worse, you know? When you see that a senior engineer dresses all in black, listens to Sisters Of Mercy and Dimmu Borgir, and has a line of Melanie Tem novels above the O’Reilly manuals, remember that she uses them to calm down. Because she’s seen things. As, likely, have you. We know every developer has at least one horror story that still haunts them to this day. Likely, they have more than they’d care to remember. For All Hallows’ Eve, we decided to share some of the most dreadful stories we’ve come across over the years. We hope that some will be educational to the innocents in... --- ### Hemant Jain - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=hemant-jain --- ### Daniel Steuernol - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=daniel-steuernol --- ### Jon de Andrés Frías - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=jon-de-andres-frias --- ### Introducing Versions API to Automate Error Response for New Code Versions - Published: 2020-08-05 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/introducing-versions-api-to-automate-error-response-for-new-code-versions/ - Categories: product - Tags: API You know the feeling. You’ve just deployed a new version to production and are monitoring the Rollbar dashboard for any new errors or looking out for any Slack notifications. You’re keeping an eye on the number of new or reactivated errors, their severity level, and triaging to see which errors need to be assigned and to whom. Now what if you could automate these tasks? We’re continuing our focus on automation with the release of our new Versions API! Back in 2018, we released Versions that allowed users to monitor and respond to any new or reactivated errors for every version of code deployed. As continuous delivery and workflow automation becomes more widespread, we want to make sure our users can automate the monitoring and response to errors. Why Use Versions API The difference between retaining and losing customers often comes down to user experience and application quality. With this feature, you can release more frequently or implement continuous delivery while ensuring the best possible end-user experience at all times. In addition, we all know how valuable engineering time can be. And automating error monitoring can help developers focus their energy on just the most important errors or even writing new code. What Can You Do With It While there can be many applications depending on your tech stack and workflows, here’s a quick summary of what you can do with this API: Gain visibility into the affects of new deployed versions on error rates through integrated dashboards. As an... --- ### Dan St. Clair - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=dan-st-clair --- ### Adil Aijaz, Co-Founder & CEO of Split - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=adil-aijaz-co-founder-ceo-of-split --- ### Introducing our new Java Spring Error Monitoring SDK - Published: 2020-07-20 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/introducing-our-new-java-spring-error-monitoring-sdk/ - Categories: product - Tags: java We’re excited to announce that we’ve strengthened our solution for Java Spring exception handling. Spring developers can now integrate Rollbar into their Java Spring Boot and Spring Web MVC applications even more quickly and easily. With our new SDK, instrumentation and getting real-time actionable error alerts takes just a few minutes. Spring has consistently been one of the most popular Java frameworks and we want to make sure we’re consistently offering the best possible solution for it. Get Real-time Error Alerts with Code Context Nobody likes to find out about errors from end users. For those unfamiliar with Rollbar, you can get real-time notifications of all errors with code context and metadata before your users get impacted. With telemetry, local variables, stack traces, and git blame all available at a click, debugging Spring errors can be a lot faster and easier. Here you can see the exact line of code that caused the error along with the avatar of the last person to edit that line of code - Notable Improvements Any exceptions raised by Spring will be handled automatically by Rollbar. Users don’t need to manually catch and send the exceptions. However, they do have the ability to catch and send custom events to Rollbar for debugging. The new integration automatically includes all the settings required for Spring, minimizing the number of changes and customization required by the users. The default setup already includes helpful components such as request's URL, parameters, etc. that can be powerful when debugging web... --- ### Taron Foxworth - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=taron-foxworth --- ### István Erdő - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=istvan-erdo --- ### Michal Zalecki - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=michal-zalecki --- ### 5 Ways to Improve Your Dev Team Velocity > Velocity, much like the pulse rate of an individual, is a measure of health for your scrum team. Learn how to use velocity to ensure that throughput stays high. - Published: 2020-06-29 - Modified: 2022-06-21 - URL: https://rollbar.com/blog/5-ways-to-improve-your-dev-team-velocity/ - Categories: topics - Tags: business-impact Velocity, much like the pulse rate or oxygen level of an individual, is an important measure of health for your development team. A low velocity score for recent sprints limits your team's options for delivering value. Sustained failure to deliver to stakeholders can erode trust with those stakeholders quickly. But how do you know exactly what your velocity is and how you can improve it? In this article, we'll share some best practices for improving the throughput of your development team and how to use velocity as a measure to ensure that throughput stays high. The practices and ideas in this article come from the research of Dr. Nicole Forsgen and Jez Humble. Their research is shared in the 2018 book Accelerate and represents the distillation of over 23,000 survey responses over four years of annual DevOps surveys. Dr. Forsgren, VP of Research & Strategy at GitHub, has proved in her research that high performing IT organizations use the practices and techniques shared in this article. First, let's look at exactly what we mean when we say velocity. What Is Velocity and Why Does it Matter? What Is Team Velocity? Velocity is a capacity planning tool that was introduced in Agile methodologies like eXtreme Programming (XP) and Scrum. In both those methodologies, work is broken down into user stories, the team estimates how much effort each story will take to get done, and then uses this estimate to commit stories for that development iteration or sprint. Velocity is expressed in... --- ### Mehak Garg - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=mehak-garg --- ### Helaine de Tomasi - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=helaine-de-tomasi --- ### Lotanna Nwose - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=lotanna-nwose --- ### How a Hackathon Led to 80% Fewer Rollbar Items - Published: 2020-05-26 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/how-a-hackathon-led-to-80-fewer-rollbar-items/ - Categories: company - Tags: customer-stories Earlier this year, we were invited to Thredup’s wonderful office space in Oakland to be one of the presenters at their quarterly Hackathon. Thredup, a fashion retail marketplace with over 35,000 brands, has been one of our key customers since 2013. We soon realized this wasn’t a normal Hackathon. This hackathon was dedicated to instrumentation and monitoring. Instead of asking the teams to work on new features or ideas that can be delivered in two days, they challenged the participants to learn how to monitor their application and the advance use cases for different tools, such as Rollbar, Pagerduty, and Datadog. Getting the Most Value from Rollbar The first day was focused on learning sessions. And the next two days were for instrumenting, triaging, and get more acquainted with the different metrics for the applications. As part of our Customer Success Program, we offer product training sessions for our customers. And our Solutions Engineer, Ivan, led one of their morning learning session as a training session for Rollbar. The goal of the training was to give a broader view of Rollbar making sure that it was useful for a wide spectrum of audience - from anyone who had just started to use Rollbar to those who have been using it for a long time. We touched on a wide array of topics and went over many product features. We talked about reducing noise by actively managing your Rollbar items using our custom grouping features and setting up the workflow that... --- ### Michael Davis - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=michael-davis --- ### Ivan Gomez - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=ivan-gomez --- ### Introducing the Rollbar Deploy GitHub Action - Published: 2020-05-15 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/introducing-the-rollbar-deploy-github-action/ - Categories: product - Tags: continuous-deployment We’re excited to announce our support for GitHub Actions with our new Rollbar Deploy GitHub Action. Teams using GitHub Actions for building their CI/CD pipeline can now easily send deploy information to Rollbar and respond to any new errors quickly. See and Respond to New Errors with Every Deploy At Rollbar, we love automation and GitHub Actions is the latest in the long list of CI/CD tools that we integrate with to automatically send deployment information to Rollbar. With this action, you'll be able to - Automatically notify Rollbar of any new deploys from GitHub Actions Easily link deploy information to new versions to gain visibility into the changes being deployed, the person deploying the changes, the environment impacted, and the new errors that are being generated Respond to errors with detailed code context You can click on deployed versions to see any new or reactivated errors for that specific version. With more visibility and confidence on the quality of each deployment, you can release code more frequently and ensure best possible experience for your customers at all times. Setting up Rollbar Deploy GitHub Action The action is available on the GitHub Action marketplace and you can set it up directly with your GitHub repository. From Source Code to Deployments - Get the Most Out of Rollbar for GitHub For the best user experience, we recommend using our GitHub integration for your source code repository. In case you missed it, we also recently launched support for Git blame allowing you... --- ### Julie Jones - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=julie-jones --- ### Derick Chung - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=derick-chung --- ### We Are Rollbar Support - Published: 2020-04-14 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/we-are-rollbar-support/ - Categories: company - Tags: Customer Support Hello, we are Rollbar support! At Rollbar, support has many limbs. We receive all the communication sent to Rollbar via chat or to support@rollbar. com. We then triage that information and take action on it as applicable. Get Solutions to Your Technical Problems We troubleshoot all your technical questions and try to replicate the issues that you encounter. If you are not able to start a new app, we will double check your app configuration for you. If the GitHub link on your stack trace is pointing to a different endpoint than what you would like, we help you figure out how to set the right path. If you don't see the data that you’d like to see in the logs, we check your settings and give you tips on how to get to what you want. If you think that two different errors belong together, we will help you write a custom fingerprinting rule to get there. Learn More About New Features Even after working at Rollbar for over a year, I keep learning new things about our product everyday. Rollbar is always developing new ways to debug, monitor and triage your data, and helping you organize the errors. If you have any questions about any product features, such as: What can these features do for you? What’s the best way to set them up or use them? Are they available on the plan that you currently have? Support will walk you through and get you where you want... --- ### Alex Moraca - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=alex-moraca --- ### Jesse Gibbs - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=jesse-gibbs --- ### Apache Kafka Example: How Rollbar Removed Technical Debt - Part 2 - Published: 2020-04-07 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/apache-kafka-example-how-rollbar-removed-technical-debt-part-2/ - Categories: topics - Tags: kafka In the first part of our series of blog posts on how we remove technical debt using Apache Kafka at Rollbar, we covered some important topics such as: Sizing the Kafka cluster Measuring your expected throughput to size the topics correctly Write and configure the Kafka producer so it gives the latency and throughput desired In the second part of the series, we’ll give an overview of how our Kafka consumer works, how we monitor it, and which deployment and release process we followed so we could replace an old system without any downtime. Kafka Consumer Most of our backend projects are coded in Python so we wrote a process using Python 3. 8 that would consume messages from a Kafka topic and write them to the database in batches. We decided to use the Confluent Kafka client since it has better performance and uses librdkafka. We decided to write a CLI that allows us to run it like this: $ . /bin/ingestion --kafka-brokers kafka:9092 --kafka-topics stream. raw_items. raw --kafka-group ingestion_raw_item --db-host db --db-user $DBUSER --db-password $DBPASSWORD --db-name mox_raw --consumer-timeout 0. 15 We basically set up the Kafka consumer configuration along the database configuration. An important setting that affects the user experience is consumer-timeout, which represents the maximum time the consumer will block consuming and/or waiting for new messages. This value affects the delay seen by the user, having different delays for the first and last message of the batch. A small timeout period will provide lower latencies while will... --- ### Brian Rue - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=brian-rue --- ### Cory Virok - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=cory-virok --- ### Rollbar Goes Remote - Recruiting From Home - Published: 2020-03-23 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/rollbar-goes-remote-recruiting-from-home/ - Categories: company - Tags: remote-work In the face of the coronavirus outbreak and sudden shift to working from home, Rollbar moved our entire recruiting process to function in a remote capacity in two days. Here's how we did it. Starting Point: Assessing Current Tools and Processes We prioritize in-person meetings for our final interview stage when possible, so most of our processes in place were set up for face to face meetings. For a fully remote panel, with a candidate, interviewers, and recruiting team all in different locations, we were concerned about glitches and confusion. Our strategy focused on anticipating the needs of both parties and be proactive in our communication so that both parties felt prepared for the interview. Here are some of the main gaps we found in our process when moving to fully remote panels: Candidate instructions and process: did not address unique situations for virtual interviews i. e. what to do when glitches occur, how to ask for breaks, how we use Zoom for panel interviews Team member panel instructions and process: did not address unique situations for virtual interviews i. e. ensuring panel knows the full lineup on the day of, how to handle a smooth virtual handoff, how to communicate with the team Tools and technology: no virtual whiteboard for coding interview Filling the Gaps In addressing these issues, our overarching goal was to ensure a continued positive experience and ensure that the panels were as effective as they would otherwise be as face to face meetings for both... --- ### Jason Skowronski - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=jason-skowronski --- ### Craig Guillot - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=craig-guillot --- ### Apache Kafka Example: How Rollbar Removed Technical Debt - Part 1 - Published: 2020-03-10 - Modified: 2025-02-19 - URL: https://rollbar.com/blog/apache-kafka-example-how-rollbar-removed-technical-debt-part-1/ - Categories: topics - Tags: behind-the-scenes In this two-part series of blog posts, we’ll explain how Kafka has helped us in removing parts of our architecture that we consider to be “legacy”. During the development of a project sometimes we need to take decisions on our architecture or software design that may not be the best decisions from a pure and perfectionist technical perspective. However, the compromise between the business needs and the engineering solution might push you to adopt a particular solution. That’s how companies create technical debt, that at some stage is considered legacy software or legacy design. Eventually, a company can decide to address that technical debt and invest resources in removing it. At Rollbar we are using Kafka to improve our service that ingests data in our databases. How does the current ingestion service work? The first stage of our events processing pipeline, and the ingestion service, is our API. These are few of the main responsibilities of the API: Validates the schema of the payload Identifies the project for the received access token Checks that the access token passes the rate limiting configuration Serialize the occurrence payload before it can be written to database You can see that storing the occurrences in database is not API’s responsibility. Instead, our API writes the received payloads to disk using a Node library we wrote a while ago, batchelor. This library allow us to stream the received payloads into a file that rotates after a defined period of time or maximum file size. We... --- ### Tyler Cascade - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=tyler-cascade --- ### Michael Auderer - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=michael-auderer --- ### Announcing our new $11M Series B funding - Published: 2020-03-04 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/announcing-our-new-11m-series-b-funding/ - Categories: company - Tags: funding Nearly eight years ago, Cory and I started on a journey to help developers build software quickly and painlessly. As software developers ourselves, we had felt the pains of being afraid to ship and spending late nights tracking down bugs. In 2013, we launched Rollbar so that developers could build software faster, shipping often without fear. Lots of people talk about continuous delivery, and nearly all of them focus on automating releases. This is important, but it’s only half of the problem: after you release your code, when it breaks, you need to respond. Companies need automated response. That means being able to see, understand, and resolve problems in real-time. This sounds great, and it turns out it actually works! Companies who adopt Rollbar, on average, triple their release velocity every year. Rollbar provides an automated error response platform centered around our proprietary, customizable grouping engine. It gives developers 100% visibility on errors across the software development lifecycle with all the context they need to fix errors in minutes and deploy more often. 100,000+ developers, 4,500+ customers, 40+ employees, and three offices across three countries later, we’re very proud of where we’ve come. But in many ways, we’re just getting started. Today, I’m excited to announce that we’ve closed a Series B financing of $11M led by Runa Capital with participation from Long Light Capital and Blossom Street Ventures, along with existing investors Cota Capital, Bain Capital, and Patagonia Capital. We’re also excited to welcome Dmitry Galperin from Runa Capital... --- ### Sadequl Hussain - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=sadequl-hussain --- ### Jaee Apte - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=jaee-apte --- ### Introducing Notifications API to Automate Notification Settings Across Projects - Published: 2020-02-21 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/introducing-notifications-api-to-automate-notification-settings-across-projects/ - Categories: product - Tags: Slack At Rollbar we love workflow automation. With our new Notifications API, you can automate setting up of custom notification rules for all your Rollbar projects. As more of our customers switch to microservices, we wanted to build a programmatic way to set up these rules for multiple projects or services in just a few seconds, without having to go to the UI. With this API, you’ll be able to - Set-up multiple Rollbar projects with the notification settings you want in a few minutes Get notified about new errors occurring in your production environment through Slack or PagerDuty Instantly see new errors happening in your environments right in your Slack channels In this article we will go through automating the Slack and PagerDuty integration setup and defining some custom rules for notifications. Prerequisites for Slack notifications First, make sure you have a Slack channel ready for the notifications. You can either integrate with an already existing channel or create a new one. Let’s assume you create a Slack channel called #alerts. Second, you need to obtain a write access token for your Rollbar project from the project general settings: Rollbar dashboard → Settings → Project Access Tokens. Third, obtain your Service Account ID. You can find it here in your Rollbar's user settings page for Slack: Rollbar dashboard → Click your username in the top right corner → Account Settings → Connected Account → Slack → look for Notifications API section at the bottom. Configuring Slack notifications Now it’s time... --- ### Megan Anderson - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=megan-anderson --- ### Twain Taylor - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=twain-taylor --- ### Rivkah Standig - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=rivkah-standig --- ### Introducing Git Blame Support for GitHub Integration - Published: 2020-02-12 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/introducing-git-blame-support-for-github-integration/ - Categories: product - Tags: debug At Rollbar, we care about reducing the time it takes developers to find and fix errors. This is why we’re making our integration with GitHub even stronger to provide more context around errors and reduce the mean time it takes to resolve them MTTR. Last year, we launched Code Context to show additional lines of code within each frame of the stack trace, reducing the back and forth between GitHub and Rollbar. Now, we’re excited to support git blame to help you identify the last person to write or edit the line of code that caused the error, directly within the Rollbar UI. Get More Context to Debug Faster Let’s say a new error pops up in Rollbar that you would like to investigate. As you click on the Traceback in the Item details page, you can see the exact line of the code that caused the error in each frame of the stack trace directly within the Rollbar UI. Now, you may want to get more context on who should be assigned to the error or why some changes to the code were made. You don’t have to go to GitHub anymore to get this information. You can directly see the GitHub User Avatar of the last person to edit the offending line of code in Rollbar. If you hover over the Avatar, you can directly visit the pull request and the commit for that code. No more switching back and forth between Rollbar and GitHub! In a nutshell,... --- ### Mike Smith - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=mike-smith --- ### Phil Nash - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=phil-nash --- ### Derek Haynes - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=derek-haynes --- ### Best Practices for Moving from a Monolith to Microservices - Published: 2020-02-10 - Modified: 2022-06-21 - URL: https://rollbar.com/blog/best-practices-for-moving-from-a-monolith-to-microservices/ - Categories: topics - Tags: business-impact In the first post of this series, we looked at the state of your organization, how to tell if Microservices are right for you, and wrapped up with a few challenges this architecture brings to the table.   In this article, we will look at organizational changes that will help you adopt a Microservice architecture. Additionally, we will touch on topics like how to bring change to your organization, how to embrace the primacy effect, and why you should embrace cross-functional teams. We'll also discuss several ways to change how you develop applications in a Microservice architecture. These items include topics like streamlining your build - optimizing how you build your Monolith, detangling your dependencies - setting up your Monolith for Microservices and optimizing your local development environment. Organizational Changes Here are best practices to prepare your organization to transition from a Monolithic codebase to a Microservices architecture. Establish Goals You should establish clear, measurable goals for your first projects. Everyone involved in the process, from the executive team down through the cross-functional team, should understand and agree on the initial goals. Since this will be a completely new and unfamiliar process, failure should be treated as a learning experience rather than punishable. Use these inaugural teams to flesh out your automation, streamline your development process, and experiment with different ways to build Microservices. Consider how people in your organization will be affected by the primacy effect, which is a cognitive bias that results in recalling what you first encounter... --- ### Jennifer Marsh - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=jennifer-marsh --- ### Ken Sheppardson - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=ken-sheppardson --- ### Cuttlesoft - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=cuttlesoft --- ### Transforming Engineering at Rollbar - Published: 2019-12-18 - Modified: 2023-06-26 - URL: https://rollbar.com/blog/transforming-engineering-at-rollbar/ - Categories: company - Tags: behind-the-scenes It's been a busy year at Rollbar! While many of the new features we built got all the needed attention (press, blog posts, conferences), the underlying work to transform and modernize our platform might have been less visible. With this blog post I'd like to share with you all the exciting initiatives we launched in this past year and recognize all the deserved credit for all the engineers that worked restlessly to get us where we proudly are today. In order to really understand the amplitude of the transformation and the reasons behind it, it's important you realize why and where all of this started. A year ago our Engineering team was less than half the size, our User Experience was struggling to keep pace with modern design and, at the same time, our business was growing double digits in constant and continuous expansion. The number one priority that every customer would have underlined was availability! The more Rollbar was getting adopted from teams focusing on deeply integrating it in their CD/CI pipelines thorough APIs and WebHooks, the more our ability of processing errors in real time was a dealbreaker for our customers. It was clear that to be able to match the forecasted demand, some parts of our architecture needed to change. At the same time it become evident that to win in the Error Monitoring space, we needed to be absolutely best in class in avoiding "noise" across our platform. We needed a way to maintain our leadership... --- ### Elliott Spira - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=elliott-spira --- ## Job Titles ### How to Catch (and Fix) JavaScript TypeErrors - Published: 2019-12-18 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/how-to-catch-and-fix-javascript-typeerrors/ - Categories: Code Tutorials, JavaScript - Tags: debug It's Friday afternoon and you decide to check on your web logs one last time before you go out for the weekend. Since you've deployed recently, you want to make sure everything is going smoothly. You open your tool and suddenly you find your screen flooded with TypeErrors. Does this sound familiar? JavaScript TypeError is one of the most common browser errors because it wraps a number of different situations, each of which needs to be handled separately. What often makes fixing these problems difficult is the wide range of exception messages coming from different browser types, versions and languages. Looking at a list of TypeErrors in your logs makes it difficult to decide if it is one problem materializing in different forms or different issues altogether. When are TypeErrors thrown? According to the TypeError docs it's thrown “when an operation could not be performed, typically (but not exclusively) when a value is not of the expected type”. This can easily happen during a code refractor, when you reworked a function but didn't consider it being used in another part of your app that is now breaking. The most common cases of TypeError There are a number of different cases but we've found that the vast majority of errors can be categorized into one of the following. Case 1: Unable to get property of undefined or null reference This means that the object you are calling is null or you haven't defined it. Depending on the browser where the error... --- ### Chief Product Officer - Published: 2022-06-30 - Modified: 2022-06-30 - URL: https://rollbar.com/?job_title=chief-product-officer --- ### Talent & Operations - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=talent-operations --- ### Co-founder and CTO - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=co-founder-and-cto --- ### CRO - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=cro --- ### Sales - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=sales --- ### Engineering - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=engineering --- ### Operations - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=operations --- ### Error Handling with Angular 8 - Tips and Best Practices - Published: 2019-12-16 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/error-handling-with-angular-8-tips-and-best-practices/ - Categories: Code Tutorials, JavaScript - Tags: angular Handling errors properly is essential in building a robust application in Angular. Error handlers provide an opportunity to present friendly information to the user and collect important data for development. In today's age of advanced front-end websites, it's more important than ever to have an effective client-side solution for error handling. An application that does not handle errors gracefully leaves its users confused and frustrated when the app suddenly breaks without explanation. Handling these errors correctly across an application greatly improves user experience. Collected data from the error handling can inform the development team about important issues that slipped past testing. This is why monitoring tools like Rollbar are so important. In this article, we will compare several solutions for error handling in Angular apps. First, we will describe the traditional approaches using ErrorHandler and HttpClient. Then, we will show you a better solution using HttpInterceptor. We'll also show you how to use this interceptor to monitor and track errors centrally in Rollbar. The Shortcomings of console. log Beginners in JavaScript programming often start out using the console log because that is the default output in most development environments. Once you deploy your application to a production environment, you no longer have access to the console log. That's because the code is now running on the client browser. Unless you record the errors that clients experience in a centralized location, you won't have any visibility into them. In order to understand the user experience and how errors can affect it,... --- ### Product Design - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=product-design --- ### Finance - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=finance --- ### Talent - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=talent --- ### Introducing the New Rollbar UX - Published: 2019-12-15 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/introducing-the-new-rollbar-ux/ - Categories: product - Tags: error-monitoring Migrating to microservices is hard enough. Monitoring errors and debugging shouldn’t be. When we first built Rollbar, microservice architectures and continuous delivery practices weren't as common as they are today. Over time, we saw how our customers were setting up different projects for each code repository. As a complex distributed architecture becomes the norm, we want to make sure our core user experience reflects this new normal. Today, we’re introducing the new Rollbar user experience. We hope you like it as much as we have enjoyed building it for you! Here’s a quick look at what you can do with the new UX. Monitor all microservices with one tool in one view With the new Rollbar user experience, we’re adopting powerful and consistent multi-project views across the entire user workflow. Get intelligent, real-time alerts on errors across microservices in a single view using our new multi-project filter. Whether you’re looking at the main dashboard, the Items view, or Versions, you’ll only see what you care about. Debug faster with a consistent workspace and powerful filters Users now have their own personal workspace with powerful filters for projects, environments, and frameworks that persist across all views. Finding new errors is faster and easier with improved Timeframe and ‘New or Reactivated’ filters. Using our Versions feature, track every deployed code version across all of your microservices in a single view. Quickly identify new and reactivated issues, and triage items easily with information on who deployed each code version. Get insights on data... --- ### Country Manager, Hungary - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=country-manager-hungary --- ### Marketing - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=marketing --- ### Product - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=product --- ### Monolith to Microservices: Is Your Organization Ready? - Published: 2019-12-15 - Modified: 2022-06-21 - URL: https://rollbar.com/blog/monolith-to-microservices-is-your-organization-ready/ - Categories: topics - Tags: business-impact Transitioning from a Monolith to a Microservices architecture can take years to complete. The internet is full of stories of companies famously making this transformation. But how do you know if it’s right for your organization? Is your organization ready? In this article, we will look at five questions you can ask to see if you’ll benefit from a Microservices architecture. We’ll also discuss five challenges you will face during this transformation. In part II of this series, we’ll look at strategies for moving from a Monolith to Microservices. There will be one prevailing theme during this process: change. Can your executive team stay focused on a long-term, company-wide transformation long enough to see it through completion? Like any large project, it can take years to complete this transformation, can your organization continue to allocate resources to this project while managing other company initiatives? Have you successfully implemented other large-scale changes? If so, your transformation will likely be a success. Determining your organization's readiness is an essential part of mapping out your implementation plan. Benefits of a Microservices Architecture You shouldn't adopt a microservice architecture simply because it's trending, but because your organization needs the specific benefits this type of architecture provides. Is your company ready for these benefits? Team autonomy - Microservices are loosely-coupled independently deployable services. They are resilient to failure and are elastic. Does your organization have experience with independent teams? Deploying a Monolith is usually a coordinated effort across teams and departments. Autonomous teams are the... --- ### Co-founder and CEO - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=co-founder-and-ceo --- ### Customer Success - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=customer-success --- ### Announcing the First Error Monitoring Solution for Salesforce Apex - Published: 2019-11-12 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/announcing-the-first-error-monitoring-solution-for-salesforce-apex/ - Categories: product - Tags: SDK We're very exited to bring all the error monitoring and debugging capabilities of Rollbar to Salesforce Apex applications. According to Salesforce, millions of developers and thousands of independent software vendors develop customized applications using Apex to extend the fuctionality of Salesforce. A few months ago, when some of our customers reached out and asked us for an error monitoring solution for their Salesforce Apex developers, our engineering team jumped on the task. The result - you can now monitor multiple organizations, apps, and users in real-time with one tool in one view. No more digging through emails or the developer console to find unhandled exceptions. Get real-time error notifications with stack traces For those unfamiliar with Rollbar, here’s a quick look at some of the key features - Rollbar tracks all Apex errors instantly as they occur and notifies you via your preferred channel (slack, email, and more). You can view all Unhandled Apex Exceptions in all your Salesforce apps in one consolidated view on the Items page With advanced filters such as multi-project selector, timeframe, error severity, you can monitor all applications, organizations, and users with one tool in one place We group similar errors using Rollbar's fingerprinting technology to reduce noise and all errors include detailed data to help you assess impact and assign priority. You can assign owners and create issues in your preferred issue-tracking tool directly from Rollbar You can see detailed metadata such as the stack trace, organization data, custom data with occurrences, request parameters,... --- ### Revenue Operations - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=revenue-operations --- ### Developer Advocate - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=developer-advocate --- ## Customers ### Turbocharge QA with Pre-Production Monitoring - Published: 2019-11-05 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/turbocharge-qa-with-pre-production-monitoring/ - Categories: topics - Tags: debug Traditionally, Quality Assurance (QA) has been a very manual process. Our QA teams do an amazing job running through test plans, finding critical bugs, and logging reports. But it can be a lot of work to run through the tests again and again, dig into the errors to provide the contextual information developers need to fix bugs quickly, and prepare the reports your developers need to find and fix errors in the codebase. Sometimes, even with all this support from the QA team, development teams may have to spend considerable time trying to reproduce errors and locating the relevant source code. And in this era of "doing more with less," not all dev teams are lucky enough to have dedicated QA support, so triaging bug reports is one more thing developers are responsible for. With Rollbar's advanced reporting, reliability engineers can create reports to track performance and assess the effectiveness of staging and other pre-production phases. Test failures can also be associated with their original exceptions, providing software developers with rich context information. The bottom line is that QA without Rollbar can be hard. With a little help from Rollbar, it's easier, faster, and provides more complete data for crushing bugs. We'll explain how in the rest of this article. Demonstrating QA Error Monitoring with Rollbar Let’s say you’re a developer working for a company that creates line-of-business applications. As part of the development lifecycle, your colleague Kendall from QA routinely sends you reports containing bugs you must understand, reproduce,... --- ### Rollbar CTO, Cory Virok, Shares His Expertise on Creating an Enterprise Solution for Today’s Modern Software Company - Published: 2019-10-24 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/rollbar-cto-cory-virok-shares-his-expertise-on-creating-an-enterprise-solution-for-todays-modern-software-company/ - Categories: topics - Tags: business-impact We sat down with Rollbar CTO, Cory Virok, for a Q&A on how his leadership role and industry expertise helped create an enterprise solution for today’s modern software company. How does your technical expertise and leadership as a CTO play into how Rollbar focuses on the enterprise? Before Rollbar, I was building high-throughput, network security systems for the government. After moving to SF, I worked at VMWare, followed by a social gaming company where I was scaling a product, infrastructure, and team for a massively popular set of Facebook games. Being a deeply technical CTO has been incredibly important for me to be able to provide our enterprise customers with solutions that their development teams use every day to ship better software, faster. Whether it's support, or the initial diligence on our product, or customer success, Rollbar's enterprise customers have a very high level of expectation from our team and service. As our CTO, I am proud of our ability to exceed these expectations and provide a level of stability and performance that our most demanding customers have come to expect. How has your technical and learned business experience helped you to build an enterprise startup and run a “modern” software company? From my experience, enterprise customers tend to all have customizations that they require, making it very easy to "go wide" and build all of the requested integrations. That's a fine approach. Just be sure to structure your team, architecture, and processes around that principle. It's very easy to... --- ### eCommerce - Published: 2021-10-18 - Modified: 2021-11-09 - URL: https://rollbar.com/customers/ecommerce/ --- ### Announcing Crash Monitoring for macOS with Rollbar - Published: 2019-08-29 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/announcing-crash-monitoring-for-macos-with-rollbar/ - Categories: product - Tags: macOS What’s better than an SDK that supports iOS? One that also supports macOS! With the latest version of rollbar-ios (v1. 8. 1), Rollbar now supports crash monitoring for macOS. You can use Rollbar to monitor, triage, and debug crashes and errors on both iOS and macOS. What else, you ask? We’re excited about some significant improvements for both iOS and macOS. Read on for the details. Real-time crash monitoring & debugging for macOS All the Rollbar features previously available for iOS only are now available for both Apple platforms, iOS and macOS. You’ll get notified in real-time of any exception or an application crash (on the subsequent application restart). We’ll also group similar crashes using our fingerprinting technology so you won’t have to deal with noise and can focus on the most important issues. Additionally, Rollbar gives you all the data you’ll need to debug within minutes. This includes the available error and crash details, stack traces, any useful telemetry metadata, affected users, relevant app versions, and details about runtime environments (OS version, SDK version, device details, etc. ). You can also clearly see the device OS (iOS or macOS) of a payload on the Items view in the Rollbar dashboard. Rollbar CocoaPod now supports both iOS and macOS as a single universal pod targeting both platforms as well. But wait, there’s more! We’ve made the rollbar-ios SDK easier to integrate into your app (iOS or macOS based). You can include it: Via CocoaPods - see examples for iOS app... --- ### Plexus - Published: 2021-09-22 - Modified: 2021-11-09 - URL: https://rollbar.com/customers/plexus/ --- ### Shortcut - Published: 2021-07-28 - Modified: 2022-12-07 - URL: https://rollbar.com/customers/shortcut/ --- ### Introduction to Error Handling in Angular 7 Using Rollbar - Published: 2019-08-15 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/introduction-to-error-handling-in-angular-7-using-rollbar/ - Categories: Code Tutorials, JavaScript - Tags: angular In this tutorial, you will be introduced to errors tracking in Angular 7 using the errorHandler class and Rollbar. This is the last part of the Angular 7 error handling series, you can refer to the first part here, and the second part here. In this series, you have been introduced earlier to handling client side errors and then HTTP errors gracefully in Angular 7 with tools like errorHandlers, Interceptors and even RxJS operators. In this post you will be shown how to track these errors in a remote tracking environment. For full tutorial, visit https://pusher. com/tutorials/error-handling-angular-part-4 --- ### Everplans - Published: 2021-07-28 - Modified: 2021-08-16 - URL: https://rollbar.com/customers/everplans/ --- ### FinTech - Published: 2021-07-28 - Modified: 2021-08-16 - URL: https://rollbar.com/customers/fintech/ --- ### New Integration - Create Microsoft Azure DevOps Work Items directly from Rollbar - Published: 2019-08-07 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/new-integration-create-microsoft-azure-devops-work-items-directly-from-rollbar/ - Categories: product - Tags: integrations Does your team use Azure DevOps for tracking work? You’re going to love our latest integration if that’s the case. You can now create and resolve Work Items in Azure DevOps directly from Rollbar, making error monitoring and debugging even faster. This is the latest addition to our toolkit for the Microsoft ecosystem (read about our Azure Active Directory integration). It reinforces our mission to help software developers build software quickly and painlessly. It also saves valuable time so that developers can stay in flow. With this integration, you can: Create an Azure DevOps Work Item directly from Rollbar, either directly or based on the ruleset (details below) View the stack trace in the Azure DevOps Work Item Auto-create tags and area paths, and view the Item in Rollbar with a single click Change the Work Item state automatically based on changes in Rollbar Resolve Azure DevOps Work Item automatically once resolved in Rollbar Rules for automatic Item related actions: You can create rules for specific actions to be triggered automatically. These include creating, resolving, or changing the state of a Work Item. An example can be setting up a rule that automatically creates a new Work Item when an error occurs for a specified number of times. You can also create a Work Item directly from the Rollbar item by clicking on ‘Create Azure DevOps Work Item’ if that works better for your workflow. Azure DevOps Work Item from a Rollbar Item: You can view key details of a... --- ### Greenhouse - Published: 2021-07-28 - Modified: 2023-05-23 - URL: https://rollbar.com/customers/greenhouse/ --- ### CircleCI - Published: 2021-07-28 - Modified: 2023-05-23 - URL: https://rollbar.com/customers/circleci/ --- ### Exception Monitoring Across Environments - Published: 2019-07-31 - Modified: 2025-02-19 - URL: https://rollbar.com/blog/exception-monitoring-across-environments/ - Categories: topics - Tags: error-monitoring Tools like Rollbar have changed the way development teams are recording and managing their exceptions. What used to be a very personal developer-by-developer activity can now be a team-wide tool for greater transparency, and increased application quality. But many still treat exception monitoring as a developer activity, and they are not leveraging its benefits across all environments, from development to stage and integration, to systems testing and production. Let's review why exception monitoring in all environments is so beneficial, and some best practices for setting it up. By standardizing with Rollbar for exception monitoring across environments and clients, you have better visibility and better input into the application and development processes, and it’s a good way to ensure quality prior to delivering releases to customers. But even after release, the tool has been extremely useful for: 1. Support of CD and canary releases: More and more we are asked to consider using continuous delivery (CD) and canary release processes. While in many cases it is not possible or a good fit, when we do get an opportunity to implement CD, exception monitoring is the only way to support it, because code goes from developer to source repo and directly to prod as long as the basic tests show up green. We know very little about the code, and do not have the eyeballs on exceptions that we normally would. This way, an exception in prod is just one more trigger to let us know that a release should be rolled... --- ### CVENT - Published: 2021-07-28 - Modified: 2021-11-09 - URL: https://rollbar.com/customers/cvent/ --- ### Twilio - Published: 2021-07-28 - Modified: 2023-05-23 - URL: https://rollbar.com/customers/twilio/ --- ## Changelogs ### Rollbar is removing old grouping versions to improve fingerprinting in July - Published: 2022-07-12 - Modified: 2022-07-12 - URL: https://rollbar.com/development-updates/rollbar-is-removing-old-grouping-versions-to-improve-fingerprinting-in-july/ Seamless grouping is the concept of making sure that when we roll out new grouping versions, already grouped items won’t change. When we receive an occurrence, we basically fingerprint it with all previous versions, to make sure that we keep the existing grouping (if any). This means that as we keep adding new grouping versions, more and more versions need to be checked, thus the performance of the fingerprinting degrades. As we keep adding new grouping versions, more and more versions need to be checked. Thus, the performance of the fingerprinting degrades. To improve fingerprinting, we decided to remove old grouping versions. What does this mean? Removing grouping versions means that occurrences that have been grouped by these rules will be re-grouped. You might see new items generated for occurrences that have been grouped before (with the history of the original item not visible in the new item). Do I need to do anything? No action is needed from your side, the changes will take effect automatically on July 12, 2022. We continue to train our models regularly on millions of crashes to analyze frequently occurring error types and accurately distinguish different ones. This allows engineers to identify, triage, and respond to errors more quickly. Learn more about how grouping works at Rollbar --- ### Rollbar is removing old grouping versions to improve fingerprinting in April - Published: 2022-04-29 - Modified: 2022-07-12 - URL: https://rollbar.com/development-updates/rollbar-is-removing-old-grouping-versions-to-improve-fingerprinting/ Seamless grouping ensures that when we roll out new grouping versions, items that are already grouped won’t change. When we receive an occurrence, we basically fingerprint it with all previous versions to ensure that we keep the existing grouping (if any). As we keep adding new grouping versions, more and more versions need to be checked. Thus, the performance of the fingerprinting degrades. To improve fingerprinting, we decided to remove old grouping versions. What does this mean? Removing grouping versions means that occurrences that have been grouped by these rules will be re-grouped. You might see new items generated for occurrences that have been grouped before (with the history of the original item not visible in the new item). Do I need to do anything? No action is needed from your side, the changes will take effect automatically on May 18, 2022. We continue to train our models regularly on millions of crashes to analyze frequently occurring error types and accurately distinguish different ones. This allows engineers to identify, triage, and respond to errors more quickly. Learn more about how grouping works at Rollbar --- ### Upload Source Maps to Rollbar - Published: 2019-07-22 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/upload-source-maps-to-rollbar/ - Categories: Code Tutorials, JavaScript - Tags: source-maps From https://michalzalecki. com/upload-source-maps-to-rollbar/ Upload source maps to Rollbar In production, the most important advantage of using a build tool like webpack is a smaller size and thus improved overall application performance. Although beneficial for our users, the bundled and minified code is harder to debug for developers as the code they have written doesn't map 1:1 to error stack traces. Multiple tools for minifying, bundling and transpiring JavaScript modules can generate source maps along with the resulting code. Source maps allow developer tools (Chrome DevTools, test runners, error reporting software) to find a reverse mapping from the optimized code back to the source code. Rollbar (and often other error tracking software) supports source maps to display error stack traces that point to the erroneous lines in the source code instead of an optimized client-size bundle your users download. The easiest, although not recommended, way to provide Rollbar with source maps is to make them available for download from your production server. Once Rollbar receives the error, it will schedule the download of the source map file. A reliable and recommended way to make source maps available for Rollbar is to upload them pre-deploy. It's also the only way if you don't wish to share the source code of your app by exposing it via publicly-available source maps. In this article, we will create a required configuration and write a script for uploading source maps to Rollbar. Read Full Article at: https://michalzalecki. com/upload-source-maps-to-rollbar/ --- ### New, updated Software Development Kits are available - Published: 2022-04-28 - Modified: 2022-04-28 - URL: https://rollbar.com/development-updates/new-updated-software-development-kits-are-available/ We are pleased to announce new and updated software development kits (SDKs) and capabilities. These SDKs keep Rollbar current on both older, but very significant, platforms like . Net, PHP and Laravel and also the fastest-moving platforms like Apple iOS, React, Typescript and Flutter. “Rollbar is an essential tool from the moment developers say ‘Hello World’ in whatever language they leverage. These releases ensure that we evolve along with the range of languages and frameworks that we support,” Cyrus Radfar, Rollbar Chief Product Officer The new and updated SDKs that Rollbar unveiled today include: . Net v5: The latest release of Rollbar’s . Net SDK adds Blazor browser-side WebAssembly (Wasm) support and introduces RollbarInfrastructure. When enabled within Blazor client-side hosts, RollbarInfrastructure offloads significant payload packaging and processing to a dedicated background worker thread to be handled asynchronously. Also, Rollbar configuration can now be grouped into functionally relevant groups, or configurational options, instead of one long flat list of settings. Apple/Mac SDK: The successor to the Rollbar-iOS SDK, this new release is more lightweight, has better-defined public APIs that are more Swift-friendly and can be used on all current Apple operating systems and platforms. The modular design allows users to leverage all or just parts of this SDK, for which each SDK module is a self-contained SPM package that automatically brings in any required dependency on any other package of the SDK as needed. Also, crash reporting with this SDK is now optional. Memory management features are coming soon. Flutter Beta:... --- ### April 2022 Grouping Update - Published: 2022-04-26 - Modified: 2022-04-26 - URL: https://rollbar.com/development-updates/april-2022-grouping-update/ We are pleased to announce our new Grouping Update which introduces patterns for Elixir and Scala. Both recently supported SDKs with increasing usage and user demand Additionally, this update significantly improves grouping accuracy across all our major languages: Ruby, Java, Javascript, PHP, Python, C#, and Go allowing users to discover and respond to errors more quickly with less noise and more accurate items in the item list. We continue training our models regularly on millions of crashes to analyze frequently occurring error types and accurately distinguish different ones. As usual, these improvements have been rolled out automatically for all accounts with auto-upgrade enabled, so you can focus on fixing bugs! Learn more about how grouping works at Rollbar --- ### Slack Oauth 2.0 system is available for your Rollbar projects - Published: 2022-03-18 - Modified: 2022-03-18 - URL: https://rollbar.com/development-updates/slack-oauth-2-0-system-is-available-for-your-rollbar-projects/ Rollbar is adopting the updated Oauth 2. 0 flow created by Slack. Slack has revised their access tokens and now allows the Rollbar Slack bot to have its own credentials. This replaces the use of member’s credentials.   What does this mean? You don’t have to switch over, but you should consider the benefits of migrating. To complete the migration, you must add the Rollbar Slack bot to any channels that you'd like to post alerts.   What are the benefits of Bot Tokens on Slack? Slack integration will use a single bot token, so there will not be any confusion regarding switching user access tokens. You will have the chance to manually enter the appropriate Slack channel via a text input box, which will eliminate the long load times of a drop-down for channel selection when configuring Slack notifications. When team members leave your Slack workspace, their “owned” tokens do not need to be swapped out as they would today. How to migrate to Slack Oauth 2. 0? We recommend you complete the migration process to ensure continued support of notifications. To start the migration process for the new Slack Oauth 2. 0 version, you will need to go to your Account Settingsand follow the steps in Rollbar.   Migrate to Slack Oauth 2. 0  1. Go toSettings, and selectSlack, underNotifications. 2. On theManage Account Slack Settingspage, begin the migration process by clicking on theAdd to Slackbutton. 3. On the upper left corner,select the Slack workplaceyou want to add... --- ### Continuous Delivery with Jenkins and Rollbar - Published: 2019-07-10 - Modified: 2023-06-20 - URL: https://rollbar.com/blog/continuous-delivery-with-jenkins-and-rollbar/ - Categories: topics - Tags: continuous-delivery Continuous delivery (CD) helps reduce the cost, time and risk of delivering changes by allowing for fast incremental updates to applications in production. However, it’s essential to monitor your application after each deployment. You need to be notified immediately if something is wrong or users are having a poor experience. Rollbar is a leading solution for error monitoring in the software development lifecycle. It alerts you when new errors occur after a deployment. It can also tell you which deployment the error was first seen in, and which code changes were likely responsible. This can dramatically speed up your troubleshooting time and help you fix problems faster. In the screenshot above, you can see that Rollbar has automatically identified the suspected deployment where the error was first seen (indicated by the second red circle). Additionally, it has identified the code change where the error was introduced (indicated by the third red circle). You can click on these links to go straight to the code change in GitHub or Bitbucket. Jenkins is a popular open source server to automate continuous integration and continuous delivery. We'll show you how to configure Jenkins to notify Rollbar when a new version is deployed. Then, Rollbar will tell you the suspected deployment for each error. Our pet clinic example Rollbar and Jenkins should work with pretty much all applications but we chose the Java pet clinic project to demonstrate the integration capabilities. It is freely available and simple to run or modify. The source code... --- ### January 2022 Grouping Update - Published: 2021-12-20 - Modified: 2022-03-18 - URL: https://rollbar.com/development-updates/january-2022-grouping-update/ This month we are excited to roll out a new January Grouping Update which significantly improves Grouping quality for some of our more relevant SDKs. Mainly PHP, Ruby, Python and Javascript. This update simplifies over 100 Grouping rules within our Grouping rule set by: Reducing overgrouping with new rules placeholders added and an increase of 4. 16% in successful new fingerprints Fixing undergrouping by removing generic rules and decrease of 16. 36% in the affected fingerprints Finally, and the most exciting part, these improvements have been rolled out automatically for all accounts with auto-upgrade enabled, so you can focus on fixing bugs while we take care of the squashing effort! --- ### How We’re Improving Error Grouping - Published: 2019-05-15 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/how-were-improving-error-grouping/ - Categories: product - Tags: grouping Imagine that you are developing an application and there's an error in the code. When you release it to production, this error causes hundreds of thousands of crashes. In this case, a logging tool would list all the crashes but an error monitoring tool, like Rollbar, would attempt to group the crashes together. Now you would receive just one notification about an error that crashed hundreds of thousands of times instead of many notifications about different crashes. Error grouping is hence essential to any error monitoring solution. Our commitment to helping software developers spend less time on debugging has recently led to the acquisition of Hungary-based Samebug, experts in the topic of error grouping. With an expanded team we now have the resources to operate an entire squad focused on grouping algorithm improvements. This squad is made up of computer and data scientists working full time on delivering various improvements to the algorithm, both small and large, that will be rolled out gradually. We are excited to announce the release of the first few improvements, solutions to specific issues that are small but can be very annoying when they come up. Recognize Missing jQuery First off, we have a JavaScript-related improvement. We know how annoying it is to see many different items created when jQuery is missing. We decided to group these together to reduce the noise and let you focus on the real errors. Every JavaScript project should use this migration, as you might see this error even when... --- ### Update regarding Log4j Java vulnerabilities - Published: 2021-12-15 - Modified: 2022-02-10 - URL: https://rollbar.com/development-updates/update-regarding-log4j-java-vulnerabilities/ Rollbar is aware of the Log4j Java vulnerabilities (CVE-2021-44228 and CVE-2021-45046) and we have updated all the potentially impacted infrastructure and we are making updates available for our Java SDK users. We are dedicated to making sure that Rollbar runs quickly and securely within your applications.  Learn about how we’ve addressed the Log4J “Log4Shell” zero-day CVE-2021-44228 and CVE-2021-45046 --- ### December 2021 Grouping Update - Published: 2021-12-07 - Modified: 2022-02-10 - URL: https://rollbar.com/development-updates/december-2021-grouping-update/ We are pleased to announce our December 2021 Grouping Update that significantly improves grouping coverage and quality for some of our most common SDKs. Java, PHP, and Python issues now have from 2% to 6% higher coverage rates allowing users to discover more bugs and respond to them more quickly. Grouping quality has been improved as well by reducing overgrouping of errors caused by generic rules overwriting more specific ones. Additionally, this release improves our internal pattern standardization for easier rule management. We can continue training our models more efficiently and analyzing millions of crashes to distinguish different error types accurately. Best of all, these improvements have been rolled out automatically for all accounts with auto-upgrade enabled, so you can focus on squashing and fixing bugs! --- ## Events ### Welcoming Letania Ferreira - Published: 2019-04-15 - Modified: 2023-06-26 - URL: https://rollbar.com/blog/welcoming-letania-ferreira/ - Categories: company - Tags: team Letania is another new member of our support team and started as a Customer Service Engineer in December 2018. She’s new to the software engineering world and, like many other Rollbar employees, has a unique background that led her here. Letania has lived and worked in Europe, North America and South America. She is originally from Brazil, where she studied Portuguese and English as an undergrad. She went on to eventually earn her Master’s in Romance languages and a PhD in Romance Linguistics. She has previously worked as an English instructor in Belgium, has taught university classes as an assistant professor/visiting instructor at universities in Illinois and Brazil, and worked as a linguist in Brazil for an innovation technology company. After many years in this field, she attended Hackbright Academy to learn some basic coding skills but ended up falling in love with it and is now working towards becoming a full-fledged developer. When asked what drew her to pivot her career interests towards software engineering Letania responds that she was looking for a change to something new. Going from 20 years in academia to working for a startup may seem like quite the 180 but Letania finds a lot of similarities between the work and research she was doing in linguistics and coding. Both of them, she says, are based on finding and following rules and patterns. As a researcher she spent a lot of time running and analyzing large amounts of data to translate that data into actionable... --- ### We’ve partnered with the team over at Vue School to bring you Vue.js Forge Episode 4 for FREE! - Published: 2023-07-24 - Modified: 2023-07-24 - URL: https://rollbar.com/event/big-news-weve-partnered-with-the-team-over-at-vue-school-to-bring-you-vue-js-forge-episode-4-for-free/ --- ### Introducing Interactive Slack Notifications - Published: 2019-03-12 - Modified: 2021-07-19 - URL: https://rollbar.com/blog/introducing-interactive-slack-notifications/ - Categories: product - Tags: Slack Quickly responding to new, reactivated, and otherwise important exceptions is a critical part of adopting continuous delivery and other DevOps best practices. Rollbar provides code version-specific dashboards and a live feed for proactively monitoring for exceptions during a deploy, but for those exceptions that happen when you aren't actively watching Rollbar, our Slack integration is the most popular way to get real-time alerts. Previously our Slack alerts were read-only, but it's now possible to take immediate action on exceptions from within Slack, including: Assigning items to a teammate for further investigation. Resolving, muting, or reopening items. Setting the level to critical, warning, etc. Slack actions require the acting user to be logged into Rollbar, so you'll have a full audit trail and only members of your team with Rollbar access will be able to update items from Slack. Already have Slack notifications set up? In order to use Slack actions the authorization token used by Rollbar needs to be updated with a new scope. This is a quick change and can be done by clicking the link in the banner that appears in-app and then re-authorizing Rollbar's access to your Slack account. Slack actions are enabled for by default in all new projects, with the option to turn them on/off for an entire project or per notification rule. Want to add the Slack integration to your project? Check out our docs for Slack and notification setup. Feedback? Questions? We're excited to hear what you think and ready to help if... --- ### Webinar: Technical Intro to Improve: Release - Published: 2022-10-10 - Modified: 2022-10-10 - URL: https://rollbar.com/event/webinar-technical-intro-to-improverelease/ --- ### Webinar: Introduction to Improve:Release - Published: 2022-09-23 - Modified: 2022-09-23 - URL: https://rollbar.com/event/webinar-introduction-to-improverelease/ --- ### Introducing the Rollbar Pipe for Bitbucket Pipelines - Published: 2019-02-28 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/introducing-the-rollbar-pipe-for-bitbucket-pipelines/ - Categories: product - Tags: continuous-delivery Automating your deployment process is a critical step towards adopting continuous delivery. For teams that use Bitbucket for hosting their source code, Bitbucket Pipelines provide an easy way to automatically build and deploy when changes are made in your origin repository. The Rollbar team is excited to participate in the launch of Bitbucket Pipes, which make it even easier to configure your pipeline. Bitbucket Pipes makes it easy to build and automate a CI/CD pipeline that meets your exact needs. Bitbucket Pipes replaces custom-written scripts with parameterized calls to vendor-supported 'pipes'. For instance, you can now report a deploy to your Rollbar project with a call to the rollbar/rollbar-notify pipe: As you can see in the example above, adding the rollbar/rollbar-notify pipe takes just a couple of lines of YAML and it unlocks several features in Rollbar which will speed up your debugging process when exceptions occur. Deploy Tracking in Rollbar Reporting deploys to Rollbar makes it easier to correlate exceptions to code changes which may have triggered them: Each exception in Rollbar has a 'Suspect Deploy' which is the last reported deployment before it became active. Deploys will appear as an entry in your live exception feed so you can quickly see when code changes occurred. If your Rollbar account is on an Advanced or Enterprise plan, you can track exceptions by version, providing a real-time dashboard of exceptions occurring in your last deployed version. Reporting Deploys via the Bitbucket Pipe When you add the rollbar/rollbar-notify pipe to your... --- ### Webinar: Accelerating Code Quality with the DORA Metrics - Published: 2021-05-24 - Modified: 2023-06-20 - URL: https://rollbar.com/event/next-event/ --- ### Webinar: 99% DevOps Presents | The Anatomy of Observability - Published: 2021-04-29 - Modified: 2021-05-27 - URL: https://rollbar.com/event/title-lorem-ipsum-dolor-sit-amet-consectetur-adipi-scing-elit-sed-do-eiusmod-tempor-incididunt-ut-labore-et-dolore-magna-aliqua-3/ --- ### Conference: Developer Week Management 2021 - Published: 2021-04-29 - Modified: 2023-06-20 - URL: https://rollbar.com/event/title-lorem-ipsum-dolor-sit-amet-consectetur-adipi-scing-elit-sed-do-eiusmod-tempor-incididunt-ut-labore-et-dolore-magna-aliqua-2/ --- ### Welcoming Samebug to Rollbar - Published: 2019-02-26 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/welcoming-samebug-to-rollbar/ - Categories: company - Tags: behind-the-scenes Today we're announcing that we've acquired Hungary-based Samebug. This is an important moment for Rollbar and represents a big step in our mission to help companies build software better, faster, and our vision of a life without bugs. Two summers ago, Cory and I stumbled across the samebug. io website. We had been noodling on the observation that many of the bugs that developers find and fix via Rollbar are pretty similar to the ones that other developers are finding and fixing, and we were wondering if there could be a way that Rollbar could help connect those developers to each other and reduce that duplication of work. When we saw the stack trace search engine that Samebug had built, powered by what appeared to be a grouping algorithm not unlike ours, we were intrigued. Soon, we met Samebug's founders, Reni, Arpi, and Dani, and discovered kindred spirits. It was clear that we shared a vision of how much better building software could be, and an approach to business and life grounded in honesty and transparency. Over the past year and a half, we explored various ways we could work together, culminating in today's announcement. As a Rollbar customer, you can look forward to our core feature - grouping - getting better and better as we integrate Samebug's technology into the Rollbar grouping engine, and longer-term, to our combined team putting our heads together to solve this and other deep problems that remain unsolved by any error monitoring solution. And... --- ## News ### 4 Reasons Why You Need Error Monitoring - Published: 2019-02-19 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/4-reasons-why-you-need-error-monitoring/ - Categories: topics - Tags: business-impact Errors are a fact of life in web development, and even the world's greatest brands are not without fault. Errors can create unhappy customers, deter new ones and reduce revenues. An error monitoring solution offers a clear view of the most important errors based on how often they occur and how they impact users. It will give your engineering team confidence to deploy faster, and debug problems quickly, so they can get back to building new features. Here are four good reasons why you need error monitoring: 1. It Improves Customer Experience Most consumers now have high expectations for apps, and things like server errors, timeouts and missing resources can quickly degrade the user experience. A bigger issue is that the consumers don't even report many of the errors they encounter. Organizations that don't have an efficient system to identify and address errors will lose sales, customers, and market share should those errors persist or happen repeatedly. You shouldn't rely on customers to report problems, instead find and fix them proactively. An error monitoring solution gives you visibility into errors that affect the most users and highest value users. This helps your team prioritize errors by impact and efficiently allocate resources. The richer debugging capabilities of an error monitoring solutions can reduce Mean Time to Detect (MTTD) and Mean Time to Restore (MTTR), both of which can reduce outages and increase uptime. {: . highlightbox} “Rollbar is our early warning system for errors. The worst thing that can happen is... --- ### Rollbar to improve code with new AI-assisted workflows and automation-grade grouping - Published: 2020-11-19 - Modified: 2021-06-09 - URL: https://rollbar.com/news/rollbar-to-improve-code-with-new-ai-assisted-workflows-and-automation-grade-grouping/ Rollbar wants to shift developers’ focus to continuously improving code, instead of having to continuously fix it. --- ### Rollbar powers AI-assisted workflows with new grouping engine - Published: 2020-11-19 - Modified: 2021-06-09 - URL: https://rollbar.com/news/rollbar-powers-ai-assisted-workflows-with-new-grouping-engine/ Rollbar, providers of the Continuous Code Improvement Platform, is introducing AI-assisted workflows powered by its new automation-grade grouping engine, enabling developers... --- ### Rollbar Lets Developers Focus on Continuously Improving Code with AI-Assisted Workflows and Automation-Grade Grouping - Published: 2020-11-19 - Modified: 2021-05-27 - URL: https://rollbar.com/news/rollbar-lets-developers-focus-on-continuously-improving-code-with-ai-assisted-workflows-and-automation-grade-grouping/ Rollbar, providers of the Continuous Code Improvement Platform, today announced AI-assisted workflows powered by its new automation-grade grouping engine. --- ### Reduce noise in error monitoring with Grouping Suggestions - Published: 2019-01-16 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/reduce-noise-in-error-monitoring-with-grouping-suggestions/ - Categories: product - Tags: monitor One perennial problem we face in monitoring is dealing with noise. We don't want to miss important signals, but sorting through all the noise can be a chore. Ideally, we want to spend as little time as possible doing the setup work needed to achieve excellent signal-to-noise ratio. The feature we've just released will help you get closer to that optimal setup faster, with less work. Noise reduction using Rollbar Several major noise reduction mechanisms are built into Rollbar today: Automatic default grouping of all occurrences of an error, so if an error occurs 100 times, you'll see only one error item in your real-time error & crash reporting feed. Custom grouping rules you can set. For example, you can set a custom rule so that all future occurrences of an exception class are grouped as one error, regardless of the stack trace. You can also manually merge errors directly in the feed. When you do a manual merge all past occurrences get grouped, not just future ones. Custom grouping suggestions With Grouping Suggestions, Rollbar will now attempt to suggest a custom fingerprint rule whenever you manually merge errors. When you accept a suggestion a new custom fingerprint rule is created and you won't have to manually merge similar errors again in the future. How it works: Step 1: Perform a manual grouping Step 2: Review and accept suggestion The first release of this feature detects items with the same exception class and similar exception messages, and automatically generates the... --- ### Rollbar Announced AI-Assisted Workflows - Published: 2020-11-19 - Modified: 2021-06-09 - URL: https://rollbar.com/news/rollbar-announced-ai-assisted-workflows/ Rollbar announced AI-assisted workflows powered by its new automation-grade grouping engine. --- ### Rollbar rolls out service to improve error detection for developers - Published: 2020-11-18 - Modified: 2021-06-09 - URL: https://rollbar.com/news/rollbar-rolls-out-service-to-improve-error-detection-for-developers/ Rollbar Inc. today updated its Continuous Code Improvement Platform with a new “automation-grade grouping engine”... --- ### Error Monitoring In Zend 3 - Published: 2019-01-14 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/error-monitoring-in-zend-3/ - Categories: Code Tutorials, PHP - Tags: PHP Zend Framework 3 is a free and open-source PHP framework. It uses a model-view-controller (MVC) pattern which makes its structure consistent and maintainable. It also accesses the database in an object-oriented way. Instead of directly interacting with the database using SQL queries, you can use doctrine object-relational mapping (ORM) to manage the structure and relationships of your data. This makes code easier to write and maintain. In production applications, it’s important to monitor errors so you understand your users experiences and can fix issues before more users are affected. In this tutorial, you will see how to set up Zend Framework 3 to handle errors natively and send errors to the error monitoring service Rollbar. The error message can be seen in your PHP error log or in Rollbar, including a stack trace that provides information about the line of code that caused the error. Native error handling in Zend 3 The easiest and most basic way to handle errors is using try, catch, and finally statements. When an error is thrown in the try block, the catch block executes and handles the error. For example, you may want to record the error or present a more friendly error message to the user. try { $value = 5 / 0; } catch (\Exception $e) { echo $e->getMessage; } In production, the application can crash due to uncaught or runtime errors, such as when an application tries to access invalid data or code or an illegal action is attempted. To avoid... --- ### Rollbar Acquires Hungary-Based Samebug - Published: 2019-02-25 - Modified: 2021-05-27 - URL: https://rollbar.com/news/rollbar-acquires-hungary-based-samebug/ Rollbar announced it has acquired Hungary-based Samebug --- ### Lolapps engineers launch Rollbar - Published: 2013-02-26 - Modified: 2021-05-27 - URL: https://rollbar.com/news/lolapps-engineers-launch-rollbar/ Brian Rue and Cory Virok launch an error tracking platform for developers. --- ## Tradeshows ## Webinars ### Error Handling with Angular 6 - Tips and Best Practices - Published: 2019-01-04 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/error-handling-with-angular-6-tips-and-best-practices/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript Handling errors properly is essential in building a robust application in Angular. Error handlers provide an opportunity to present friendly information to the user and collect important data for development. In today's age of advanced front-end websites, it's more important than ever to have an effective client-side solution for error handling, which is covered in this article. An application that does not handle errors gracefully leaves its users confused and frustrated when the app suddenly breaks without explanation. Handling these errors across an application greatly improves user experience. Data can also be collected from within the error handlers to inform the development team about important issues that slipped past testing. In this article, we will compare several solutions for error handling in Angular apps. First we will describe traditional approaches using ErrorHandler and HttpClient, and then we will show you a better solution using HttpInterceptor. We'll also show how you can use this interceptor to track errors centrally in Rollbar. The shortcomings of the console log Beginners in JavaScript programming often start out using the console log because that is the default output in most development environments. Once you deploy your application to a production environment, you no longer have access to the console log. That's because the code is now running on the client browser. When those clients experience errors, you'll have no visibility to them unless you record them in a centralized location. In order to understand the user experience and how errors can affect it, you need... --- ### Speeding Up Software Delivery: You're Only As Good As Your Weakest Link - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/webinar/speeding-up-software-delivery-youre-only-as-good-as-your-weakest-link/ Learn about the trends in DevOps and modern application architectures, and the common challenges enterprises face as they try to scale and speed up software delivery. --- ### What we've shipped in 2018 - Published: 2018-12-27 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/what-weve-shipped-in-2018/ - Categories: product - Tags: triage With 2018 almost coming to a close, let's take a look at all the product improvements we've shipped this year . New features and SDK releases Account dashboard: Track error trends account-wide Versions: Monitor errors by deployed code revisions All items view: View all and/or specific errors across projects Enhanced stack trace Enhanced deploy API Official . NET SDK - now v2. 1 Official Golang SDK - v1. 0 Official React Native SDK - v0. 4 Integrations customizable data retention Notifications: edit notification rules before turning on, disable email notifications for a new project User onboarding: email domain whitelisting, user provisioning via Okta Search: search items with issues, search by method name in stacktrace A brand new Docs site For the full list, check our changelog. Tutorials If you're new to Rollbar, or want to use Rollbar with a language or framework new to you, check out these tutorials we've written in 2018. Examples included. JavaScript source maps Vue. js ASP. NET Xamarin Android iOS PHP Symfony PHP Magento PHP Wordpress On to 2019 ! If you aren't using a tool like Rollbar yet, you're practically outsourcing bug discovery to users. Rollbar provides realtime error monitoring to help you release better software faster. Instantly see all errors as they occur, and debug them before users notice. Give it a try for free! --- ### CircleCI and Rollbar on enabling Continuous Delivery - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/webinar/circleci-and-rollbar-on-enabling-continuous-delivery/ Join CircleCI CTO Rob Zuber and Rollbar Co-founder and CTO Cory Virok as they discuss 9 questions about continuous delivery. --- ### Debugging Apex Applications with Error Monitoring - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/webinar/debugging-apex-applications-with-error-monitoring/ Rollbar is the first company bringing the value of modern Error Monitoring and Debugging to the Apex ecosystem and to the broader Salesforce platform (supporting Apex, Lightning and Heroku). Learn how to set it up and start using it. --- ### Maximize Your Workflow Through the Clubhouse API - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/webinar/maximize-your-workflow-through-the-clubhouse-api/ Learn how the Clubhouse API can give you a greater amount of control over your data and help automate your workflow. --- ### Advanced Error Monitoring & Debugging With Rollbar - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/webinar/advanced-error-monitoring-debugging-with-rollbar/ Rollbar helps developers deploy better software, faster, with solutions that identify, prioritize and resolve coding errors. Join Rollbar's product experts as they showcase key features to reduce deployment time and cost with an accuracy that you and your team can rely on. In this webinar we will demo: - Error Monitoring with Rollbar Core - Error classification - Rollbar Query Language (RQL) for best in-class insights - Notifications Rules Engine - Rollbar release monitoring --- ### Monitoring errors in Xamarin apps - Published: 2018-12-20 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/monitoring-errors-in-xamarin-apps/ - Categories: .NET, Code Tutorials - Tags: dotnet Xamarin is based on Mono, the open source implementation of Microsoft's . NET Standard. It allows us to create apps that easily run in multiple devices like phones and smart watches. It solves the difficulties many developers face when they’re developing cross-platform apps like different coding languages and UI paradigms. With Xamarin, you can use C# as a single language for iOS, Android, and Universal Windows apps. Apps freezing, crashing, or slowing down are the top reasons for a bad review. According to a survey by Dimensional Research, 49 percent of users expect mobile apps to start within two seconds. If an app crashes, freezes, or has errors, 53 percent of users will uninstall it. These problems not only cause existing users to delete your app, but they can also discourage new users from downloading your app. That’s why having visibility into the performance of mobile apps in real time and from real users is so critical—it helps identify customer problems and create great user experiences. We will show you how to handle errors using both native error handling in Xamarin and using Rollbar, which is a dedicated service for remote error monitoring. Below, you can see we’ve created an example app that triggers an exception when the user clicks on a button. The error message will be tracked by Rollbar, including a stack trace where you can see the line of code that caused the error. Rollbar captures errors that occur anywhere in the app. Native error handling in... --- ### Smart Error Monitoring for Spring Developers - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/webinar/smart-error-monitoring-for-spring-developers/ Nobody likes to find out about errors from the customers themselves. The ripple effect of churn from a single user interaction is crucial to an organization. For Spring Developers, capturing errors early on in your application is important as it’s a popular framework for enterprise application. Join us to learn how to get started with a sophisticated Error Monitoring with simple integration for Spring apps. Learn key benefits, installation guidelines and configuration tips on Error Monitoring for Spring. In this webinar we will review: - Market Overview - Introduction to Error Monitoring for Spring Apps - How to get started with Rollbar for Spring - Key Features Overview - Live Q&A --- ### Best Practices for Moving from a Monolith to Microservices - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/webinar/best-practices-for-moving-from-a-monolith-to-microservices/ Transitioning from a Monolith to a Microservices architecture can take years to complete. Companies are under more pressure than ever before to innovate faster and decrease the time to market while maintaining best-in-class customer experience. In this webinar, we'll discuss: - Organizational changes that will help you adopt a Microservice architecture - How to bring change to your organization - How you develop applications in a Microservice architecture - Setting up your Monolith for Microservices and optimizing your local development environment --- ### Win-Win Deployment Strategies for Modern Apps - Published: 2018-11-13 - Modified: 2023-06-20 - URL: https://rollbar.com/blog/win-win-deployment-strategies-for-modern-apps/ - Categories: topics - Tags: continuous-delivery These days, the biggest change to software development is the frequency of deployments. Product teams deploy releases to production earlier (and more often). Months or years-long release cycles are becoming rare—especially among those building pure software products. Today, using a service-oriented architecture and microservices approach, developers can design a code base to be modular. This allows them to write and deploy changes to different parts of the code base simultaneously. The business benefits of shorter deployment cycles are clear: Time-to-market is reduced Customers get product value in less time Customer feedback also flows back into the product team faster, which means the team can iterate on features and fix problems faster Overall developer morale goes up However, this shift also creates new challenges for the operations or DevOps team. With more frequent deployments, it’s more likely that the deployed code could negatively affect site reliability or customer experience. That’s why it’s important to develop strategies for deploying code that minimize risk to the product and customers. In this article, we’ll talk about a few different deployment strategies, best practices, and tools that will allow your team to work faster and more reliably. Challenges of Modern Applications Modern applications are often distributed and cloud-based. They can scale elastically to meet demand, and are more resilient to failure thanks to highly-available architectures. They may utilize fully managed services like AWS Lambda or Elastic Container Service (ECS) where the platform handles some of the operational responsibility. These applications almost always have frequent deployments.... --- ### How to Show Errors in WordPress - Published: 2018-11-06 - Modified: 2024-03-07 - URL: https://rollbar.com/blog/monitoring-errors-in-wordpress/ - Categories: Code Tutorials, PHP - Tags: PHP WordPress is an open source blogging and website creation tool written in PHP and MySQL. It is a highly flexible content management system (CMS) that enables you to build and manage your website using just your web browser. According to a W3Techs survey, WordPress is used by 31. 8% of all websites. WordPress sites generate errors that can negatively affect users, but they are not reported in tools like Google Analytics. You need to examine server-side logs to determine how often they happen. These errors are not just generated by Wordpress, but by the dozens of plugins and custom themes that businesses add. Common WordPress errors experienced by users include the "white screen of death," “internal server error,” “connection timed out,” and many more. We’ve created an example app to demonstrate how errors are handled in WordPress. Also, we’ll show you how Rollbar can help you monitor and display errors on a dashboard. Rollbar will show you the error message along with contextual information to see the impact and debug the root cause. Native WordPress error logging WordPress has a built-in mechanism to log errors but it's not enabled by default. To turn it on, add the WP_DEBUG constant in your wp-config file. WordPress will turn on debugging and generate a debug. log file under {your website}\wp-content\debug. log. define ('WP_DEBUG',true); WordPress does not create debugging logs by default because it displays all the PHP errors on the live site. To prevent errors from being displayed and only record them in... --- ### Stacktrace Enhancements - Code Context in each Traceback Frame - Published: 2018-10-26 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/stacktrace-enhancements-code-context-in-each-traceback-frame/ - Categories: product - Tags: stacktrace Rollbar item stacktrace has a new UI and this change was done to support the new and advanced stacktrace. Users hosting their code on GitHub, GitLab or Bitbucket can now view code context within each frame of the stacktrace! Code context is a new feature in stacktrace through which we show additional lines of code for each entry in a traceback, saving you the trouble of jumping to your source code to figure out where exactly an exception occurred. One of our lovely engineers decided to demonstrate the benefits of the new stacktrace into her workflow. Of course if you're already well aware of the benefits, feel free to check out How to set up code context for your project in our docs. Debugging stacktrace without the code context Let’s go through a Rollbar item where I actually used the code context in the new stacktrace to fix a bug quickly (Easter egg - I realized this was a bug IN the code context feature itself! ) The Rollbar title/exception message for this item reads - AttributeError: 'SCMRepoNotAccessible' object has no attribute 'api_name'. From this, I know that SCMRepoNotAccessible. api_name has failed. From working on this feature, I know that SCMRepoNotAccessible is a custom exception. Now I take a look at the last frame of the stacktrace. From here I see the exact line of code where the error occurred - error_data = e. api_name. Based on this information solely, here's my hypothesis - It looks like we tried to... --- ### How to Monitor Errors in Magento 2 the Easy Way - Published: 2018-10-25 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/how-to-monitor-errors-in-magento-2-the-easy-way/ - Categories: Code Tutorials, PHP - Tags: PHP Magento is the largest open-source eCommerce platform in the world, used by more than 250,000 merchants. While Magento makes setting up a store easier, there is complexity with custom plugins and extensions, and custom site behavior. Sophisticated stores also introduce more opportunity for problems with errors, exceptions, bugs, performance, and more. A critical production issue might not just cost you a sale, but also customer trust. Errors can affect your business in surprising ways. To avoid impacting customers, your team needs visibility into problems that affect user experience to fix issues as quickly as possible. In this post, we’ll show you how to enable exception printing and monitor errors in Magento 2 applications, both using the native exception log and the popular error monitoring solution Rollbar. Rollbar will give you an overview of all the errors happening on your store, how many customers are affected, and debugging information to find the root cause. We will walk you through the process of setting up Rollbar with Magento 2. We’ve created an example app that will trigger an exception when the user clicks on a button. The error message is recorded on Rollbar with a stack trace so you can see the exact line of code that caused the error. Native exception handling in Magento 2 Magento 2 gives you exception logs in a file by default. If you get an error message that says “There has been an error processing your request, Magento exception printing is disabled by default for security... --- ### Enhancements to the Rollbar Deploy API - Published: 2018-10-09 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/enhancements-to-the-rollbar-deploy-api/ - Categories: product - Tags: monitor Rollbar introduced Versions a few months ago, providing developers a way to easily see whether their most recently deployed code changes are introducing new or reactivated errors. As a follow-on improvement, we've updated our Deploys API so you can notify Rollbar immediately when starting a deploy as well as when it completes. Notifying Rollbar immediately when a deploy starts will ensure that notifications about the new version will include as much information as possible, including the number of commits since the previous deploy as well as the user who started the deploy. Read on to see how to use the updated Deploy API to notify Rollbar when your deploy starts and finishes. Starting a Deploy For this post I'll show you how to notify Rollbar using a Bash deploy script, but any tool that is able to make HTTP calls can be used to report deploys to Rollbar. The example relies on curl and jq, both of which can be downloaded and intalled for free, and come pre-installed in many environments. At the start of your deploy script, you'll need to send a POST request to report a new deploy and save the deploy_id into a variable so it can be used later: # ... # set variables for the POST command ROLLBAR_ACCESS_TOKEN=YOUR_POST_SERVER_ITEM_ACCESS_TOKEN_HERE ENVIRONMENT=development GIT_SHA=YOUR_GIT_SHA_HERE # ... ROLLBAR_DEPLOY_ID=`curl https://api. rollbar. com/api/1/deploy/ \ --form access_token=$ROLLBAR_ACCESS_TOKEN \ --form environment=$ENVIRONMENT \ --form revision=$GIT_SHA \ --form local_username=$USER \ --form status=started | jq -r '. data. deploy_id'` # Additional steps for your deploy... Running deploys... --- ### Error Monitoring in Symfony - Published: 2018-09-27 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/error-monitoring-in-symfony/ - Categories: Code Tutorials, PHP - Tags: SDK Symfony is a PHP model-view-controller framework used to develop web applications. The main reasons Symfony has acclaimed fame among the developer community are its database engine compatibility, its faster development and its robust system. These features make it easy to develop and customize web applications. To make your web application successful, you should consider how user experience is affected by the inevitable errors that pop up in production. Customers can walk away from a purchase or churn out from a subscription when applications do not run properly. A fast response to critical problems is essential. To minimize customer impact, it is important to track and fix issues quickly. In this tutorial, we’ll show you how to add native error handling so you can capture handled and unhandled errors. Doing so lets you present a clear message to the user as well as track the error to prioritize fixes. Then, we’ll show you how to monitor errors using Rollbar. Rollbar is an error monitoring service that tracks errors centrally and gives you tools to better monitor and troubleshoot problems in production. We'll show a working example for Symfony 3, but Rollbar also supports Symfony 4. Native error handling in Symfony 3 Starting at the most basic level, error handling can be achieved using try, catch and finally statements. These statements can be used to handle caught exceptions in Symfony components. try { $value = 5 / 0; } catch (\Exception $e) { return $e->getMessage } Symfony 3 also offers multiple approaches... --- ### Error Handling in React Native > Learn how to catch unhandled exceptions in React Native, perform tasks to provide the best experience for users, and handle these errors using our SDK. - Published: 2018-09-20 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/error-monitoring-in-react-native/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript React Native has recently gained popularity among the mobile app developer community due to its cross platform compatibility, quick development cycle and better user experience. It is easier to develop, build and maintain apps using React Native. For mobile apps, business success or failure is determined by user experience and retention rate. The retention rate can drop immediately if the application does not work properly, causing customers to switch to other apps or leave poor reviews in the app store. A fast response to critical errors is essential to minimize customer impact. Let’s start by covering how to handle errors in vanilla React Native. We will then show you how Rollbar is a game changer to get better error monitoring. How to handle errors in React Native Error handling in vanilla JavaScript can be achieved using try, catch and finally statements. You can use these statements to handle caught exceptions in React Native components. try { var test; test. color; } catch(err) { // handle error here } React Native has its own mechanism to handle uncaught exceptions. This allows you to track the error, display a message to the user, or attempt to recover. See the example below: const previousHandler = ErrorUtils. getGlobalHandler; ErrorUtils. setGlobalHandler((error, isFatal) => { // handle the error here console. log(error); }); Logging to the console works fine during development, but there is no out-of-the-box way to track these errors centrally after they are installed. This is essential to see how many of your users... --- ### Introducing Versions - Published: 2018-08-31 - Modified: 2021-07-19 - URL: https://rollbar.com/blog/introducing-versions/ - Categories: product - Tags: monitor We built Versions for customers who are adopting software development practices like Continuous Delivery. One important habit to cultivate when you're seeking to adopt Continuous Delivery is to deploy early and often. This is easier to do when you have a tool like Rollbar that allows you to see all production errors instantly and quickly prioritize and debug them as needed. With Versions, we're making it even easier for you to use Rollbar to monitor errors from code revisions you've just deployed. {: . highlightbox} If you haven't heard about All Items View - another Advanced feature we've broadly released recently - I encourage you check out this post. What Versions is for Versions allows you to see all new and reactivated errors from each deployed code version across multiple projects in your account, from a single screen. This feature comes in handy if you deploy continuously or have multiple code versions running in production. With Versions, it’s easy to tracking how the quality of each deployed version improve or regress over time. Triaging becomes easier too, because each version entry comes with information on who deployed it, which errors have been resolved, and which have not. Versions is deploy pattern agnostic, so it works with any pattern you use, including canary, blue/green, or anything else. It gives you the information that helps you decide whether to do a full rollout or a rollback. In addition to the account-level Versions, you also get a project-level Versions feed for each of... --- ### Introducing All Items View - Published: 2018-08-30 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/introducing-all-items-view/ - Categories: product - Tags: error-feed Increasingly more software teams - ourselves and our customers included - are adopting practices like microservices and/or Continuous Delivery. What this typically means in terms of how our customers use Rollbar is two-fold: First, they set up multiple projects in Rollbar. A common setup is to have one project for each code repository of a deployable service. Second, they deploy to production often. Each time they deploy a release, they monitor Rollbar Items feed closely for errors. We built the All Items View to make error monitoring much easier for those using Rollbar in such ways. What All Items View is for The All Items View is very useful when you want a specific view across projects, because you can apply filters or search across them to create that view. For example, you're a Front-end Engineer and you have 10 different Rollbar projects, and you want to see specifically just the JavaScript errors from those ten. It's also handy when you are tasked to monitor multiple Rollbar projects as part of a deployment, because you can see not only the errors across projects, but also if they've been assigned to anyone and triage accordingly - all from a single screen. Sometimes errors from different projects may be correlated. A client-side error may result from a database error, and so on. All Items View makes it easier for you to notice such correlations. Try it yourself All Items View is one of two new features we've been incubating in Labs for... --- ### Error Monitoring in iOS - Published: 2018-08-30 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/error-monitoring-in-ios/ - Categories: Code Tutorials - Tags: mobile In mobile apps, it’s important to monitor errors so you can understand your user’s experience. Your team should know quickly when there are problems with the app itself or your backend services so you can fix the issue before more customers are affected. We’ll show you how to handle errors in iOS apps. We’ll then show you how Rollbar error monitoring can give you better visibility into errors and help you troubleshoot them faster. Native error handling in iOS There are multiple ways to implement exception handling in Objective-C and Swift. We’ll focus on Swift in our examples as its a newer language. You’ll commonly use NSError to create runtime errors and use do-catch statements to handle them: do { throw NSError(domain: "my error description", code: 42, userInfo: ) } catch let error as NSError { // handle the error print("Caught NSError: \(error. localizedDescription), \(error. domain), \(error. code)") } Swift also offers a mechanism to handle uncaught exceptions. This allows you to track the error, display a message to the user, or attempt to recover. See the example below. NSSetUncaughtExceptionHandler { exception in // handle the error print("Uncaught exception", exception) } This lets you easily track the error in logs during development. However, it doesn’t offer an easy way to track errors once the app is installed on your customer’s phone. Error monitoring with Rollbar Rollbar offers an easy way to track exceptions and errors in your apps. It automatically captures errors that occur anywhere in the app, and reports... --- ### Error tracking with Vue.js - Published: 2018-08-09 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/error-tracking-with-vue-js/ - Categories: Code Tutorials, JavaScript - Tags: error-handling, vuejs Vue (pronounced /vjuː/, like view) is a progressive framework for building user interfaces on the web. Vue can power sophisticated single-page applications and is often used in combination with modern tooling and supporting libraries. We’ll show you how to add error handling in a Vue application to capture caught and uncaught errors. This gives you an opportunity to recover and update what’s presented to the user, as well as track the error to prioritize fixes. We’ll also show how to monitor errors in production using Rollbar. How to handle errors in vanilla Vue You can catch exceptions in vanilla JavaScript using basic try, catch and finally statements. You can use these statements to handle caught exceptions in Vue components. In this example, we are simply logging to the console. try { JSON. parse("non-JSON data") } catch(e) { console. log('Exception: ', e) } Vue provides a standard API to add a custom errorHandler. You should configure this on your root Vue instance, typically in a main. js file. However, it only captures errors that occur during component rendering. That means it won’t catch errors that happen later as a result of user behavior, etc. Vue. config. errorHandler = err => { console. log('Exception: ', err) } To handle errors globally across your entire page, you can add a handler to the onerror function on the window. window. onerror = function(message, source, lineno, colno, error) { console. log('Exception: ', error) } While this is great for handling errors during development, when you... --- ### Top 10 PHP errors from 1,000+ projects (and how to avoid them) - Published: 2018-07-30 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/top-10-php-errors-from-1000-projects-and-how-to-avoid-them/ - Categories: topics - Tags: Top Errors To give back to our community of developers, we looked at our database of thousands of projects and found the top 10 errors in PHP apps. We’re going to show you what causes them and how to prevent them. Avoiding these "gotchas" will make you a better developer. Because data is king, we collected, analyzed, and ranked the top 10 PHP errors. Rollbar collects all the errors for each project and summarizes how many times each one occurred. We do this by grouping errors according to their fingerprints. We group two errors if the second one is just a repeat of the first. This gives users an excellent overview instead of an overwhelming big dump like you’d see in a log file. We focused on the number of projects experiencing an error because we wanted to see the errors that affect the most developers in different companies. If we looked only at the number of times each error occurred, high-volume customers could overwhelm the data set with errors that are not relevant to most readers. The errors below are the ones most likely to affect you and your company. We'll describe each error in more detail starting with the most common. At the end, we'll share best practices to avoid shipping them to production. 1. PHP Parse error: syntax error, unexpected end of file A parse error occurs when code that contains a syntax error is executed. Syntax errors needn’t be large, not complicated, as the following example demonstrates. $test=... --- ### Error monitoring in Golang - Published: 2018-07-03 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/error-monitoring-in-golang/ - Categories: Code Tutorials - Tags: golang Rollbar is proud to announce its error monitoring SDK for the Go language (aka Golang). It’s an open source programming language originally created by Google and is growing in popularity. It’s a low-level language like C, but also offers garbage collection, an easy-to-use package system, and other features. If you’re used to languages like Java or Javascript, then Go’s way of handling errors will be new to you. We will give a brief introduction on how error handling works in Go, then cover how you can monitor errors in production apps. Using the error type Go uses an error type to indicate an abnormal state. For example, the os. Open function returns an error value when it fails to open a file. Many people think this is more clear than throwing an error or returning a nil value. The error type is an interface that you can implement to create your own errors. The error interface requires an Error method which returns a string. This allows you to print errors out in the console or in a log message. Specific error implementations might have additional methods. type error interface { Error string } Go also allows you to implement functions with multiple return values. This is commonly used to provide one value upon success, and a second value upon an error. Let’s dive into an example showing how we can handle multiple return values. Below, the calculateSqrt function will return an error when you pass a negative number. That’s because... --- ### Errors on the world’s top 100 websites and how to avoid them - Published: 2018-06-13 - Modified: 2023-04-27 - URL: https://rollbar.com/blog/errors-on-the-worlds-top-100-websites-and-how-to-avoid-them/ - Categories: topics - Tags: Top Errors When you think of the top 100 sites in the world, you think of high-traffic domains and pages coded to perfection. In fact, even the most popular sites in the world have errors hidden behind the scenes that are still visible in your browser’s developer tools. These can affect your experience as a user directly, create inaccurate tracking data and security vulnerabilities, and even lose the company revenue. We found that most of the top 100 sites had several errors which could be easily monitored and prevented by their IT team. If errors happen on these popular sites, it can happen on your company’s website too. We’ll show you the most common errors and how to avoid them. {: . imgcaption} Overview of Errors found on the Top 100 Alexa Sites How We Found The Errors We used Alexa's ranking to identify the top 100 websites based on number of visitors. We visited each of these websites using the popular Google Chrome browser and disabled all extensions to capture the most native experience. We then recorded which errors displayed in the developer tools console. You can see these errors yourself by opening your browser’s developer tools feature. In Chrome it’s in the menu under More tools -> Developer tools. Here is what it looks like at Huffington Post: {: . imgcaption} Chrome Developer Tools showing a list of HuffingtonPost errors That’s a mess to read! We’ll make it easier to understand by grouping these errors into common themes. Then, we’ll... --- ### Data, Privacy, and Compliance - How We Prepared for GDPR - Published: 2018-05-21 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/data-privacy-and-compliance-how-we-prepared-for-gdpr/ - Categories: product - Tags: security Over the past couple of months it has been very difficult not to overhear conversations about GDPR and its implications on how we build and maintain software. Some were particularly memorable. "No, I can't fire you right now, not when we're a month away from GDPR! " - Random person overheard yelling on the phone in San Francisco At Rollbar, we've been working hard to be ready. This is a story about how we prepared for GDPR. What is GDPR? GDPR{:target="_blank"} is a new, EU-wide regulation that replaces the 1995 EU Data Protection directive. It strengthens the privacy and control EU residents have over their personal data, and is broad in reach because any organizations that process data on EU residents must be compliant, even if they aren't based in the EU. Failure to comply may result in severe penalties of up to 4% of an offending organization's global revenue. GDPR challenges To us, GDPR changes everything. We've gone from a world where data is always an asset, to one where data is both an asset and a liability. This fundamentally changes how we think about collecting, keeping, and deleting data, and where the value for our customers is in each of those things. We were faced with a few challenges in this project, including: Hard deadlines We practice agile software development. What that means to us is while we have a rough idea of when we'd like to release a feature, the exact release date depends on the progress... --- ### Monitoring Errors in Android Apps - Published: 2018-05-09 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/monitoring-errors-in-android-apps/ - Categories: Code Tutorials, Java - Tags: java When developing mobile apps it’s important to monitor errors so that you can understand your user’s experience. You need deeper insight than just a crash report because errors could cause a degraded user experience or a drop in key behavioral metrics. Your team needs to know quickly when there are production problems either with the app itself or with your backend services so you can fix the issue before more customers are impacted. Rollbar’s Android SDK lets you track and analyze errors that happen in your Android native applications, and even trace problems to backend services and third party APIs. It provides you with a live error feed from your application, including complete stack traces and contextual data to debug errors quickly. We also track the environment the error is coming from (prod or staging), the server that generated the error, and even the user’s session data. You can then quickly assign ownership of errors to your team and track when they are fixed. Learn more about Rollbar’s product features for Android. Below, you can see that we've created an example app that triggers an exception when the user clicks on a button. The error message is tracked in Rollbar, including a stack trace where you can see the line of code that caused the error. Rollbar captures errors that occur anywhere in the app. You can follow along with our example using the source code on GitHub. Adding Rollbar in your code Visit https://rollbar. com and sign up for... --- ### Top 10 errors from 1000+ Ruby on Rails projects (and how to avoid them) - Published: 2018-04-18 - Modified: 2022-11-08 - URL: https://rollbar.com/blog/top-10-errors-from-1000-ruby-on-rails-projects-and-how-to-avoid-them/ - Categories: topics - Tags: Top Errors To give back to our community of developers, we looked at our database of thousands of projects and found the top 10 errors in Ruby on Rails projects. We’re going to show you what causes them and how to prevent them from happening. If you avoid these "gotchas," it'll make you a better developer. Because data is king, we collected, analyzed, and ranked the top 10 Ruby errors from Ruby on Rails applications. Rollbar collects all the errors for each project and summarizes how many times each one occurred. We do this by grouping errors according to fingerprinting. Basically, we group two errors if the second one is just a repeat of the first. This gives users a nice overview instead of an overwhelmingly big dump like you’d see in a log file. We focused on the errors most likely to affect you and your users. To do this, we ranked errors by the number of projects experiencing them across different companies. We intentionally looked at the number of projects so that high-volume customers wouldn't overwhelm the data set with errors that are not relevant to most readers. Here are the top 10 Rails errors: You’ve probably noticed some familiar faces in there already. Let’s dig in and take a look at the errors in a bit more detail to see what might cause them in your production application. We'll provide example solutions based on Rails 5, but if you’re still using Rails 4 they should point you in the... --- ### 5 Surprising and Sneaky Ways Errors Impact Your Business - Published: 2018-04-16 - Modified: 2022-12-07 - URL: https://rollbar.com/blog/5-surprising-and-sneaky-ways-errors-impact-your-business/ - Categories: topics - Tags: error-monitoring Every app is imperfect and generates errors, but do you know how errors affect your users and business? When you look at logs for a large application, you might see thousands of errors per day and not know where to start. Even worse are errors that are not tracked by your application. They could be buttons that stop working, input that isn’t saved, or any number of other issues. Without proper error tracking, you are flying blind to these user experience problems. Unfortunately, developers who are deep in the code are not expected to understand how these errors impact users, and ultimately, their company’s finances. Even if they know of an error that should be fixed, it can be difficult to articulate why they should be fixed instead of developing a new feature. Here are five ways developers can advocate to management about the importance of fixing errors. User Experience Customers don't report the vast majority of errors they encounter in your product or website. That means you could miss a large percentage of problems if you aren’t tracking and addressing them proactively. If a customer experiences a critical error during a trial period or onboarding you might lose that customer before they even get started. Established customers may be more understanding, but repeated errors over time can lead to death from a thousand cuts. Knowing who was affected by a problem and proactively reaching out can turn a frustrated user into a devoted one. Shortcut co-founder and CTO Andrew... --- ### New Relic vs Scout: Which APM is right for you? - Published: 2018-04-05 - Modified: 2022-11-30 - URL: https://rollbar.com/blog/new-relic-vs-scout/ - Categories: product - Tags: APM This is a guest post by Derek Haynes from Scout, an APM that integrates with Rollbar. When New Relic launched ten years ago, web applications had a tendency to fail hard and in more obvious ways: Today, it's easier to build resilient apps, but they fail in more complex, unique, and subtle ways. These issues are time-consuming to track down. While several niche New Relic alternatives have appeared, they've focused on a lighter feature set versus solving these increasingly hard performance problems. What is new relic used for? New Relic is a Software as a Service offering that focuses on performance and availability monitoring. It uses a standardized Apdex (application performance index) score to set and rate application performance across the environment in a unified manner. What does new relic do? New Relic is observability software that teams use it to monitor the performance of their applications and infrastructure. New relic tracing New Relic APM provides trace visualizations designed to help you quickly understand why a specific request is slow, where an error originated, and where you can optimize your code to improve the experience for your customers. Unlike existing "New Relic Lite" alternatives, Scout approaches performance monitoring much like Rollbar's best-of-breed error monitoring. Scout is designed to drastically reducing the investigation time for these complex performance issues. Let's investigate a modern-day performance issue with Scout and compare the experience to New Relic. A sudden increase in response time You hop into Scout and see this chart: There's a clear... --- ### Error monitoring in ASP.NET MVC - Published: 2018-03-07 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/error-monitoring-in-asp-net-mvc/ - Categories: .NET, Code Tutorials - Tags: dotnet ASP. NET MVC is a modern web development framework that combines the features of MVC (Model-View-Controller) architecture for better separation of concerns and the best parts of the ASP. NET platform. We’ll show you an example of how to catch errors and exceptions in ASP. NET MVC using a global action filter. We’ll also show you how to track them in Rollbar’s error monitoring service. This will give you real time visibility into your errors in production. It also captures person data and other context from your app so you can solve errors faster. Above, you can see that we've created an example app that triggers an an exception when the user clicks on a button. The error message is tracked in Rollbar, including a stack trace where you can see the line of code that caused the error. Create a global action filter To track all of our exceptions, we have multiple approaches in . NET. Using a global action filter is the easiest way to catch all the exceptions. It receives uncaught exceptions for your whole application, not just an individual controller. We’ll show you how to override it to create your own global action filter with exception tracking. Here are some simple steps to create global action filter in your application. Open up your own ASP. NET MVC project or use our open source example on GitHub at Rollbar-Dotnet-Example. You can use this filter to add any error monitoring solution, but we will show an example of... --- ### Send Rollbar Error Alerts to Cisco Spark - Published: 2018-03-01 - Modified: 2025-04-22 - URL: https://rollbar.com/blog/send-rollbar-error-alerts-to-cisco-spark/ - Categories: product - Tags: integrations Cisco Spark is a enterprise collaboration platform from Cisco that includes messaging, video conferencing, desk phones, and digital whiteboards to mention a few. If your organization uses Cisco Spark, using Rollbar with it has just got easier. Depending on your setup, you can now receive Rollbar alerts not just in your messaging apps but also on that giant screen in the meeting room. As a Cisco Spark customer you've invested a lot in enabling enterprise collaboration. With this new Rollbar integration, you can further extend the value of the platform for your engineering teams. You can now get notified directly in Cisco Spark when certain situations occur, such as when a new error is detected by Rollbar, or when an error occurs at a very high volume within a specified time period. If you've enabled deploy tracking in Rollbar, you can also notify Cisco Spark of deploys. Rollbar alerts in Cisco Spark: As always, you can customize what alert notifications Rollbar should send. You can also configure which space in Cisco Spark the alerts should go to. Cisco Spark integration settings in Rollbar: For more instructions on how to enable this integration for your account, check out our Docs page{:target="_blank"}. Please feel free to reach out if you have any questions! If you haven’t already, sign up for a 14-day free trial of Rollbar and reduce production issue resolution times. --- ### Announcing Our New .NET Error Monitoring SDK - Published: 2018-02-12 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/announcing-our-new-net-error-monitoring-sdk/ - Categories: product - Tags: dotnet Rollbar is happy to announce our official . NET error monitoring SDK. This new . NET SDK is more rreliable, supports all of the popular . NET platforms (NET Standard, . NET Framework, . NET Core, ASP. NET MVC, UWP, Mono, Xamarin), easy to configure, multithreading friendly, and more. Rollbar helps you monitor errors in production applications. It provides you with a live error feed from your applications, including complete stack traces and contextual data to debug errors quickly. It also lets you easily understand your user experience by tracking who is affected by each error. Check out our features page to learn more about how it can help you. {: . imgcaption} . NET error monitoring, as seen in Rollbar Improvements Multi-target support including . NET Standard 2. 0 and up, . NET Framework (or Full Framework) 4. 5 and up, and . NET Core 2. 0 and up. It also supports UWP, Mono, and Xamarin. Native asynchronous (“fire-and-forget”) implementation. Due to its async nature the SDK has very little impact on its host at runtime. A blocking (synchronous) implementation of the same methods is also available. Rate limiting and buffering of all messages. Automatic retries in case of network failure. Person information is now a part of a notifier configuration object, including field scrubbing for privacy. Improved interface by separately defining ILogger and IRollbar. ILogger also now supports chaining calls. Multiple instances of the notifier can be separately and differently configured, including different access tokens. Easier configuration including... --- ### New Integration - Auto-create Shortcut stories with error data from Rollbar - Published: 2018-02-09 - Modified: 2022-12-07 - URL: https://rollbar.com/blog/new-integration-auto-create-shortcut-stories-with-error-data-from-rollbar/ - Categories: product - Tags: triage At Rollbar, we use Shortcut to manage our software projects. One of the many ways we use it is for tracking issues in product releases. We'd have an epic in Shortcut for each release, and create stories for bugs associated with the release that we need to fix. This is especially useful when we're working on service packs. If you're not familiar, Shortcut is a project and product management software designed for agile software teams. With this integration, you can now automatically: Create a story in Shortcut for a Rollbar error, based on rules you set Include in the story the stack trace and a link to the error details data in Rollbar Mark the story resolved in Shortcut when it's resolved in Rollbar Change the status of a Shortcut story when an error is re-activated Shortcut integration settings in Rollbar: Shortcut story from a Rollbar error: To get started, check out this integration guide from Shortcut. Let us know if you have any questions, or tell us what you think! If you haven’t already, sign up for a 14-day free trial of Rollbar and stop flying blind in production. --- ### Introducing the Account Dashboard - Published: 2018-02-07 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/introducing-the-account-dashboard/ - Categories: product - Tags: monitor {: . highlightbox} Update: As of Aug 1st, 2018 we've made Account Dashboard available to all users, including those on Essentials plans. The Account Dashboard for users in Advanced plans also includes information on deploys and when they took place. As part of this general release, we've removed the Labs label from the Account Dashboard feature. We are excited to release our new Account Dashboard! The Account Dashboard gives your engineering team insight into errors across multiple Rollbar projects. This insight provides an overview of how each application and service is performing, so you can quickly identify and drill down into problem areas and error trends. Your browser does not support the video tag. In today’s microservices world, applications consist of multiple services that interact together to deliver the full user experience. There is the client side of the application that the user typically sees, which may be a webpage or mobile app. Behind that, there may be an application server and multiple API services, often owned by separate development teams. This makes the job of monitoring more complex because you need to monitor all the services at once. Errors or a loss of availability in any one service can result in cascading failures to downstream services, and ultimately the user. Check out what Jason Kozemczak, Tech Lead at Instacart had to say about the Account Dashboard. The Account Dashboard makes it even easier than before to understand the overall health of the Instacart product as well as individual teams/systems... --- ### Debugging JavaScript with Source Maps > Minified JavaScript code generates source maps that can help trace and debug problems back to the exact line of source code. - Published: 2018-02-06 - Modified: 2022-06-17 - URL: https://rollbar.com/blog/debugging-javascript-with-source-maps/ - Categories: product - Tags: JavaScript One of the frustrating situations I often encounter when debugging JavaScript, is tracking down JavaScript errors to line 23 col 63475. I felt as though I was right on the edge of seeing the offending code and being able to fix it. And then, reality came crashing down. I realized that I’ve managed to debug myself right into the middle of a minified JavaScript file . There is a better way - Source Maps. JavaScript source maps are the key to taking what you’ve narrowed down in the minified code, and then being able to map them back to the source code so that you can view and resolve the problem without having to figure it out in the minified code. Source maps are generated when JavaScript code is minified. By using the source map in production, you can trace your problems back to the exact line of source code. It also allows you to use your browser's developer console to step through the source code when debugging problems. We’ll look at how to generate a source map, and then we’ll look at how they work, and how we can use them to make our lives easier. You can download or clone the source for the following demo from https://github. com/echovue/javascript-calculator. The source includes the original JavaScript file, the minified JavaScript file, and the source map. If you already know how to generate a source map or just want to use the generated file, you can skip down to How... --- ### Top 10 JavaScript errors from 1000+ projects (and how to avoid them) - Published: 2018-01-24 - Modified: 2022-06-20 - URL: https://rollbar.com/blog/top-10-javascript-errors-from-1000-projects-and-how-to-avoid-them/ - Categories: topics - Tags: JavaScript To give back to our community of developers, we looked at our database of thousands of projects and found the top 10 errors in JavaScript. We’re going to show you what causes them and how to prevent them from happening. If you avoid these "gotchas," it'll make you a better developer. Because data is king, we collected, analyzed, and ranked the top 10 JavaScript errors. Rollbar collects all the errors for each project and summarizes how many times each one occurred. We do this by grouping errors according to their fingerprints. Basically, we group two errors if the second one is just a repeat of the first. This gives users a nice overview instead of an overwhelming big dump like you’d see in a log file. We focused on the errors most likely to affect you and your users. To do this, we ranked errors by the number of projects experiencing them across different companies. If we looked only at the total number of times each error occurred, then high-volume customers could overwhelm the data set with errors that are not relevant to most readers. Here are the top 10 JavaScript errors: Each error has been shortened for easier readability. Let’s dive deeper into each one to determine what can cause it and how you can avoid creating it. 1. Uncaught TypeError: Cannot read property If you’re a JavaScript developer, you’ve probably seen this error more than you care to admit. This one occurs in Chrome when you read a... --- ### Monitoring tools for serverless environments and AWS Lambda - Published: 2018-01-08 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/monitoring-tools-for-serverless-environments-and-aws-lambda/ - Categories: Code Tutorials - Tags: AWS-lambda Serverless computing platforms like AWS Lambda represent a new computing paradigm. Over the past decade, we’ve been trying to abstract the application layer from the infrastructure layer. VMs started this by virtualizing hardware servers, and Docker containers extended this by packaging just the application code separate from the host system. The next step in this process is to completely remove the host from the equation, and simply focus on the application code—which is what serverless computing is all about. But as with most things new, serverless forces you to change how you used to do things, including the way you monitor functions. Below, I explain how monitoring changes in a serverless environment. I focus on Lambda in particular, although most of these observations apply to any type of modern serverless platform. How monitoring is different with serverless In traditional client-server apps, you typically monitor the performance of your servers, network latency, and more. However, with serverless platforms like Lambda, these metrics are irrelevant. This is because the vendor manages the underlying servers and plumbing, leaving you to focus exclusively on your application code. This means you don’t need to worry about how much compute power your servers have available to execute your code. Lambda automatically scales the available compute capacity to ensure your code is executed (there’s a caveat, but more on that later). You don’t have to worry about load balancing across multiple servers, or optimizing network latency. AWS takes care of this, too. Serverless metrics to monitor Yet... --- ### What We Shipped in 2017 - Published: 2017-12-28 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/what-we-shipped-in-2017/ - Categories: product - Tags: monitor At Rollbar, 2017 has been a year of exciting growth and development for the product and the team. We've grown the total number of users to over 100,000, processing billions of events per week, and the team has more than doubled in size. I know it's cliche, but, it genuinely does feel like we're just getting started. ;-) Before we put this year behind us and speed into 2018, I thought we'd look back, and share some of the highlights of what we shipped in 2017. Error Notifier SDKs PHP SDK 1. 0+ JavaScript SDK 2. 0+ Lambda support for Python and Node Laravel SDK Java and Android SDK 1. 0+ React Native SDK (Alpha) iOS SDK 1. 0+ Product Features JavaScript Telemetry JavaScript Source Maps Major JavaScript source map updates Un-minify JavaScript method names Automatic JavaScript source map processing Error Merging and Grouping Error merging and unmerging Edit and merge multiple errors at once Export RQL results as CSV View errors in each deploy Security and Compliance Compliance Compliant SaaS (HIPAA and ISO 27001) Security Encryption at rest Integrations GitLab source control and issues GitHub Marketplace Love and use Rollbar? We value your feedback. What do you think of our new features and improvements in 2017? What sort of things would you like to see shipped in 2018? Please leave a comment below this post or connect with us at hi@rollbar. com. If you haven’t already, signup for a 14-day free trial of Rollbar and let us help you... --- ### Spring MVC Exception Handling and Monitoring - Published: 2017-11-27 - Modified: 2023-01-19 - URL: https://rollbar.com/blog/spring-mvc-exception-handling-and-monitoring/ - Categories: Code Tutorials, Java - Tags: java The Spring Famework is the most popular framework for Java according to hotframeworks. com. It provides a model view controller (MVC) architecture and readily available components to develop flexible and loosely coupled web applications. If you are new to Rollbar, it helps you monitor errors in real-world applications. It provides you with a live error feed from the application, including complete stack traces and request data from the browser to debug errors quickly. It lets you easily understand user experience by tracking who is affected by each error. Learn more about our Java error monitoring product features. While Rollbar’s notifier works with any Java application, we’re going to show you how to set it up with Spring and how to try it out yourself with a working example app. Create a global exception handler To track all of our exceptions in Spring, we’ll be making use of a global exception handler. This receives uncaught exceptions for your whole application, not just an individual controller. Spring offers two main approaches: 1. ControllerAdvice When you create a class annotated with @ControllerAdvice{:target="_blank"}, it will handle exceptions created by all your controllers. Each controller advice defines a method with a @ExceptionHandler annotation which becomes the default handler. You can insert your custom code to print or track errors there. ControllerAdvice is only available in Spring 3. 2 and above. We won’t be covering this approach in detail but you can see our working example on GitHub{:target="_blank"}. You will need to uncomment the annotation at... --- ### Announcing Our New Java Error Monitoring SDK - Published: 2017-11-17 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/announcing-our-new-java-error-monitoring-sdk/ - Categories: product - Tags: java Rollbar is proud to announce the first official 1. 0 release of our Java notifier SDK for error monitoring. Java continues to be one of the world’s most popular programming languages. It’s the most sought-after language for employers and has the second most pushes on GitHub according to Stackify’s 2017 rankings{:target="_blank"}. Rollbar helps you monitor errors in real-world applications. It provides you with a live error feed, along with stack traces and contextual data to debug errors quickly. It's important to select an error monitoring solution that supports all the languages your company uses for a clear picture across your whole stack from the front end to the back end. Some competing solutions just don't give you that full visibility. Learn more about our product features for Java. This new version of our Java notifier SDK supports many frameworks including web apps, Android, Scala, Kotlin, Spring MVC, and more. In web applications, it captures data about the request including the user's IP address and browser so you can narrow the problem down. It helps you identify root cause quickly, by giving you contextual data on what changed and when from your source control and deployment systems. You can also react proactively by seeing which users were affected and prioritize fixes. {: . imgcaption} Grouped Java exceptions, as seen in Rollbar Additional improvements in our 1. 0 release include: Support for both Gradle and Maven build systems. Synchronous and asynchronous senders, so that your application does not block sending events to... --- ### Laravel error reporting now available - Published: 2017-10-30 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/laravel-error-reporting-now-available/ - Categories: product - Tags: PHP We're happy to introduce our latest error reporting SDK, for Laravel, which tracks and reports errors that happen in your Laravel applications. Laravel is a popular and powerful MVC framework for PHP, designed for developers who need a simple and elegant toolkit to create full-featured PHP web applications. In real-world production applications, it’s important to monitor errors so you understand your user’s experience and can fix issues before more are impacted. Rollbar helps by providing you with a live error feed from your application, including complete stack traces for instant visibility. To give you more context to debug problems, we also track the environment the error is coming from (prod or staging), the server that generated the error, and even the user’s session. Learn more about Rollbar’s product features. Below, we'll show you how to add Rollbar error reporting to your Laravel apps and even give you a code example that you can try yourself. Laravel error reporting with Rollbar Here are some simple steps describing how to integrate Laravel SDK in your code. You can find more details in the Laravel Documentation. Sign up for a Rollbar account if you haven’t done so yet. Create your project and select Other from the list of notifiers. Copy the server side access token that is generated for you. You’ll need this to configure Rollbar in the steps below. Open command prompt in your project directory and type following command to install the Laravel notifier SDK. composer require rollbar/rollbar-laravel Add the project... --- ### Custom error handling for Angular - Published: 2017-10-24 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/custom-error-handling-for-angular/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript Angular 2+ and AngularJS (version 1) are popular open-source JavaScript MVC frameworks that let you build highly structured, testable and maintainable front-end applications. Angular is most commonly used on single-page applications. Stable and reliable single-page applications depend on solid client-side error monitoring tools and techniques. But getting the right exception data and context isn’t always easy. We’re going to dive into how to capture, handle and debug Angular errors. Error handling in vanilla JavaScript consists of using try, catch and finally statements. You can also use these statements in Angular modules. However, Angular has a special logic to handle uncaught exceptions. We’ll show you how to create custom error handlers for Angular that you can override to add your own functionality. Error logging in Angular The ErrorHandler class in Angular 2+ provides a hook for centralized exception handling. The default implementation of ErrorHandler prints error messages to the console. This service is very simple by design. To intercept the error handling we need to write a custom handler. On the other hand, uncaught exceptions in AngularJS are all funneled through the $exceptionHandler service. When unmodified, $exceptionHandler sends all uncaught exceptions to the $log. error service. The $log. error service passes the error through to the client’s console. Here’s how you can create your own error handler: Angular 2+ AngularJS 1. X class ErrorHandler { constructor {} handleError(error: any): void; } $exceptionHandler(exception, ); In Angular 2+ the handleError(error: any): void method allows you to implement your own code to do something... --- ### Error Boundaries in React 16 - Published: 2017-10-11 - Modified: 2023-01-19 - URL: https://rollbar.com/blog/error-boundaries-in-react-16/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript React recently announced the release of version 16 with long standing feature requests including error boundaries, fragments, improved server-side rendering and more. Error boundaries are especially useful so that an error in one small part of the UI doesn’t break your entire application. Instead, it’s better to contain those errors to the affected components and recover gracefully. JavaScript error logging. When you open this page, you can activate an error boundary by clicking at least five times on the counter. You will then see the error message “Something went wrong. ” Let's dive deeper into this example to learn how error boundaries work. What are error boundaries? Error boundaries are React components that catch JavaScript errors anywhere in their child component tree. They can log errors and display a fallback UI to replace the component tree that has crashed. They are similar to try-catch statements in your code, but surround page elements instead. An error boundary is a React component with a componentDidCatch(err, info) method. Any errors occurring in a component tree get reported up to the nearest error boundary’s componentDidCatch function. Note that error boundaries only catch errors in the components below them in the tree. For simple apps, you can declare an error boundary component once and use it for your whole application. For more complex applications with multiple components, you can have independent error boundaries to gracefully recover each part. You can also report these errors to an error monitoring service like Rollbar. This will give you... --- ### Quickly edit and merge many error items at once - Published: 2017-09-20 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/quickly-edit-and-merge-many-error-items-at-once/ - Categories: product - Tags: monitor Rollbar just added a new feature that allows you to quickly edit and merge hundreds or thousands of items at once. In the past, you could only edit or merge items on a single page, which is limited to 30 items at a time. We added a new link that allows you to apply the change to all items in your view or matching a search. This feature provides a similar user experience to how Gmail lets you select all conversions, and then update or delete them. This is useful to perform bulk updates, such as assigning many items from a single component to a developer to fix. You might want to merge multiple errors that are similar but come from different parts of your application. You could also resolve all your errors before doing a deployment so that you have a fresh view with the new version. Thanks to our intelligent fingerprinting rules you only need to merge items once. New occurrences will remain in the merged item. This makes it much easier to manage the items in your account by keeping your view clutter free, and giving you accurate metrics on how often errors occur. As a result, you can focus your attention on new and high-impact errors. If you haven’t already, signup for a 14-day free trial of Rollbar and let us help you take control of impactful production errors. :-) --- ### Introducing AWS Lambda Support for Node.js and Python - Published: 2017-09-07 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/introducing-aws-lambda-support-for-node-js-and-python/ - Categories: product - Tags: SDK We’ve just updated our Rollbar. js and Python libraries, making it easy for you to monitor errors on AWS Lambda. If you’ve been considering building apps with serverless architectures on Lambda, we’ve got the exception tracking covered so you can rest easy. Serverless architectures Serverless architectures have taken resource abstraction to the next level. We've now gone from having servers hosted and managed in the cloud, to having servers that require zero touch and are ephemeral in nature - they're spun up automatically only when certain events are triggered. They also scale out automatically with usage, and whereas before you paid for compute resources you allocated, now you only pay the resources your app actually uses. AWS Lambda In AWS Lambda, currently the most popular service for building serverless apps, how much you use is based on how many times you trigger functions and how long it takes for those functions to execute. Lambda functions come with limits, such as the concurrency execution limits. This is set at account-level and when you hit those limits, throttling kicks in. As a result, your functions don’t get executed and you get errors. This is just one of many things to consider and monitor when architecting your app to run on Lambda. Monitoring errors in Lambda Lambda uses Cloudwatch for monitoring and logging, providing metrics such as number of invocations, execution duration times, throttles, logs, and number of errors from failed invocations. For richer and more granular information on errors that helps you... --- ### Introducing JavaScript Telemetry - Published: 2017-08-16 - Modified: 2022-01-27 - URL: https://rollbar.com/blog/introducing-javascript-telemetry/ - Categories: product - Tags: debug We're excited to introduce JavaScript telemetry, which provides a timeline of events in the browser leading up to when an error occurred. This helps you find the root cause of JavaScript errors faster by providing critical information on user behavior, network activity, and more. You might also think of this timeline of events as a trail of breadcrumbs or a black box recorder which tells you what happened just before a crash or error. In the screenshot below, we see a timeline showing a complete story of how the user encountered an error. First they loaded the page, typed their email address into the sign up form, validated the email, navigated to an onboarding page, and then the error occurred. This gives clear context on what caused the error and which component needs to be fixed. {: . imgcaption} JavaScript telemetry data, as seen in Rollbar Troubleshooting can be difficult and time-consuming If you’re a web developer, you know it can be difficult to reproduce unusual errors and problems reported by users. There are many variables including inconsistent browser environments, unexpected user behaviors, network calls, state changes in the application, and more. Reproducing problems costs your team time in development, QA and support. Unfortunately, if your team cannot reproduce the problem it’s often put on the back burner which can leave users hanging with no resolution. Having enough contextual information can save you time because you can quickly see the cause of the problem without having to manually test different... --- ### Purpose-Built Error Monitoring Alternative to New Relic - Published: 2017-08-08 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/purpose-built-error-monitoring-alternative-to-new-relic/ - Categories: topics - Tags: APM One of the more frequently asked questions we hear is: "Doesn't my existing Application Performance Management (APM) solution, such as New Relic, monitor and track errors in our application? " The short answer is - it’s not enough. They are very complementary and most Rollbar users use both (we do) for various debugging scenarios. APM tools are great at telling you what's slow, when and where exceptions occur. Rollbar provides a lot more contextual information to help you determine what's broken, why they occur, who is affected, and how to fix them. It saves you a substantial amount of time dealing with errors and leaves more time for resolving issues and improving your product experiences. (/why-rollbar/" alt=""> Let’s see how New Relic and Rollbar compare when it comes to monitoring and managing application errors. Features Rollbar New Relic Error tracking ✓ ✓ Error analytics ✓ ✓ Stack traces ✓ ✓ Error frequency heatmap ✕ ✓ Infrastructure monitoring ✕ ✓ Transaction tracing ✕ ✓ Notifications and alerting ✓ ✓ Issue tracker integration ✓ ✓ Filter by host ✓ ✓ Data retention > 8 days ✓ (180 days) ✕ Custom rate limits ✓ ✕ (100 events per minute) Live error view ✓ ✕ Git repo integration ✓ ✕ Map errors to deployments ✓ ✕ Raw payload per error ✓ ✕ Replay requests ✓ ✕ People affected ✓ ✕ Telemetry ✓ ✕ Local variable values ✓ ✕ Custom error grouping rules ✓ ✕ Overview of New Relic's Error Analytics The New Relic APM... --- ### Security matters: Rollbar now offers advanced encryption at rest - Published: 2017-07-19 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/security-matters-rollbar-now-offers-advanced-encryption-at-rest/ - Categories: product - Tags: security Are your services secure? In today’s world, you can hardly go a week without reading in the news about security breaches, malware, and more. We’ve already had headline news this year for Wanna Cry{:target="_blank"}, and now there are dozens of copycat malware programs taking advantage of out-of-date systems. Think of all the services that your company uses from error monitoring to logging and APM. Some of them may be delivered by vendors and others set up by internal teams. Did your IT team evaluate these services to determine how secure they are? If not, you might want to reconsider the services you use or who can best deliver them. Unfortunately, many companies only do the bare minimum due to time constraints, limited budget, lack of expertise, etc. Real security is hard because threats are constantly evolving, and they target the weakest link across all layers of your organization. Companies make good targets because they concentrate data from potentially billions of customers in one place. Their infrastructure can have millions of lines of code that no one person fully understands. They often rely on a complex and poorly monitored network of third-party service providers, offshore contractors, platforms, modules, etc. These all present opportunities to attack. Sophisticated companies evaluate the security of their service providers when making a purchase, and they hold internal services to the same standards. They typically have a checklist of security requirements covering certifications, security audits, data management processes, etc. Companies in the EU or US-regulated industries like... --- ### Merging versus Custom Fingerprinting - Published: 2017-06-23 - Modified: 2021-07-19 - URL: https://rollbar.com/blog/merging-versus-custom-fingerprinting/ - Categories: product - Tags: monitor With the recent announcement of support for manual merging, there are now multiple ways to combine occurrences of errors into a single item. Before merging was an option, if the default fingerprinting algorithm didn’t combine occurrences the way you wanted, then you needed to define custom fingerprinting rules. Custom fingerprinting rules require you to learn our JSON-based rule syntax, and that could be a deterrent against setting them up. Now that you can easily merge errors via the UI, is there still value in setting up custom fingerprinting rules? Absolutely, and this blog post will explain why! Rollbar’s Default Fingerprinting Algorithm To understand merging vs. custom fingerprinting rules, it helps to first look at how Rollbar combines occurrences of errors. Minus a few tweaks we’ve made over the years to optimize results, our default algorithm works as follows: Combine the filenames and method names from all of the stack frames Append the exception class name Take the SHA1 hash of the result The resulting SHA1 hash is what we call the ‘fingerprint’ of the error. All occurrences that have the same fingerprint will be combined into a single item. The default behavior can be changed to include the exception message, or any other occurrence data, when calculating the fingerprint too. This will result in more unique errors in your Rollbar projects, so use it carefully. Custom Fingerprinting Rules The default fingerprinting algorithm is a good start and may be sufficient for many projects, but often you’ll want to tweak the... --- ### Technical details and challenges of building Error Merging - Published: 2017-06-19 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/technical-details-and-challenges-of-building-error-merging/ - Categories: product - Tags: behind-the-scenes Hopefully you've had the chance to try out our latest feature, error merging. We've heard a lot of positive feedback from our users. They're especially excited to be able to easily merge and un-merge related errors. We thought it would be useful to share how the Rollbar team made this happen from a technical standpoint. If you're interested in the nitty-gritty of how we implemented error merging, read on. I interviewed an engineer here at Rollbar who was instrumental in making error merging possible, about what was involved in engineering this feature. First, let's start with why we created error merging in the first place. Our users were asking for the ability to merge (and unmerge) their errors via our UI, as opposed to having to create custom fingerprinting rules. Prior to creating error merging, if you wanted to merge two items together, you created a custom fingerprinting rule, which doesn't apply retroactively. You also could never unmerge items that had been merged together. As the engineer explains it, "custom fingerprinting is extremely static and only applies when the rule is in existence. You can look at an occurrence of an item and extract the fingerprint, and it is always associated with the item. Item merging is very dynamic. You never change the fingerprint of a given occurrence, and that fingerprint could even come from custom fingerprinting. You can change your mind over and over. Merging is a tool for managing complexity. You can take your dashboard from a zillion... --- ### How Shortcut uses Rollbar to monitor JavaScript errors - Published: 2017-06-14 - Modified: 2022-12-07 - URL: https://rollbar.com/blog/how-shortcut-uses-rollbar-to-monitor-javascript-errors/ - Categories: company - Tags: customer-stories I'm eager to share an insightful interview our friends at Changelog recently did with Andrew Childs, CTO at Shortcut and Rollbar power-user. We're big supporters of the Changelog podcast and we asked them, to help us produce a handful of interviews with our customers. It's a fun project that lets us pull back the curtain and learn more about our customers processes for handling errors and deploying code. Read. Listen. Enjoy! Featured in this interview: Adam Stacoviak, Founder & Chief Editor at Changelog, a podcast on software development and open source. Andrew Childs, CTO of Shortcut, an easy-to-use project management tool for software teams. Adam: Andrew, let's start off with you telling me a bit about Shortcut. Andrew: Shortcut is a software company based in New York, building project management software, specifically for software teams that are looking for something simple and flexible but gives them a little bit more visibility into what the whole team is doing and where the team is going at a high level. Adam: How important is error tracking to Shortcut? Andrew: It's really important, because our software isn't perfect. You could see if you looked at our Rollbar, we have a constant stream of errors coming in that need to be fixed. People are leaving these windows open for weeks and they've got all these third-party extensions loaded, and those extensions are doing things to the page, rewriting things and rewriting stuff on DOM and it's like you're in a very hostile environment and... --- ### Turning Errors Into Action: How and Why Resolving Errors Matters - Published: 2017-05-30 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/turning-errors-into-action-how-and-why-resolving-errors-matters/ - Categories: product - Tags: triage Why resolving errors matters? After fixing a bug, who is responsible for making sure if it really resolves the customer's problem? A lot of companies take a fire-and-forget mentality where the developer makes a code change, and they never think of the problem again until someone complains. Developers often assume that the fix will be deployed with the next release, that the fix will behave the same in production as it does in their development environment, and that it resolves every case uniformly. Only for the most urgent problems will they wait for the fix to hit production and then verify the improvement on the customer's side. Let's face it, verifying the resolution of issues in production is a chore and takes away from developer productivity. Often, the developer has already moved on to other problems by the time fixes are deployed. In many companies that don't have continuous deployment, developers have little control over when releases get shipped. If you're using an issue tracking system, the developer's job usually ends when the code is written and merged. Even if developers wanted to go back and verify the fix works, they may not have the proper tracking tools to do so. Who is accountable for ensuring that bugs are fixed on the customer side? The support or product management teams will complain if it doesn't work as expected, but why should they be responsible? They have better things to do than follow up on dozens of bugs that are filed... --- ### Introducing Error Merging ⎌ - Published: 2017-05-22 - Modified: 2025-04-22 - URL: https://rollbar.com/blog/introducing-error-merging-%e2%8e%8c/ - Categories: product - Tags: monitor We're excited to introduce merging (and un-merging) of errors! Merging errors lets you combine multiple errors into one 'group' for easier management and more accurate metrics. All past and future occurrences of any merged errors will automatically be combined and grouped. Today's merged errors are tomorrow's error groupings. :-) Merge errors When you encounter a duplicated error, you'll want to create a new 'group'. Select one or more errors from the same environment in the error Items feed. Slide the toggle in the box above to 'Merge', set appropriate Level, Status, Owner, and Source values, enter a name for the new item, and click 'Merge'. Done, error merge success! Un-merge errors Merged the wrong error by mistake? No problem! You can easily un-merge errors in Rollbar. Search for merged errors By default, errors which have been merged into a group will no longer appear. To view these errors, you can search for is:member. To only show grouped errors, you can search for is:group. We hope that you and your team will save more time in your day-to-day debugging efforts with Error Merging. Check out the error merging documentation for more details. We appreciate your feedback. Email support@rollbar. com and let us know your thoughts. If you haven’t already, signup for a 14-day free trial of Rollbar and let us help you defeat annoying errors in your applications. :-) --- ### New and improved JavaScript notifier SDK - rollbar.js 2.0 - Published: 2017-05-20 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/new-and-improved-javascript-notifier-sdk-rollbar-js-2-0/ - Categories: product - Tags: JavaScript We are excited to announce a major update to our JavaScript notifier SDK in version 2. 0. This new version adds support for isomorphic or universal applications, which can run on both the client and the server. It standardizes the configuration and logging across environments, and makes it consistent with notifiers for other languages. Here are the big changes: Single library for both client and server side The JavaScript ecosystem has evolved a tremendous amount over the past several years. During that time, server side JavaScript usage has grown to the point where it is quite common to be using JavaScript throughout an application's stack. Applications now are often designed to run both in the client browser and on the server side using Node. These are commonly referred to as "isomorphic" or "universal" applications. The benefits of isomorphic applications include faster loading times, better support for legacy or mobile browsers, and easier search engine indexing. With the line between client and server blurring, it is desirable to have a unified view of exceptions across both environments. To make this possible, we unified the separate notifier libraries so that exceptions are logged uniformly. One require to rule them all. Consistent interface for configuration and logging across multiple environments We now offer a consistent interface for configuration and logging for both client and server side. Furthermore, it is consistent with our notifier libraries for other languages. This will make it much easier for developers since they only need to use one pattern.... --- ### Instacart, leader in grocery delivery, relies on Rollbar for production error monitoring - Published: 2017-05-15 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/instacart-leader-in-grocery-delivery-relies-on-rollbar-for-production-error-monitoring/ - Categories: company - Tags: continuous-delivery   Instacart, a leader in the on-demand marketplace, provides one-hour grocery delivery to users of their app and employs thousands of shoppers across the US to support order fulfillment. Of the one trillion dollar grocery industry, only 1% of market share currently comes from online grocery sales. As Instacart increasingly captures more of this market, they turn to Rollbar for continuous monitoring of their service’s health. With a promise of one-hour delivery, and a shopper workforce relying on their apps, Instacart’s services must be up at all times. Rollbar’s proactive alerting and granular error forensics facilitates the continuous integration and deployment pipeline at the heart of Instacart’s service. Rollbar allows us to go from alerting to impact analysis and resolution in a matter of minutes. It's fully ingrained into our development cycle and monitoring. Without it we would be flying blind. Arnaud Ferreri, Engineering Lead for the Consumer Team at Instacart. The Challenge While many industries have worked out how to participate in the on-demand marketplace, the one trillion dollar grocery industry is one of the last holdouts. Tight margins may be making some investors skittish. Retraining customer perception about grocery quality and freshness with app-ordered deliveries might be at play. Building and scaling the technology layer that acts as the on-demand engine has been a daunting challenge. It’s this last barrier to entry that Instacart has already dismantled. Since its inception in 2012, Instacart has been wooing grocery shoppers away from retail spaces and onto smartphones, to place grocery... --- ### Improved PHP error reporting with our latest rollbar-php 1.0 updates - Published: 2017-05-04 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/improved-php-error-reporting-with-our-latest-rollbar-php-1-0-updates/ - Categories: product - Tags: PHP We are excited to announce a significant upgrade to our PHP notifier SDK. This new version will make it much easier for customers to integrate their PHP apps with Rollbar. It uses the latest standards like Composer, proper namespaces, and is more reliable. Here are some of the highlights: Our first major 1. 0 release This major release of our PHP SDK represents a significant update in architecture, style, and quality for our PHP notifier. In addition, many outstanding issues were fixed so 1. 0 is more reliable and better tested than our prior versions. Our prior version, 0. 18. 2, was written in an old style of PHP with most of the code living in a single file. This was due to our desire to support the oldest version of PHP possible. Due to the changing landscape over the past couple years, it became reasonable to drop support for PHP 5. 2 and this opened the door for many language features which benefit both our code and yours. While the interface has undergone a redesign, it is still backward compatible with 0. 18. 2 via convenience functions. Support for Composer Our SDK is now properly supportive of composer which has become the de facto dependency management tool in PHP. Just add the following configuration to your composer. json file: { "require": { "rollbar/rollbar": "~1. 0" } } Standardized namespace We are now using PHP namespaces, a feature introduced in 5. 3. At the top of your file, you can... --- ### Introducing hassle-free, compliant SaaS error monitoring - Published: 2017-04-26 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/introducing-hassle-free-compliant-saas-error-monitoring/ - Categories: product - Tags: security I'm very excited to announce that today, Rollbar is launching the first and only compliant SaaS error monitoring solution on the market. Our compliant solution meets the standards of HIPAA and ISO 27001, thanks to our team's hard work over the past 6+ months on our infrastructure, application, and policies. From the early days of Rollbar, I've been motivated to help developers build better software, faster, because I believe that empowering software developers is one of the most impactful (if not always visible) ways to improve all of our lives. We've seen customers use Rollbar to build and maintain just about everything you can imagine, from consumer apps to enterprise, healthcare, government, scientific research, and beyond. As we've found our way into applications that power more and more critical functions of modern society (like healthcare and finance), we realized that we would need to be able to meet those organizations' security and compliance requirements--somehow. Our first iteration was Rollbar On-Premises (which we do still offer)--passing the compliance burden off to customers--and a handful of eager customers signed on. Over time, however, we learned that not only is it difficult for us to maintain and support a self-hosted product, it's a huge pain for customers, too. Forgive me for quoting a competitor who seems to be learning the same thing: We went back to the drawing board to ask: why do customers need to self-host? And we realized that in almost all cases, they didn't. What compliance-conscious customers need is compliance,... --- ### Major JavaScript source map updates - Published: 2017-04-20 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/major-javascript-source-map-updates/ - Categories: product - Tags: JavaScript We’re excited to introduce a major update to JavaScript source map support in Rollbar! This update introduces several features unique to Rollbar (source map search, source map failure logs, inline warnings in stack traces) that are critical to anyone using client-side JavaScript in a large-scale, continuous deployment environment. Why Use Source Maps? If your application uses client-side javascript, then you’re probably minifying your code to reduce file sizes and improve page load times. The benefits of minified Javascript are clear, but minification also introduces the need for source maps in order to debug errors that were detected in minified code. Without a source map, it's nearly impossible to determine where an error occurred in your Javascript code. Due to the need for source maps, debugging minified code will always be inherently problematic, but we’ve just introduced several improvements to Rollbar’s source map handling that will make troubleshooting much, much easier. Something didn’t work right... When a Rollbar stack trace includes a minified file that doesn’t have a matching source map, you’ll now see an information message that links you to your project’s source map screen where you can further troubleshoot why the source map wasn’t available. View failed source map uploads and downloads More often than not, you look at your source maps because something didn’t work as expected. You can now see when Rollbar fails to access a source map, including detailed information about what happened. Filter and search your source maps On large projects with frequent deployments, you... --- ### Error alert notifications + how to use them for better monitoring - Published: 2017-04-04 - Modified: 2025-04-22 - URL: https://rollbar.com/blog/error-alert-notifications-how-to-use-them-for-better-monitoring/ - Categories: product - Tags: monitor Rollbar offers an impressive array of error alerting and notification options for you to choose from, which is awesome! But sometimes we hear from our users that they aren't quite sure how to leverage their notifications to get the best results. What do notifications here at Rollbar do? How do they work? How should you interpret them? And perhaps most importantly, what are the best practices? Let's explore the answers to all these questions today. Rollbar supports many different messaging and incident management tools, so you and your team can get notified about errors and important events. These notifications can be anything from a message in a Slack channel to an alert in PagerDuty. There are some common notification types that we offer, no matter what tool you're using to be notified. Notification Type Triggered when... New Item An error/ message is seen for the first time. Every Occurrence Every time an error/ message occurs (use wisely). 10^th Occurrence 10th, 100th, 1,000th, 10,000th, ... occurrence High Occurrence Rate {x} occurrences seen in {y} minutes (configurable). Item Resolved An error/message is marked Resolved. Item Reopened An error/message is marked Active by a user. Item Reactivated An error/message occurs again after being marked Resolved. Deploy A new deploy is reported. Daily Summary (Available in email only) Summary of daily error/message activity in a project So now that you know what types of notifications you can get, how about customizing them? You can filter your notifications to adjust the circumstances under which you... --- ### Onboarding remote employees, on the other side of the world - Published: 2017-03-28 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/onboarding-remote-employees-on-the-other-side-of-the-world/ - Categories: product - Tags: team When I first started full-time here at Rollbar, I was living in Malaysia for the month, starting a year-long journey around the world that I'm currently still on. While it was certainly fun and exciting to explore Kuala Lumpur, it was a bit more difficult to onboard in a new job when I was 15 hours ahead of the rest of the team. Luckily, everyone here at Rollbar is incredibly flexible and helpful, and we were able to get creative about the onboarding process. If you're considering onboarding a remote employee in a different time zone as the rest of your team, read on for some tips and tricks that should help speed up the process. This is my third job in tech, and my second as a remote employee, so while I can't say I've seen it all in terms of onboarding, I have seen a few different methods. The most obvious (and easiest) method is to have your new team member come in to the office bright-eyed and bushy-tailed and have all the members of the team available to help make their onboarding a success. Unfortunately, if the team member you're onboarding doesn't live in the same area, that isn't really possible. What to do? Some companies get around this by requiring all remote employees come onsite for their onboarding. If you're an all-remote company, like the second place I worked, you've probably got the kinks figured out in terms of onboarding your new employees. In many ways... --- ### Building the IoT Rollbar error alarm - Published: 2017-03-11 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/building-the-iot-rollbar-error-alarm/ - Categories: Code Tutorials - Tags: monitor Our friends at Losant wanted to share how they built an actual 'error-alarm' using the Rollbar and Losant API's. Enjoy! When I envision a tech company's smart office, I see tons of dashboards and indicator lights that monitor everything. Efficient monitoring is a critical piece of today's technology stack, and there are always ways to improve. Rollbar already does an impeccable job at alerting you when errors are thrown in your application. But, to increase awareness, accountability, and awesomeness in the office, we can connect Rollbar to our smart office. In this tutorial, we are going to build an office error alarm powered by Rollbar and Losant. Building the Alarm Intel Edison - This is a small compute module that we will use to control the devices in our office. WeMo Insight Switch - This is a Wifi enabled, smart plug that we can control remotely. **Rotating Police Party Light - This is a regular party light. Setting up the Light Connect the WeMo Insight Switch to your office network using the WeMo app and plug in the light. You should be able to control the light with the WeMo app. Setting up Intel Edison The WeMo switch exposes a local API. There is a Node. js module that wraps the API so we can control the WeMo switch. Since the API is local, the Intel Edison must be on the same network as the WeMo switch to connect to the device. Intel has a configuration tool we need to... --- ### Up your incident management alerts game with Rollbar and VictorOps - Published: 2017-03-02 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/up-your-incident-management-alerts-game-with-rollbar-and-victorops/ - Categories: product - Tags: integrations Resolving on-call errors can be faster and easier than ever before when you integrate VictorOps and Rollbar. VictorOps is a fantastic on-call management tool that provides incident notifications to engineers to help teams resolve incidents faster and minimize downtime. We're excited to announce that you can now automatically send your Rollbar items to VictorOps, and get alerted to new errors quickly - before your users notice. Linking Rollbar and VictorOps To automatically turn your Rollbar items into Alerts in VictorOps, read on. Configuration is per-project in Rollbar. Head to the Notification settings page for a project: Dashboard -> Settings -> Notifications -> VictorOps. In VictorOps, go to Settings (or Complete Setup) -> Alert Behavior -> Integrations, and choose Rollbar. Click "Enable Integration" if it's not already enabled. Copy the API key from VictorOps. In Rollbar, enter the API and routing keys, and click "Enable VictorOps Integration. " Congrats! You have now integrated Rollbar with your VictorOps account. Now, when a new error or higher occurs in Rollbar, it will create an Alert in VictorOps, which will be automatically resolved when it is resolved in Rollbar. If you want, you can customize the default rules by editing, adding, or deleting them. By bringing your Rollbar data into VictorOps, you can streamline your monitoring, minimize downtime, and resolve incidents faster. For more information, check out our integration docs for VictorOps. We also have an integration with another incident management alerts provider, PagerDuty; check out the docs here. To see if Rollbar integrates... --- ### Using JavaScript source maps to debug errors - Published: 2017-02-13 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/using-javascript-source-maps-to-debug-errors/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript Some of the most common questions we get here at Rollbar deal with source maps: What are source maps and what do they do? How can you enable source mapping? Why aren't your source maps working properly? Let's explore Javascript source maps together, starting with the basics. {: . highlightbox} Existing Rollbar users, go to our JavaScript source maps documentation to get started. As web developers, we have two major goals. First, we want a highly performant website. Second, we want that website to be easy to debug and maintain. Unfortunately, these goals are often at odds with one other. If we minimize our JavaScript, we can achieve some of these goals. Minimizing JavaScript reduces the download size, and the smaller the payload for our website users, the better. If we combine our JavaScript files, we can also reduce the number of http requests. For a highly performant website, we want to reduce the number of requests the browser has to make in order to fully load, render, and process the page. Furthermore, with transpilers, we can start using new JavaScript features before they are implemented by the browsers. Unfortunately, minimizing JavaScript also comes with some downsides: it's hard to debug, and we lose original filenames, line numbers, and column numbers. Luckily, source maps solve this problem. A source map is a file that provides a mapping from the minified line and column numbers back to the original file, line, and column. Source maps use Base64 VLQ encoding to reduce... --- ### How GorillaStack used Rollbar to level up logging with the Serverless framework - Published: 2017-02-07 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/how-gorillastack-used-rollbar-to-level-up-logging-with-the-serverless-framework/ - Categories: product - Tags: integrations Our friends at GorillaStack wanted to share how they set up Rollbar with the Serverless framework, and made a handy tool so you can do the same. Here at GorillaStack, we are big lovers of the Serverless framework. By default, the Serverless framework uses CloudWatch logs to store any system log messages and output from your lambda code. Pretty quickly, we found ourselves needing to escalate log messages such that we could be notified of application errors and act on them more proactively. Enter Rollbar. I have been using their service on many side projects since discovering their free tier some years ago. We also robbed them of almost all their swag at the last re:Invent conference. Rollbar is a great system to use for escalating errors and messages from your applications. Best of all, there are options for adding it as a transport for popular logging solutions. As users of the node module 'winston', we found a transport available for Rollbar. Unfortunately, it wasn’t quite up to date, and didn’t format certain argument orders correctly, so we forked it ourselves. :) https://github. com/GorillaStack/winston-rollbar Using this integration with your application logging library, messages of all levels will still be logged to CloudWatch logs, but those at or above a configured log level will be escalated to Rollbar, which will then notify you of application errors as they occur. As we usually do, we decided to publish an open source example to demonstrate our approach. To get started, the only thing... --- ### Connect Rollbar to your source code and issues in GitLab - Published: 2017-01-31 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/connect-rollbar-to-your-source-code-and-issues-in-gitlab/ - Categories: product - Tags: integrations Good news for GitLab users! You can now deep link error stack traces in Rollbar directly to the code in your GitLab repos. Rollbar now supports GitLab's native issue tracking features, allowing you to seemlessly debug and manage new issues as they happen in your existing workflow. We’ve rolled out support for source control for both GitLab. com and self-hosted. Issue tracking only supports GitLab. com, self-hosted support is coming soon. Linking source code in GitLab to Rollbar stack traces (/docs/gitlab/" alt=""> Whenever Rollbar detects errors in your application, you receive a detailed stack trace. By connecting your GitLab repos, you can also click through from the stack trace in Rollbar directly to the underlying code that broke in GitLab. It's like having x-ray vision for your application errors. Turn errors in Rollbar into trackable issues in GitLab (/docs/gitlab/" alt=""> (/docs/gitlab/" alt=""> (/docs/gitlab/" alt=""> Rollbar now supports GitLab issue tracker. It's a fairly straightforward integration: When viewing an error in Rollbar, simply click the "Create GitLab Issue" button to send the error details to GitLab. You can also link an error in Rollbar to an existing GitLab Issue, by copying and pasting the URL for the GitLab Issue you would like to link. When you connect Rollbar and GitLab together, your debugging and error monitoring will become much more efficient. For more information, visit our GitLab documentation or press release for details. Level up your issue and error tracking workflow when you connect Rollbar to GitLab. GitLab users, signup and... --- ### Rollbar integration for the Ionic framework - Published: 2017-01-06 - Modified: 2025-02-19 - URL: https://rollbar.com/blog/rollbar-integration-for-the-ionic-framework/ - Categories: Code Tutorials - Tags: SDK Our friends at Cuttlesoft wanted to share how they use Rollbar to detect errors in Ionic built applications. Enjoy! At Cuttlesoft, we use Rollbar's excellent full-stack error monitoring service for pinpointing and fixing tricky bugs. Our team loves Rollbar for its integrations with other popular services (we get our error notifications via Slack so we’re constantly in the know). For building hybrid mobile and progressive web apps, we generally rely on Ionic. Ionic is an open-source framework for hybrid mobile app development maintained by Drifty. Built with AngularJS and Cordova, Ionic is a popular tool for mobile developers everywhere. To combine these two, we've developed a method for integrating Rollbar error tracking with the Ionic stack. We find it so useful that our co-founder and CTO Emily Morehouse wrote a tutorial for using our method of integration so that you too can harness the bug-squashing power of Rollbar + Ionic. Using just a few tools, we'll show you how to make Rollbar work in perfect sync with Ionic. Since Ionic is a hybrid framework, there are a few different services where Rollbar needs to be plugged in: Native iOS Native Android JavaScript To do this, we'll use a few different plugins that help monitor each OS and stack layer. We'll use Emily Morehouse's fork of the Cordova Rollbar plugin to catch native errors, and the ng-rollbar AngularJS plugin to catch our Ionic application errors. Now, let's dive in. The first (and easiest) plugin to set up is the Cordova plugin,... --- ### Better workflows for managing errors - Published: 2016-12-21 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/better-workflows-for-managing-errors/ - Categories: product - Tags: triage Happy Holidays Rollbar users! We're gifting you a handful of updates to a key feature in Rollbar, the Live Error Feed. We recently rolled out some improved fucntionality to the Live Error Feed, most notably the ability to quickly view and assign ownership of errors with your team. Instantly know who's working on what and ensure that urgent production issues don't get overlooked. Here's an overview of how these updates will help you and your team members better manage errors in Rollbar: Assign individual errors directly within the feed Multi-select and assign errors Filter to view all assigned or unassigned errors Filter by owner Quickly Resolve and Mute errors Easily change severity of errors Improved look and feel By streamlining the live error feed, we hope that you and your team will save more time in your day-to-day debugging efforts. We appreciate your feedback. Email support@rollbar. com and let us know if there's anything you think we could do better. If you haven’t already, signup for a 14-day free trial of Rollbar and let us help you defeat annoying errors in your applications. :-) --- ### Ruby Exception Handling - Primer for Dealing with Errors in Ruby - Published: 2016-12-19 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/ruby-exception-handling-primer-for-dealing-with-errors-in-ruby/ - Categories: Code Tutorials, Ruby - Tags: ruby Ruby is a popular open source programming language that is highly flexible, and used for everything from basic "hello world" apps to sophisticated, dynamic programs. Whether you've been programming in Ruby for years or you're a complete beginner, tracking down errors in your Ruby app is simple and easy. Let's go through some basic Ruby error handling, and discover how easy it can be to integrate Rollbar into your Ruby app to automatically log and report your exceptions. Raise and Rescue Exceptions Ruby's default exception handling is to terminate the program in the event of an exception. That's not really useful when you're trying to build a complex web application for multiple users. Luckily there's a way around this - declaring exception handlers. Exception handlers are blocks of code that are called if an exception occurs in the execution of another block of code in your program. For the most basic Ruby exception handling, you need to know how to Raise and Rescue an exception. When you Raise an exception, you stop the normal flow of the program, and execute the code that deals with handling an error. This code can either deal with the error in some way, or terminate the program. If you provide a Rescue clause in your error handler, you can choose how to deal with the exception; without it, the program will simply terminate. Ruby Exception Hierarchy Ruby has a predefined Exception class, with quite a few subclasses that can be used for basic error... --- ### Join Rollbar at AWS re:Invent - Published: 2016-11-21 - Modified: 2025-02-19 - URL: https://rollbar.com/blog/join-rollbar-at-aws-reinvent/ - Categories: company - Tags: Events Join us this year at Amazon Web Services annual conference, re:Invent! Rollbar will be participating along side of Atlassian and other Atlassian ecosystem partners like StatusPage, Splunk, Puppet, Xmatters and Workato. We will all be in the Atlassian booth demonstrating how our solutions work better together. Come by and check it out - booth 2446. Come join us at the event and see how integrating Rollbar’s error monitoring with Atlassian’s products provides teams with: Instant error grouping and aggregation: Errors are grouped by root cause and linked to your source code within Bitbucket. Real-time notifications: Intelligent alerting rules configured for JIRA. Easy workflow and prioritization: Discover the most impactful errors with data and create issues in JIRA instantly with rich data, contextual details and error analytics. Faster time to resolution: Debug, deploy fixes and track regressions much faster when your error data moves through JIRA and Bitbucket automatically. We'd love to chat with you in person at AWS re:Invent. Make plans to stop by booth 2446 and say hi. We look forward to meeting you. --- ### Deep link stack traces to Bitbucket and track Pipeline deploys - Published: 2016-11-14 - Modified: 2025-04-22 - URL: https://rollbar.com/blog/deep-link-stack-traces-to-bitbucket-and-track-pipeline-deploys/ - Categories: product - Tags: integrations Good news for Bitbucket users! You can now deep link error stack traces in Rollbar directly to the code in your Bitbucket repos. Rollbar also now integrates with Bitbucket Pipelines. Deep links to your source code in Bitbucket Configure Pipelines to notify Rollbar of new deploys Once Pipelines is configured, every deploy of your app will automatically be tracked in Rollbar. Making it easier to identify which code changes led to critical production issues. Rollbar integrates with the following Bitbucket features, Bitbucket Issue Tracker, and now Bitbucket repos and Bitbucket Pipelines. Don't forget Rollbar also integrates with other Atlassian products, like JIRA, HipChat and of course Bitbucket. Dealing with errors can be time consuming and often an interruption in your everyday development workflow. It's important that we continue to work to improve this process and that we extend the capabilities and insights of your current toolset and workflows. We hope that you enjoy the new integration options! Supercharge your issue and error tracking workflow when you connect Rollbar to Bitbucket. Sign up for a 14-day free trial of Rollbar and let us help you take control of your annoying production errors. --- ### Correlate errors to feature rollout tests with Rollbar and Split - Published: 2016-11-03 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/correlate-errors-to-feature-rollout-tests-with-rollbar-and-split/ - Categories: product - Tags: integrations Our friends at Split wanted to let you know that you can now integrate Rollbar with Split. And take control of your error handling and feature rollouts - together. Enjoy! :-) Rollbar is an excellent error monitoring service that works across all of the languages Split supports. It’s great at telling you what’s going wrong and where, but doesn’t necessarily have all the details on why. That’s where Split comes in, with our new Rollbar integration. We built Split to help teams take control of their deployments by slowly delivering features to targeted groups of users. In this way you can limit the scope of trouble when things do go wrong, killing the feature until it’s fixed, then slowly rolling it out again. Our new integration brings rollout metadata from features in Split into the Rollbar interface, so teams can quickly correlate errors against the latest deployments. When it looks like a recently-released feature was responsible for the degradation of service, Rollbar users can click-through to Split to quickly take action, saving valuable time in the remediation process. Here's a a quick demo on how Rollbar and Split work together to make your controlled feature rollouts more productive. Like you, we care deeply about giving your end-users the best experience possible, and Split’s controlled rollouts paired with Rollbar’s robust error notification make delivering on that promise easy. Our Rollbar integration is free to customers of both services, and you can always try Split free for 30 days. To learn more,... --- ### A better error monitoring workflow Rollbar + Atlassian - Published: 2016-10-12 - Modified: 2025-04-22 - URL: https://rollbar.com/blog/a-better-error-monitoring-workflow-rollbar-atlassian/ - Categories: product - Tags: integrations Dealing with errors can be time consuming and often an interruption in your everyday development workflow. It's important that we at Rollbar continue to work to improve this process and that we extend the capabilities and insights of your current toolset and workflows. Atlassian users can now rejoice! Debugging errors just got a whole lot easier and faster. With our latest improvements and integrations with Atlassian products you can now keep tabs on your application directly within the tools you're already using to build it. No more switching between multiple tools and services to debug and deploy code. Creating a seamless user experience and unified workflow around production errors. Integrating Rollbar’s error monitoring with Atlassian’s products provides teams with: Instant error grouping and aggregation: Errors are grouped by root cause and linked to your source code within Bitbucket. Real-time notifications: Intelligent alerting rules configured for HipChat and JIRA. Easy workflow and prioritization: Discover the most impactful errors with data and create issues in JIRA instantly with rich data, contextual details and error analytics. Faster time to resolution: Debug, deploy fixes and track regressions much faster when your error data moves through HipChat, JIRA and Bitbucket automatically. Take your production error monitoring to the next level and maintain your existing workflow. By integrating Rollbar with JIRA, HipChat and Bitbucket you can detect, diagnose and resolve errors in less than 2 minutes! By integrating Rollbar with JIRA, HipChat and Bitbucket you can Detect, diagnose and resolve errors in less than 2 minutes!... --- ### Rollbar add-on now available for JIRA - Published: 2016-10-10 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/rollbar-add-on-now-available-for-jira/ - Categories: product - Tags: integrations We’ve recently released a new JIRA Add-On to help extend your application error monitoring workflow. JIRA is one of the leading issue tracking solutions used by agile teams. Enabling them to plan, track, release and support building better software. Send rich error data to JIRA Connect Rollbar to JIRA and enhance issues with detailed error data like stack trace, error status, total occurrences, unique IPs affected, first seen date, last seen date and the date the error reoccurred and regressed. All conveniently displayed, linked and accessible within JIRA. Here are a few of the ways you can improve your monitoring workflow when you connect Rollbar with JIRA and install the new Rollbar for JIRA add-on: Link and display root cause exception data in issues. Set notification rules to automatically open new issues. Create and assign JIRA issues with a few clicks. Bidirectional syncing, update statuses in both Rollbar and JIRA. (/integrations/atlassian/" alt="jira-rollbar"> PRO TIP / REMINDER: Automatically (and manually) create JIRA issues from Rollbar errors when you configure JIRA as a Notification Channel in Rollbar. Supercharge your issue tracking when you use JIRA Notications + Rollbar for JIRA Add-On together. Check out our JIRA documentation for details. (/integrations/atlassian/" alt=""> To install the new Rollbar for JIRA add-on: In your JIRA account go to Admin > Add-ons Search for "Rollbar" Click "Install" on the Rollbar for JIRA add-on OR Go to our Atlassian Marketplace listing for JIRA Click 'Get it Now' We hope that by bringing Rollbar data into JIRA you... --- ### How CircleCI uses Rollbar to level up their continuous delivery - Published: 2016-09-22 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/how-circleci-uses-rollbar-to-level-up-their-continuous-delivery/ - Categories: company - Tags: customer-stories I'm excited to share a fun and insightful interview our friends at The Changelog recently did with Paul Biggar, Founder at CircleCI (and Rollbar super-user). We're big supporters and fans of The Changelog and we asked their host and master interviewer Adam, to help us produce a few short interviews with our customers. It's a fun project that lets us pull back the curtain and learn more about how our customers monitor their applications and processes for handling errors and deploying code. Enjoy! {: . highlightbox} Featured in this interview: Adam Stacoviak, Founder & Chief Editor at The Changelog, a podcast on software development and open source. Subscribe via iTunes or RSS. Paul Biggar, Founder of CircleCI, a leading continuous integration platform. Adam: Hey there. Adam here, editor-in-chief of Changelog. I'm here with Paul Biggar, founder of CircleCI (circleci. com) and we're gonna talk about how important Rollbar is to him and his team to help them deliver on their brand promise to ship better coder faster. Paul, tell me about CircleCI. What types of services do you provide? Paul: CircleCI is a continuous integration and continuous delivery platform. Our customers are the developers in an organization. Developers rely on us heavily as part of their deployment workflows. Adam: I guess deploying obviously is important. You've got the phrase 'ship it' for a reason, so it's a critical piece to an ops or developer organization to be able to ship code fast, ship code reliably. Paul: Right. The idea is... --- ### Improved ruby error reporting with our latest gem updates - Published: 2016-09-14 - Modified: 2023-01-19 - URL: https://rollbar.com/blog/improved-ruby-error-reporting-with-our-latest-gem-updates/ - Categories: product - Tags: ruby Recently, we released version 2. 13. 0 of the rollbar-gem. This update is full of new features and some minor bug fixes. The full release notes can be found here, Release 2. 13. 0. Here are a few of the highlights in this update: 1. Allow overriding configuration Many customers have asked to implement a way to override the default configuration for a specific block of code. Some of them use the same process to send reports to our API for different projects, some need to change the environment, and others want to use one async handler for a single block of code (or none at all). So, we've added a new method called Rollbar. with_config to do this. It receives a Hash object with the configuration overrides you want to use for the given block. The configuration options can be found at Configuration. The Hash passed to with_config should be formatted like {environment: 'specific-environment'}. For example: Rollbar. with_config(use_async: false) do begin # do work that may crash rescue => e Rollbar. error(e) end end This method looks similar to Rollbar. scoped, and Rollbar. with_config uses it internally. Now Rollbar. scoped can receive a second argument with the configuration overrides for the given block of code. So if you need to set a new payload scope and new config for a code block, you can write: scope = {context: 'foo'} new_config = {framework: 'Sinatra'} Rollbar. scoped(scope, new_config) do begin # do work that may crash rescue => e Rollbar. error(e)... --- ### 5 ways to reduce noise when logging your JavaScript exceptions - Published: 2016-08-16 - Modified: 2021-11-22 - URL: https://rollbar.com/blog/5-ways-to-reduce-noise-when-logging-your-javascript-exceptions/ - Categories: product - Tags: grouping Developing and maintaining user facing software is a challenge and a very distracting one at that. :-) Often times it can be difficult trying to stay focused on what matters most. It can be hard to tell what's really broken and why, with dozens of alerts notifying you every other minute. Volatile... The client-side being one of the most volatile of them all. When we attempt to capture errors in this environment we can very quickly get overwhelmed by lots and lots of noise. This noise is typically generated from many different places. Some examples would be old outdated browsers, browser extensions, third-party scripts, bots, spiders, etc. Rollbar's JavaScript error monitoring supports many different ways of reducing this noise so you can be more proactive in what and how you're collecting your JavaScript exceptions. 1. Ignore noisy errors on the client-side Rollbar. js supports the ability to ignore errors on the client-side. This option is really great because you have access to the entire payload and can filter by any value in it. By doing this the error will never be sent to the Rollbar API. This is supported via the checkIgnore configuration option. var _rollbarConfig = { ... checkIgnore: function(isUncaught, args, payload) { // Code here to determine whether or not to send the payload // to the Rollbar API } ... }; Let's break down the function value. First the parameters passed to the function. isUncaught: This is true if the error bubbled up to window. onerror or... --- ### SAML-based Single Sign-On (SSO) now available - Published: 2016-07-18 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/saml-based-single-sign-on-sso-now-available/ - Categories: product - Tags: security If your team uses Google Apps for Work or Okta, you can now access your Rollbar account using SAML-based single sign-on (SSO). SSO via Google Apps and Okta is available on all paid plans, and can be setup in minutes by an admin. Once SSO is enabled, users can access your Rollbar account with just a click from the Google App Drawer or Okta My Applications screen. Google App Drawer Okta My Applications If Google or Okta-based SSO is enabled on your account, then SSO options will show up on the login screen whenever you are prompted. Ready to set up SSO for your account? Check out our step-by-step documentation. --- ### Two-Factor Authentication now available for all users - Published: 2016-06-23 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/two-factor-authentication-now-available-for-all-users/ - Categories: product - Tags: security We’re excited to introduce Two-Factor Authentication (2FA) in Rollbar as an optional extra layer of security on every user’s account. 2FA reduces your risk of having your account hacked through phishing, credential exploitation or other remote attacks. We highly recommend enabling Two-Factor Authentication for your entire team. It’s easy to setup (and free)! To enable 2FA, go to your user settings page and click Enable under Two-Factor Authentication. Then scan the QR code, and enter in your two-factor authentication verification token from an authentication app of your choice. One of the more popular authentication apps is Google Authenticator (available free for iOS and Android). Once you're all setup, you’ll be prompted for your token whenever you log in. 2FA is available for all users in all plans at no additional charge. To learn more about Two-Factor Authentication in Rollbar, check out our documentation. --- ### Using Rollbar to unravel existing Laravel applications - Published: 2016-05-24 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/using-rollbar-to-unravel-existing-laravel-applications/ - Categories: Code Tutorials, PHP - Tags: laravel {: . highlightbox} Read our new blog Announcing Laravel error monitoring with Rollbar! About 6 months ago I inherited a project (let’s call it Project Mayhem) that was grossly neglected by the original developer. I won’t go into too many details, but let’s just say that I’ve seen spaghetti with more order than this codebase had. No unit tests, no documentation, illogical architecture, and an expecting client... I felt like I was literally living in one of those nightmares where I’m late for the final exam in a class I passed a decade ago. The icing on this terrible cake was that I also inherited the hosting and was graciously provided with absolutely no specs in order to replicate the previous production environment. I was flying blind, and if it weren’t for Rollbar's php error logging tools, this project would have crashed and burned long before I could make any meaningful changes to it. I was able to manage and prioritize exceptions as they happened, which gave me the information I needed to build out a proper hosting architecture and quickly fix existing issues in the codebase. Suffice it to say, I am a big fan of Rollbar. Luckily for me, Project Mayhem was built on Laravel, an increasingly popular PHP framework with an impressive array of third-party plugins; one of which just so happens to be made specifically for Rollbar. Getting Rollbar setup on Laravel was as simple as running just a few commands, but what if the project... --- ### Streamline monitoring with Rollbar & Datadog - Published: 2016-04-25 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/streamline-monitoring-with-rollbar-datadog/ - Categories: product - Tags: integrations Good news! We’ve recently released a new integration with Datadog to help extend your error monitoring options. Datadog is a leading cloud monitoring solution that brings metrics from all of your apps, tools & services (like Rollbar) into one place. Now Rollbar and Datadog users can syndicate exceptions, errors and code deployments as 'Events’ within Datadog (example below). Here's a few of the ways you can improve your monitoring when you connect Rollbar and Datadog: Get notified of exceptions, errors, code deployments in your event stream Filter notifications by severity, environment, host, users and more Search for exceptions in your graphs Discuss exceptions with your team Most important - spend less time debugging issues We hope that by bringing your Rollbar data into Datadog you can streamline your monitoring efforts and reduce some of the noise in your day to day workflow. For more information, check out our integration docs for Datadog. Also, to see if Rollbar integrates with other tools you’re using, see our full list of integrations here. If you haven’t already, signup for a 14-day free trial of Rollbar and let us help you defeat errors in production. :-) --- ### 6 ways to improve error grouping in Rollbar - Published: 2016-04-11 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/6-ways-to-improve-error-grouping-in-rollbar/ - Categories: product - Tags: grouping You're two weeks into using Rollbar. You've watched in amazement as issue after issue comes in without a single customer complaint to accompany them. How did you ever find errors before! ? Now that your unresolved errors have drastically decreased, you've started to notice a handful of Rollbar items that all seem to be exactly the same issue. Maybe you've been notified that your UI has exceeded the maximum call stack when calling a particular function. And in one case you found out that your database is actually missing several columns which got grouped into a single error. What's a new Rollbar user to do? Here's 6 steps to help you improve your error grouping in Rollbar: 1. Learn how Rollbar groups items. The Rollbar grouping algorithm attempts to be as smart as possible by grouping items by root cause. Error type items are grouped by a combination of platform, environment, error class, and stack trace information. Message type items are grouped by message text after stripping out certain number-like and date-like portions of the message. 2. Customize your error grouping. Custom grouping enables you to decide exactly how Rollbar will group your items. You can alter the title, change the fingerprinting (and therefore the grouping), and use any data you send to us to make it work! 3. Make sure you're setting the server root. Before grouping by filename, Rollbar will strip off whatever you're sending in the server root segment. This means that you can host the code... --- ### Query Rollbar data directly from our API - Published: 2016-02-15 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/query-rollbar-data-directly-from-our-api/ - Categories: product - Tags: monitor Good news for RQL users. Until recently RQL usage was limited to the Rollbar interface. That's no longer a problem. Now you can access RQL directly from our API. We like to believe that our interface provides just about everything you need to discover, investigate and resolve errors in your software. That being said, we know that everyone's needs are not the same. So, we created the Rollbar Query Language (RQL for short) to give Rollbar users more controls over their data. Many of our users have grown to depend on RQL for getting their day to day work done. RQL is a familiar SQL-like language for querying your Rollbar data. Here's a few ways that RQL can be useful: Want to find out the number of 500s your users experienced broken down by the url they were on at the moment? Search items using more complex filters than is possible on the Rollbar website. Search for items that occurred between two specific deploys Extend the power of RQL and make the perfect dashboard or tool with your queried error data directly from the API. For help, checkout our API documentation for RQL. For an example that runs on the data from our Live Demo check out the API-Examples repository on GitHub. New to Rollbar? Signup for a 14-day free trial and get instant insights into your application errors. --- ### Rollbar add-on now available for Bitbucket - Published: 2015-06-11 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/rollbar-add-on-now-available-for-bitbucket/ - Categories: product - Tags: integrations On the heels of Atlassian's announcement of Atlassian Connect for Bitbucket yesterday, we're excited to introduce our very own Rollbar Add-On for the Bitbucket community. With the new Rollbar Add-On for Bitbucket and our recent Bitbucket Issue Tracker integration, you can now monitor and keep tabs on your errors and exceptions within Bitbucket. No more switching between multiple tools and services to debug and deploy code. Atlassian Connect for Bitbucket provides an integration architecture that embeds add-ons right within the their UI creating a seamless user experience and unified workflow. How to install the Rollbar Bitbucket add-on? If you're currently a user of Bitbucket, click on your avatar, select "Manage Account", and simply install the Rollbar add-on by selecting "Find new add-ons" from the left menu. Once the add-on is installed, Rollbar data will be accessible per your Bitbucket repo dashboard(s). Note: Atlassian Connect for Bitbucket uses fine-grained permissions to grant add-on access to repositories, issues, accounts, teams, snippets and pull requests. We are thrilled to be a part of Atlassian Connect for Bitbucket and for the opportunity to build and maintain a valuable add-on for the Bitbucket community and Rollbar users to find and fix errors even faster! What's next? We're currently working toward full support for Bitbucket which includes Issues, Source Control and Authentication. Stay tuned. Leave a comment or send a note to support@rollbar. com and let us know if you have any feedback or questions. Happy to help. --- ### Easier way to get your team on Rollbar - Published: 2015-05-19 - Modified: 2022-09-15 - URL: https://rollbar.com/blog/easier-way-to-get-your-team-on-rollbar/ - Categories: product - Tags: onboarding Joining and getting your team on Rollbar is now easier. Rollbar is better together and our latest account setting makes it easier to get everyone together. Introducing Email Domain Safelists. Previously the only way to join your team on Rollbar was being invited via email. Admins had to send email invites one by one. This can be tough for large organizations and fast growing engineering teams. With Email Domain Safelists, now you can set an email domain safelist, so that anyone with an address at a specified domain can join your account (once confirmed). No more one off invitations. Making the workflow for admins and new team members easier and less confusing. PROBLEM As we have grown we've seen more and more new users who are employees at companies that are already using Rollbar get lost trying to join their company’s account. The scenario looks something like this: You see a notification in your company's Slack, or an issue in JIRA, GitHub etc. Click link to view more details Hit the Rollbar login page (confusion ensues) Decide to signup and create a new separate account that is orphaned from your company’s account Ask Admin to add/invite you to their Team on Rollbar The new account you created gets abandoned :( SOLUTION With the new email domain safelist, anyone who signs up (from specified domains) automatically gets added to your account once they confirm their email address. Go to /settings/accounts/Name/ to setup (need to be on the Owners team to enable).... --- ### Edit and rename error item titles - Published: 2015-03-26 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/edit-and-rename-error-item-titles/ - Categories: product - Tags: monitor You can now rename/edit your error titles. Fix ugly long titles. Hover over, click, edit, and save. Enjoy! --- ### Connect Rollbar to Bitbucket Issue Tracker - Published: 2015-03-17 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/connect-rollbar-to-bitbucket-issue-tracker/ - Categories: product - Tags: triage New integration now available - Bitbucket Issue Tracker Supercharge your issue and error tracking workflow when you connect your Rollbar and Bitbucket accounts. New Items in Rollbar will instantly create Issues in your Bitbucket repo, or you can create and link Issues with the click of a button within Rollbar. Here's how: Go to your project's Settings, then Notifications, and select Bitbucket Issues from the list of channels. Click 'Connect with Bitbucket” to grant Rollbar access to your account. From here, you can choose which repository, and add/edit/remove rules for Issues to be created automatically. Like magic, your Rollbar error items and details now show up in your Bitbucket repo. Success! Create Bitbucket Issues manually Prefer to create Issues by hand? You can create an Issue directly from the error Item page in Rollbar, or link with an Issue that already exists. You can use this alongside the automatic rules; or, remove the rules for full manual control. What's next? We're working toward full support for Bitbucket, like we have for GitHub - Issues, Source Control and Authentication. I know Rollbar users who rely on Bitbucket in their workflows are rejoicing. :) Let us know if you have any feedback or questions. We're here to help. Deploy and enjoy! --- ### Daily, Hourly, New Errors and Trend graphs are now clickable - Published: 2015-03-10 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/daily-hourly-new-errors-and-trend-graphs-are-now-clickable/ - Categories: product - Tags: monitor Yes, that's correct. Daily, Hourly, New Errors, and Trend graphs are now clickable. You can find and fix errors even faster, and in less clicks. :D Common usability feedback we get from our users: Sure would be nice if I could click the dashboard bar graphs and sparklines to quickly see what caused a spike in error events etc. Couldn't agree more. We love aggregating data and we love it clickable. So we enabled it! The following are now clickable in the project Dashboard: Hourly Error/Critical Occurrences Daily Error/Critical Occurrences Daily New/Reactivated Items Trends (24 hour and 7 day) Trends are also clickable on the Items page. For reference Trends are these guys also called 'sparklines'. When viewing a specific error item, the Last 60 Minutes, Hours, and Days are now clickable and aggregate error data by your selection. We're excited to get this features out the door. It reduces a lot of friction in navigating Rollbar. One of many UI and UX improvements to come. :) Login today and go click through your data now. Deploy and enjoy! --- ### Using Logstash and Rollbar Together - Published: 2015-03-02 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/using-logstash-and-rollbar-together/ - Categories: product - Tags: integrations The infrastructure behind most modern web applications includes an assortment of tools for collecting server and application metrics, logging events, aggregating logs, and providing alerts. Most systems are made up of a collection of best-in-class tools and services, selected and deployed over time as team members arrive and depart, needs change, the system grows, and new tools are introduced. One of the challenges web development and operations teams face is collecting and analyzing data from these disparate sources and systems and then piecing together what’s happening by looking at multiple reports and dashboards. Two common pieces in this puzzle are Logstash and Rollbar. Logstash (and the Kibana web interface, both of which are heavily supported by and integrated with Elasticsearch) lets you collect and parse logs, store them in a central location, search and explore the data via the Kibana UI, and output events to other services. Logstash provides a powerful tool for taking logs in many different formats, converting them into JSON events, then routing and storing those events. Rollbar collects errors from your application, notifies you of those errors, and analyzes them so you can more efficiently debug and fix them. With a few lines of code or config changes to your application, you can make errors, complete stack traces, trends and affected user reports accessible via your Roller dashboard. Like Logstash, Rollbar collects and analyzes events represented in JSON. By connecting Logstash and Rollbar, you can not only centralize and analyze your system and application logs, but... --- ### Increasing max-open files for beanstalkd - Published: 2015-02-28 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/increasing-max-open-files-for-beanstalkd/ - Categories: Code Tutorials - Tags: behind-the-scenes Quick tip: If you are running out of file descriptors in your Beanstalkd process, use /etc/default/beanstalkd to set the ulimit before the init script starts the process. e. g. # file: /etc/default/beanstalkd BEANSTALKD_LISTEN_ADDR=127. 0. 0. 1 BEANSTALKD_LISTEN_PORT=11300 START=yes BEANSTALKD_EXTRA="-b /var/lib/beanstalkd -f 1" # Should match your /etc/security/limits. conf settings ulimit -n 100000 Lots of resources online tell you to update your /etc/security/limits. conf and /etc/pam. d/common-session* settings to increase your maximum number of available file descriptors. However, the default beanstalkd installation on Ubuntu 12. 04+ uses an init script that starts the daemon process using start-stop-daemon which does not use your system settings when setting the processes ulimits. Just add this line to your defaults and you're good to go! --- ### Assign errors to your team - Published: 2015-02-26 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/assign-errors-to-your-team/ - Categories: product - Tags: triage Ever wanted to assign error items to other team members in Rollbar? Of course you have. Now you can. It is a pretty straight forward enhancement, but here is an overview. On the error ‘items’ details page, there's an “Assigned to" dropdown with the members of your team. Once assigned, we’ll shoot an email to that team member letting them know you assigned that specific item to them, including link and details. They'll be automatically added as a 'watcher' for that specific item and will receive notifications about any comments and updates. Assignment events will be listed in the item history section, so you can see who assigned it to whom, when. To quickly find items assigned to yourself or others on your team, search 'assigned:me', ‘assigned:username’, or 'assigned:unassigned' on the Items page. We're excited to get this out into the wild. Especially for some of the larger teams using Rollbar. Let us know what you think and how we can make it better for you and your team. --- ### Get notifications every time an error occurs - Published: 2015-02-26 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/get-notifications-every-time-an-error-occurs/ - Categories: product - Tags: monitor You can now setup notifications every time an error occurs. Previously specific error Notifications were only available for New Items and 10^th Occurrences. Notification Rules are available for all Channels (Email, Slack, HipChat, Trello, PagerDuty). --- ### Debugging Node.js Apps in Production with PyCharm - Published: 2014-12-19 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/debugging-node-js-apps-in-production-with-pycharm/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript Node. js has a built-in debugger that you can start in running processes. To do this, send a SIGUSR1 signal to the running process and connect a debugger. The one, big caveat here is that the debugger only listens on the local interface, 127. 0. 0. 1. The following are instructions for debugging Node. js applications running in your company's private network from your laptop, through a bastion host. SSH into the production host that is running the Node. js app Put your production app into debug mode. prod-host $> kill -s SIGUSR1 As root, start an SSH tunnel to connect your private network with localhost. prod-host $> ssh -N -q -L :8585:localhost:5858 On your laptop Start an SSH tunnel to the production host, through your bastion host. laptop $> ssh -N -q -L 5858::8585 @ Open PyCharm and create a remote debugging configuration. Run → Edit Configurations Click the + button on the top-left of the window and select “Node. js Remote Debug” Set the host to 127. 0. 0. 1 using port 5858, name it and save. Run the new Debug configuration. Run → Debug... Select the new configuration. At this point your laptop will have connected to your local SSH tunnel which will be connected to your production host's private network interface which will be tunneled to your production host's local network interface and your Node. js process. PyCharm → local SSH tunnel → bastion host → production host private network → production host localhost → Node.... --- ### RQL String Functions - Published: 2014-12-16 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/rql-string-functions/ - Categories: product - Tags: triage RQL now includes a basic library of string functions. You can use these to slice and group your data in arbitrary ways. For example, "email domains with the most events in the past hour": SELECT substring(person. email, locate('@', person. email)), count(*) FROM item_occurrence WHERE timestamp >= unix_timestamp - 3600 AND person. email IS NOT NULL GROUP BY 1 ORDER BY 2 DESC The new functions: concat, concat_ws, lower, upper, left, right, substring, locate, length, char_length. The functions are implemented to be compatible with MySQL; see the RQL docs for details. --- ### October Release Roundup - Published: 2014-10-31 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/october-release-roundup/ - Categories: product - Tags: monitor Happy Halloween, everyone! Here's a roundup of what's new in Rollbar this month. Ruby Upgrades The rollbar gem for Ruby got a lot of attention in October. Early in the month, we released version 1. 1. 0, which added support for Ruby 2. 1 exception causes, and a new 'failover_handlers' feature for more reliable asnyc reporting. Mid-month, we released version 1. 2 which adds a new, much nicer and more powerful interface for sending the data you want into Rollbar. In 1. 2, you can do: begin Rollbar. info("About to do_something") do_something rescue => e # send a message and extra data along with an exception Rollbar. error("Something went wrong", e, :foo => "bar") # customize payload attributes, like the 'person' or 'fingerprint' Rollbar. scope({:fingerprint => "something"}). error(e) end More in the docs. It's available now on Rubygems (latest version is 1. 2. 7). New Status Site We've upgraded status. rollbar. com. We'll be using it to communicate about outages, so if you'd like to be notified, go there and subscribe to updates. The new status site also shows the current maximum latencies for the processing pipeline. Link Rollbar Items with Existing 3rd-party Issues You can now link a Rollbar item with an existing issue in your issue tracker: Or if you have a Rollbar item that is already linked, you can now change or remove the link. This works with Asana, GitHub Issues, JIRA, Pivotal Tracker, Sprintly, and Trello. Geolocation for IP Addresses Rollbar now shows geolocation information on... --- ### New "Reports" API calls - Published: 2014-08-20 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/new-reports-api-calls/ - Categories: product - Tags: monitor We've released two new API calls, exposing some of the data on the Dashboard via our JSON API. Use the /reports/top_active_items to fetch the same data as "Top 10 Active Items in last 24 hours". And use /reports/occurrence_counts to fetch the same data as "Daily Error/Critical Occurrences" and "Hourly Error/Critical Occurrences". More details in the docs. If you give this a try, send us any feedback at team@rollbar. com. --- ### Occurrence counts by minute - Published: 2014-07-31 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/occurrence-counts-by-minute/ - Categories: product - Tags: monitor We've released an improvement to our Item Detail pages, adding a graph showing the aggregate occurrence counts per minute. It's live now for everyone and looks like this: You can use this to see patterns that previously were hard to spot, like errors that occur on a regular, sub-hour interval (like the one shown above). It's also useful for quickly seeing how the occurrence rate changes after a deploy. --- ### node_rollbar 0.3.11 - Published: 2014-07-24 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/node_rollbar-0-3-11/ - Categories: product - Tags: JavaScript We've released a new version of our Node. js library, version 0. 3. 11. It's available on npm and GitHub. This release adds a new function to the public API, handleErrorWithPayloadData. The name's a mouthful, but it allows you to use (nearly) the full power of the Rollbar API when reporting errors. For example, to report an error as a "warning" and pass some additional data: rollbar. handleErrorWithPayloadData(err, {level: "warning", custom: {someKey: "some value"}}); See more examples in the docs for caught exceptions. --- ### More stack trace filename search filters - Published: 2014-07-22 - Modified: 2021-07-19 - URL: https://rollbar.com/blog/more-stack-trace-filename-search-filters/ - Categories: product - Tags: monitor We've released several new search filters to make it easier to find errors by the filenames in their stack trace. If you've ever wanted to find client-side Angular JavaScript errors that only occurred within your own specific domain, or exceptions originating in a specific part of your code, keep reading. You've always been able to search for errors where any filename contains a string, but now you can also search for errors where: all filenames contain a string (allfiles:myproject) no filenames contain a string (nofiles:evilproject) the top stack frame's filename contains a string (topfile:mydomain. com) the bottom stack frame's filename contains a string (bottomfile:some_important_library) the number of filenames is within a range (minfiles:1 and/or maxfiles:10) any filename contains a string (file:. rb) These filters can all be combined in a single query. If you forget which filters exist, mouse over the ? next to the search box to see the help text. --- ### Missing daily summary emails - Published: 2014-07-21 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/missing-daily-summary-emails/ - Categories: product - Tags: monitor We just rolled out a fix for missing daily summary emails. The bug was introduced last week when we refactored a bunch of our email code. As a result, some projects did not receive their daily email for the previous 24 hours. We don't want to spam users with old summaries so please contact support@rollbar. com if you'd like to get yours. --- ### rollbar-gem v0.13.2 - Published: 2014-07-08 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/rollbar-gem-v0-13-2/ - Categories: product - Tags: ruby We've released a patch version (0. 13. 2) of our Ruby gem, fixing two issues. The use_sucker_punch config option could cause timeouts when using Unicorn (#121) - thanks to Fabio Napoleoni for the report Sidekiq payloads were being mutated, causing the sidekiq-failures UI not to display parameters correctly (#122) - thanks to Dmitry Krasnoukhov for investigating and reporting this. It's available now on Rubygems and GitHub. --- ### Prettier Node.js stack traces - Published: 2014-07-01 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/prettier-node-js-stack-traces/ - Categories: product - Tags: debug Small tweak of the day: we now render Node. js stack traces to look more like they do via console. log(err. stack). We also fixed an issue where the context lines would appear indented at random levels. Before: After: --- ### Debugging by IP Address - Published: 2014-06-30 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/debugging-by-ip-address/ - Categories: product - Tags: debug We've released a first round of features around IP Addresses. Similar to how you can see the history by Person, you can now see the history by IP address. If you're tracking down an issue affecting logged-out users, this can be really helpful. To get there, click on an IP address anywhere in the Rollbar interface: You'll be able to see all events affecting that IP: There's also a handy link to the WHOIS record for the IP. --- ### Better support for Browserify and Webpack - Published: 2014-06-18 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/better-support-for-browserify-and-webpack/ - Categories: product - Tags: JavaScript Recently (actually last week), we released a new version of rollbar. js that has a few fixes to play nicely with Browserify and Webpack. It's being served from our CDN and the source is on GitHub. We've also put together examples showing how to use rollbar. js with each. If you use Browserify or Webpack and want to include rollbar. js that way instead of using our standard snippet, this is your lucky day: Browserify example Webpack example Thanks to @altano for helping with this. --- ### Codeship + Rollbar - Published: 2014-06-17 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/codeship-rollbar/ - Categories: product - Tags: integrations Our friends over at Codeship wrote a piece about how they use Rollbar to track deployments and fix exceptions. More on the Codeship blog: Tracking Deployments with Rollbar. --- ### rollbar.js snippet update - Published: 2014-06-10 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/rollbar-js-snippet-update/ - Categories: product - Tags: JavaScript We've released a new version of rollbar. js (1. 0. 0-rc9), which fixes a bug in some environments. If you've seen "TypeError: Uncaught TypeError: Cannot read property '_wrapped' of null" in your project, you should update to the latest snippet. Grab it from the docs to update. --- ### More Powerful Custom Grouping - Published: 2014-06-09 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/more-powerful-custom-grouping/ - Categories: product - Tags: monitor Our Custom Grouping feature just got a lot more powerful. It's now possible to: group TimeoutErrors by the controller+action it appears in group 404s by path group all Android exceptions by the app version number and much more, just by writing a simple JSON rule. This feature is live now for all accounts. For the uninitiated: Custom Grouping allows you to tune Rollbar's grouping algorithm for the specifics of your application. If our default algorithm isn't grouping incoming occurrences like you want, you can define rules to customize. Rules consist of a condition, a title, and a fingerprint. If an incoming occurrence matches the condition, then it will be grouped with others that have the same fingerprint, and given the title title. (If it doesn't match, then the next rule is evaluated, or if there are no more rules, the default algorithm is applied. ) Previously, the title and fingerprint could only contain static text. Now, they're templates that can reference: any part of the incoming occurrence the title and fingerprint generated by our default algorithm For example, to group all ActionController::RoutingErrors by the request path (which comes in as the exception message): Or to have all Android exceptions grouped by app version: See the docs for more details. We've already seen this solve a diverse set of grouping problems and are really excited about how powerful this is. If you have any questions about how to get your errors grouped the way you want, drop us a line at... --- ### Local variable values in stack traces - Published: 2014-06-05 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/local-variable-values-in-stack-traces/ - Categories: product - Tags: debug "This stack trace would be so much easier to debug if I knew what the value of that variable was" - said us, many many times. We finally scratched our own itch and built this into Rollbar. It's really awesome. Take for example a bug I ran into with our new deploy emails feature: "Hmmm, sure would be nice if I knew which variable was None--is it prev_deploy or deploy? " In the past, I would've had to reproduce locally, or add an additional rollbar. report_message to log each variable in production. But now I can just press "locals" for the stack frame and see it instantly: "OK, it's prev_deploy. " That was all I needed: prev_deploy will be None when deploy is the very first deploy in this project. Easy two-line fix. Time taken from opening the Rollbar notification to committing the fix: 2 minutes. Rollbarred! How it works We've implemented this in Python (pyrollbar), and are actively exploring other languages. Ruby and PHP are looking promising. Here's how it works in Python. When this feature is enabled and an exception is reported, we use the inspect module to collect: all stack frames: names and values of all variables that are function arguments in-project stack frames: names and values of all local variables There are two main edge cases to deal with: The variable could contain sensitive data. To deal with this, we use the same scrub_fields configuration used for scrubbing request data. If the variable name matches one... --- ### Security patch for the recent CCS Injection Vulnerability - Published: 2014-06-05 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/security-patch-for-the-recent-ccs-injection-vulnerability/ - Categories: product - Tags: security For the security conscious folks out there - We just finished patching our load balancers with the latest security updates. That is all. :) More info can be found here. --- ### Deploy emails show which commits were deployed - Published: 2014-06-04 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/deploy-emails-show-which-commits-were-deployed/ - Categories: product - Tags: monitor We recently added a feature I've wanted for a long time: our Deploy email notifications now show which commits were in that deploy. It looks like this: This works by querying GitHub's API to find the differences between the commit used for the previous deploy and the commit you just deployed. (If this looks familiar, it's because we show the same information on the Deploys page). As long as one user in your account has GitHub enabled (and the token enabled for your account), all users will be able to see the commit list. Want this? Sign up for a free account, connect with GitHub, and set up deploy tracking. Whenever you deploy, you and your team will get an email like the one above. --- ### Daily summary email bugfix - Published: 2014-06-02 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/daily-summary-email-bugfix/ - Categories: product - Tags: monitor Last week we fixed a bug in our daily summary emails that a customer reported on May 1st. The bug caused some of the emails to miss information on errors that occurred during certain parts of the day. This was a pretty serious bug. It affected almost all of our customers and had been around for a very long time. The issue ended up being a miscalculation in our timezone handling code. Most developers who have worked with timezones know how difficult it can be to get it right. I'll explain how we did it and how Rollbar helped us quickly narrow in on the problem. Debugging The symptoms: The occurrence counts in some of the daily summary emails were too low Some new errors were not even in the daily summary emails The first thing I did was to recreate the database query by hand. After reading the code and pulling out the relevant queries, I was able to recreate the daily summaries for production but in a development environment. At this point, it was clear that we were missing data but the query was correct. Some possible culprits: MySQL slave delay Long-running MySQL transactions Nebulous time-zone related bug in our code I was able to verify that MySQL slave delay was not the cause by looking at our Scout graphs for the database host. Slave delay was nowhere near where it needed to be to cause this. Next, I looked for long-running MySQL transactions. We have quite a... --- ### rollbar-php v0.9.2 released - Published: 2014-05-30 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/rollbar-php-v0-9-2-released/ - Categories: product - Tags: PHP We've released another small update to rollbar-php, version 0. 9. 2. Get it on Packagist or GitHub. This release contains a fix for an issue occurring in high-volume environments using rollbar-php with rollbar-agent. Previously, it was possible for relay log filenames to collide; now, the filenames include both the PID and the current time in microseconds (from microtime(true)). Thanks to Ryan Fink for the pull request. --- ### rollbar-php v0.9.1 released - Published: 2014-05-29 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/rollbar-php-v0-9-1-released/ - Categories: product - Tags: PHP We've released another small update to rollbar-php, version 0. 9. 1. Get it on Packagist or GitHub. This release contains a fix for an issue when using rollbar-php with rollbar-agent, our server-side agent that allows asynchronous reporting. Previously, when used in agent mode, blank files would be created on each request, even if there was nothing to report. Now, these files are only created when needed. Thanks to Ryan Fink from Red Ventures for the fix. --- ### rollbar-gem v0.12.20 released - Published: 2014-05-29 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/rollbar-gem-v0-12-20-released/ - Categories: product - Tags: ruby We've released a new patch version of rollbar-gem, version 0. 12. 20. Get it on Rubygems or GitHub. This release contains a compatibility fix for Sidekiq < 2. 3. 2, as well as an improvement to the project_gems feature. If you have multiple gems that you want to be considered in-project code, you can now specify them with a regex (strings still work too). For example: Rollbar. configure do |config| config. project_gems = end Thanks to Jonathan Cheatham for the pull request. --- ### rollbar-php v0.9.0 released - Published: 2014-05-23 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/rollbar-php-v0-9-0-released/ - Categories: product - Tags: PHP We've released a new version of rollbar-php, version 0. 9. 0. It's available now on Packagist, or find the source on GitHub. E_NOTICES NOW IGNORED BY DEFAULT Rollbar can track E_NOTICEs as 'info'-level events, but in practice this often turns into large amounts of data, even for relatively low-traffic projects. We've changed the defaults to now ignore E_NOTICE errors. If you do want E_NOTICEs to be sent to Rollbar, configure like this: --- ### rollbar.js v1.0.0-rc8 released - Published: 2014-05-22 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/rollbar-js-v1-0-0-rc8-released/ - Categories: product - Tags: JavaScript Today, we released rollbar. js version 1. 0. 0-rc8. This release includes a fix for a bug where the global variable i was used, which could cause strange behavior when interacting with other code that also references i as a global variable. The change is live now and being served from our CDN - no action is required on your part for most customers. If you're self-hosting rollbar. js, we recommend upgrading your copy to the latest. --- ### Heartbleed Bug Response - Published: 2014-04-08 - Modified: 2021-09-20 - URL: https://rollbar.com/blog/heartbleed-bug-response/ - Categories: product - Tags: security Updated 4/9 7:30pm What is Heartbleed? CVE-2014-0346, known as “Heartbleed”, is a bug in OpenSSL v1. 0. 1 through 1. 0. 1f that allows a remote attacker to access private memory on the target server. It has existed for almost 2 years. More info can be found here: http://heartbleed. com/ With this vulnerability, an attacker can: Get your private key for your domain’s ssl cert Decrypt all current and past SSL traffic to/from all affected machines If this sounds bad, it is. Most sites on the Internet are affected. Are you affected? Probably. If your web server or load balancer is running on linux and you’ve updated your packages anytime in the last 2 years, you are more-than-likely affected. To check your OpenSSL version, run openssl version -a Check out http://filippo. io/Heartbleed/ to test your servers for the vulnerability. How We Responded We learned of CVE-2014-0346 at around 4:50pm on 4/7 and immediately began our response. We completed the most important fix (patching OpenSSL) within about an hour, and have been working over the past 24 hours on related issues. Here is a timeline of what we’ve done since the vulnerability was announced: 4/7 - 3:01pm - Ubuntu Security Announcements email Subscribe to this list here 4/7 - 4:50pm - Began updating our load balancers with the fix. All servers patched by 6pm. We’re running nginx on Ubuntu 12. 04. Updating is as simple as: apt-get update apt-get upgrade openssl version -a # should show that it was built on... --- ### Connecting Rollbar with PagerDuty - Published: 2013-10-16 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/connecting-rollbar-with-pagerduty/ - Categories: product - Tags: integrations Using Rollbar with PagerDuty is now a lot more seamless. PagerDuty provides SaaS IT on-call schedule management, alerting, and incident tracking. With our new integration, you can automatically send issues found by Rollbar into incidents in PagerDuty. We have a few customers using it already. Here’s what Richard Lee, CTO at Polydice, a mobile development studio, has to say: “With Rollbar’s integration of PagerDuty, we’re able to get notified as soon as errors detected, and avoid possible downtime to our customers. This powerful combination becomes a must have tool for us. ” — Richard Lee, CTO at Polydice Integrating Rollbar with PagerDuty is easy; just create a new Generic API System in PagerDuty, and then link it in Rollbar’s Notification settings. See our docs for detailed instructions. --- ### Resolving Rollbar Items in Versions - Published: 2013-09-17 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/resolving-rollbar-items-in-versions/ - Categories: product - Tags: triage We just rolled out a new feature to help track which versions/revisions errors are resolved in. When resolving items within Rollbar, you have the option of entering a revision or version number. If one is entered, it will appear in the item’s status history to let anyone looking at the item better understand specifically when it was fixed. This version can be combined with a new code_version parameter set in the configuration options of the latest versions of our notifiers. This can be set to either a numerical value (eg. 1, 24, 300), a semantic version value (eg. 1. 0. 3, 2. 9), or a git revision sha. Here are examples on how to set this parameter in our JavaScript and Ruby notifiers: In the JavaScript snippet: _rollbarParams = { // ... other configuration "client. javascript. code_version": "bdd2b9241f791fc9f134fb3244b40d452d2d7e35" } In your rollbar-gem configuration: Rollbar. configure do |config| # ... other configuration config. code_version = 'bdd2b9241f791fc9f134fb3244b40d452d2d7e35' end The other notifiers have a very similar top-level code_version configuration settings. See the notifier readmes for more info. If you resolve an item within Rollbar in a certain version and are also specifying a code_version for your code, we will use both of these values to decide whether or not to reactivate the item. For example, say you have a bug in version 1. 0 of your app. The bug is fixed and will be deployed to users in verision 1. 1, but that won’t happen for a few days. You can just resolve... --- ### Ad-hoc error reporting with Rollbar CLI - Published: 2013-08-08 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/ad-hoc-error-reporting-with-rollbar-cli/ - Categories: product - Tags: monitor We just coded up a quick tool to send Rollbar messages from the command line. It’s useful for quick, one-off monitoring scripts that you don’t have time to instrument with one of our notifiers. To install, just pip install rollbar and you’re done. e. g. Tracking all non-500s as WARNINGs from HAProxy tail -f /var/log/haproxy. log | awk '{print $11,$0}' | grep '^5' | awk '{$1="";print "warning",$0}' | rollbar -t $ACCESS_TOKEN -e production -v e. g. Watch failed login attempts tail -f /var/log/auth. log | grep -i 'Failed password' | awk '{print "error user ",$11,"failed auth from ",$13}' | rollbar -t $ACCESS_TOKEN -e ops More info on how to install and use it can be found here. --- ### jQuery Error Instrumentation - Published: 2013-08-07 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/jquery-error-instrumentation/ - Categories: product - Tags: JavaScript Today we are releasing a new feature for our JavaScript notifier that should make tracking down errors much easier if you use jQuery 1. 7 and above. The new functionality comes in a separate JS plugin snippet that should be placed right below where jQuery is loaded. Here is the first version of the plugin: // The source can be found on GitHub here. The snippet wraps the ready, on and off functions in jQuery to wrap any passed-in handlers in try/except blocks to automatically report errors to Rollbar. This lets us collect the full stack trace with line and column numbers for each frame, instead of just the last frame with only a line number. When combined with source maps, this makes debugging JavaScript errors much more doable. The new snippet also adds a handler to ajaxError to automatically report any jQuery AJAX errors such as 404s and 500s to Rollbar. If you don’t want this, add the following option to your base snippet’s _rollbarParams: "notifier. plugins. jquery. ignoreAjaxErrors": true You can start tracking errors in Rollbar by signing up for free. Or read more in the docs. --- ### JavaScript and Source Maps in a Django App - Published: 2013-08-02 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/javascript-and-source-maps-in-a-django-app/ - Categories: Code Tutorials, JavaScript, Python - Tags: JavaScript It’s pretty well known that every web app needs frontend JavaScript these days to provide the best possible user experience. You are probably going to have a bunch of JavaScript files that need to be loaded by your users for that to happen, and since we all care about performance, minifiying and compressing these files is an absolute must. But what happens when it comes time to debug issues in these minified files? Stack traces will more or less be completely useless. How do we solve this problem? JavaScript source maps solve this problem. They allow you to map a point in a minified file back to the unminfied source, making it possible to actually identify and fix issues encountered in a production app environment. Below I have outlined a simple guide for setting up source map generation and usage in a sample Django app. You’ll learn how generate source maps for minified files, debug errors that happen in these files, and also a quick overview of what’s required to get this working for your production environments. Local Debugging with Source Maps Say you have a simple Django app with the following directory structure: ... app/ ... views. py static/ js/ site. js (containing various models and functionality used in your app) jquery. js (unminified) util. js templates/ index. html site. js would have the following code: var aFunction = function { var a = b; } App = {}; App. errorCausingFunction = function { aFunction; } views. py would... --- ### Debug Production Errors in Minified JavaScript with Source Maps and Rollbar - Published: 2013-07-25 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/debug-production-errors-in-minified-javascript-with-source-maps-and-rollbar/ - Categories: Code Tutorials, JavaScript - Tags: JavaScript Rollbar just got a much-requested feature: Source Maps support for Javascript. If you minify your Javascript code in production, this will make debugging production errors much easier. This feature is now live for all accounts. {: . highlightbox} Here's a link to a recently updated tutorial on using JavaScript source maps with Rollbar. What Are Source Maps? If you minify your Javascript code (i. e. using UglifyJS2 or the Closure Compiler), it gets harder to debug errors. Stack traces reference the line/column numbers in the minified code instead of the original source code. Source Maps were designed to resolve this; they provide a mapping back from the minified line/column numbers to the original code. Chrome and Firefox have tools to use them in development, but what about errors that happen in production? Source Maps and Rollbar Rollbar can now map stack traces that reference minified code back to the original source files, lines, and column numbers. Here’s what a stack trace might have looked like before: Here’s the de-minified version: We’ll also use the de-minified stack trace in our grouping algorithm, which should result in more useful grouping. Getting this set up To get started, you’ll need to make a change to _rollbarParams in the on-page javascript snippet. Add the following two parameters: _rollbarParams = { // ... existing params ... // set this to 'true' to enable source map processing "client. javascript. source_map_enabled": true, // provide the current code version, i. e. the git SHA of your javascript code.... --- ### Async node.js API server testing - Published: 2013-07-12 - Modified: 2025-02-19 - URL: https://rollbar.com/blog/async-node-js-api-server-testing/ - Categories: Code Tutorials, JavaScript - Tags: nodejs This post is about how we built our test suite for our API server at Rollbar and some of the tricks and gotchas we ran into along the way. We wanted to build a test suite that not only tested the API logic, but also the underlying code, namely the Express and the Connect middlewares we use. If our API server was going to break, we wanted to know before we deployed it to thousands of customers and millions of requests per day. Testing is super important. If you don’t want to test, this probably won’t be very helpful or interesting. We use Vows. Why not Mocha? Mocha is, by far, the most widely used testing framework for Node. js apps. So, why didn’t we use it? The two main reasons were that Vows was the first thing I found when Googling “nodejs async testing” and the other is that the syntax of Mocha tests felt like another language and less like code. Mocha tests are more readable but the benefit of readability was overshadowed by the need to remember all of these new, special-case methods that Mocha injects. //Mocha . indexOf(5). should. equal(-1); vs //Vows assert. equal(. indexOf(5), -1); There’s something that bothered me about the former. I didn’t like how the library used a bunch of magic to enable something this small/strange. Mocha has a lot of awesome features but none that were important enough for me to switch. A simple Vows test Vows works just as you’d... --- ### May Release Roundup - Published: 2013-05-29 - Modified: 2021-07-19 - URL: https://rollbar.com/blog/may-release-roundup/ - Categories: product - Tags: monitor Here’s a roundup of what’s new at Rollbar in the month of May. Big Features We revamped our notifications system, and added integrations with a bunch of new services. Rollbar now works with Asana, Campfire, Flowdock, GitHub Issues, Hipchat, JIRA, Pivotal Tracker, and Trello, as well as any arbitrary system via a Webhook. See the announcement blog post for more details. Small Features You can now customize how occurrences are grouped. This first release allows you to define rules of things that should always be grouped together. See the documentation: Custom Grouping Rules. An in-depth post on how to use this is coming soon. There’s now a “Download CSV” link at the bottom of the Items page, which will let you download a CSV of what you see on the page. Note that this information is also available via our API. You can now sort the Items page by Total Occurrences or Unique Users, in additon to Last Occurrence. Click on the column headers to change the sort. Links to files in GitHub are now linked to the appropriate revision, when this information is available. We’ll use one of the following (trying each in order): the value of server. sha the value of server. branch, if it looks like a SHA the revision from the last deploy before the first occurrence of the item Library Updates Ruby We released rollbar-gem versions 0. 9. 11 through 0. 9. 14. The changes include a fix for use with Rails 4, a concurrency... --- ### Rules Engine for Notifications, Plus Integrations with Campfire, Hipchat, JIRA and Trello - Published: 2013-05-06 - Modified: 2021-07-14 - URL: https://rollbar.com/blog/rules-engine-for-notifications-plus-integrations-with-campfire-hipchat-jira-and-trello/ - Categories: product - Tags: integrations Today we’re revamping the model for defining what you want to be notified about from Rollbar. Rollbar now integrates with Asana, Campfire, Flowdock, GitHub Issues, Hipchat, JIRA, Pivotal Tracker and Trello, as well as any arbitrary system via a Webhook. New Integration Channels In addition to our existing channels (Email, Asana, GitHub Issues, Pivotal Tracker, and Webhook), we’re launching support for four more: Campfire, Hipchat, JIRA, and Trello. You can set up all of this in Settings -> Notifications. Notification Rules Engine Notifications are now configured per-project (instead of per-user-per-project), using a trigger-action model. There are triggers for the following events: New Item (first occurrence of a new issue) Reactivated Item (a previously resolved issue has occurred again) 10nth Occurrence (an issue has occurred for the 10th, 100th, etc. time) Resolved Item (an item has been resolved by hand) Reopened Item (an item has been reopened by hand) Post-deploy (you’ve notified us that you deployed a new release) Corresponding actions are available for most actions in most channels. If it would make sense, it probably exists. Most actions can be configured as you’d expect (i. e. set which teams should receive an email, or which user to assign JIRA issues to). Item-related triggers can be filtered by environment, level, title (exception class+message), and filename. Deploy triggers can be filtered by environment and comment. Our underlying tech supports much more than the UI exposes, so let us know what other filters you’d like to see. Migration for existing customers We’ve migrated... --- ### Taking UNIQUE indexes to the next level - Published: 2013-03-29 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/taking-unique-indexes-to-the-next-level/ - Categories: Code Tutorials - Tags: sql You’ve probably seen unique constraints somewhere – either in Rails’ validates :uniqueness, Django’s Field. unique, or a raw SQL table definition. The basic function of unique constraints (preventing duplicate data from being inserted) is nice, but they’re so much more powerful than that. When you write INSERT or REPLACE statements that rely on them, you can do some pretty cool (and efficient) things that you would’ve had to do multiple queries for otherwise. This post covers unique indexes in MySQL 5. 5. Other versions of MySQL are similar. I’m not sure about Postgres or other relational databases but presume they’re similar-ish as well. Primer: what is a unique index? Pre-primer: data in a database is stored on disk somewhere. In a SQL database, the data is organized into tables which have rows and columns. An index is a way to look up particular rows, based on the values of one or more columns, without having to scan through the whole table. Instead, you look up those values in the index, which tells you where to find the matching rows. Index lookups are typically faster than full table scans because they’re organized for fast searches on the indexed columns (usually using binary trees), and they’re also generally smaller than the original data. A unique index is an index that also imposes a constraint: that no two entries in the index can have the same values. It can be comprised of one column or many columns. If many columns, then the entire... --- ### Improved grouping for Javascript errors - Published: 2013-03-21 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/improved-grouping-for-javascript-errors/ - Categories: product - Tags: monitor We’ve released an updated to how Javascript errors are grouped in Rollbar. The new update does a better job of separating different errors into different groups (“Items” in Rollbar parlance) while still recognizing the same issue in different browsers as the same. It’s now enabled for all new projects. Existing projects can enable it on the Migrations tab in Settings. Now the longer version... First some background: by default, exceptions in Rollbar are grouped using their stack traces. We take all of the filenames and method names in all of the stack frames, plus the exception class name, apply a number of heuristics to normalize them, and then combine everything together and take a sha1 hash. The result is a 40-character string used as the “fingerprint”; occurrences with matching fingerprints that also have the same project, environment, and platform are grouped together. The fingerprint can also be overridden at the API level for custom grouping. This generally works pretty well: Omitting the line numbers from stack frames means groups persist across code changes elsewhere in the file. Using the whole stack trace, instead of just the very last frame, avoids conflating unrelated issues that happen to cause an exception on the same line of code. Using just the exception class, instead of also the message, avoids including data in the fingerprint, and when we have a nice, long stack trace, that’s usually enough uniqueness. Javascript uncaught errors are a different story though. They’re reported through window. onerror, which luckily is... --- ### Launch and initial funding - Published: 2013-02-26 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/launch-and-initial-funding/ - Categories: company - Tags: error-monitoring Today we’re excited to announce the public launch of Rollbar. Rollbar tracks and analyzes errors in production applications, helping dev and ops teams diagnose and fix them. Platform-agnostic API Anything that can speak JSON and HTTP can talk to Rollbar. Our API accepts raw “items” (errors, exceptions, and log messages) and deploys as inputs, and aggregated items, occurrences, and deploys as outputs. We provide official libraries for Ruby, Python, PHP, Node. js, Javascript, and Flash; or you can roll your own. Severity levels Just because something raises an exception, doesn’t mean it should be treated as an “error”. Rollbar lets you utilize five severity levels (from “debug” to “critical”) to control visibility and notifications. Severity can be set in your code, or after-the-fact in the Rollbar interface. Track users through your stack Person tracking helps you provide great customer support by emailing affected users when you fix an error they hit. Or see the history for a particular user and link customer error reports to code problems, client- and server-side. So much more API endpoints on 3 continents. Resolving and reactivations. Real-time notifications for new issues. Graphs everywhere. Deploy tracking. Search by title, host, file, context, date, severity, status. Replay an issue by pressing a button. SSL everywhere. GitHub, Asana, and Pivotal Tracker integration. We’ve built many of the pieces our beta customers have needed, and we really think you’re going to like it. Start a free trial now, or see pricing, features, or docs. More firepower We’re also excited... --- ### Upgrading to the new Rollbar notifier libraries - Published: 2013-02-26 - Modified: 2021-07-16 - URL: https://rollbar.com/blog/upgrading-to-the-new-rollbar-notifier-libraries/ - Categories: product - Tags: SDK We’ve updated all of our notifier library repositories to match the name change to Rollbar today. The old Ratchet. io repos have been deprecated and all further development will continue on the respective Rollbar versions. Please note that the submit. ratchet. io endpoint and the existing libraries will continue to work for the indefinite future, so you don’t have to do anything right now. But we do recommend upgrading to take advantage of future updates. Upgrading should be seamless and quick. Please contact support@rollbar. com if you run into any issues. Here are links to the upgrade instructions for each: Browser JS - update the JS snippet used on your site to the version shown here pyratchet ratchetio-gem ratchetio-php ratchet-agent node_ratchet flash_ratchet --- ### Real-time Search for Exceptions and Errors - Published: 2012-10-24 - Modified: 2022-11-28 - URL: https://rollbar.com/blog/real-time-search-for-exceptions-and-errors/ - Categories: product - Tags: monitor We’re happy today to announce the release of real-time search. You can now search your exceptions, errors, and log messages by title: For exceptions, the title contains the exception class and message. For errors and log messages, it contains the entire message. It’s a full-text search that works best on whole words; we also do a few tricks with camelCase and underscore_separated terms. The search index is kept up-to-date in real-time as new items are added to the system (that’s the “real-time” part). Typically the delay is ~2 seconds from receiving the input at our API to being inthe index and searchable. Current customers can try it out now; let us know if you run into any issues. What else would you like to see indexed? If you don’t have an account yet, sign up here for early access. Under the hood We’re using the new Sphinx realtime features for indexing and querying. It’s currently running on a single dedicated machine (1 core, 2GB ram, 100GB local disk). New items are indexed by a long-running script that indexes new items as they are inserted. (It keeps track of its location in the table and polls every second for new rows. ) The index includes two full-text fields, title and environment, and two scalar attributes, status and level. Title and environment don’t change, so we don’t need to update them. But status (active/resolved) and level (critical/error/warning/info/debug) do. We keep these in sync by simply writing to the search server whenever we... --- ### Using a Request Factory in Pyramid to write a little less code - Published: 2012-09-07 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/using-a-request-factory-in-pyramid-to-write-a-little-less-code/ - Categories: Code Tutorials, Python - Tags: Python At Rollbar. com, we’ve been using Pyramid as our web framework and have been pretty happy with it. It’s lightweight and mostly stays out of our way. Pyramid doesn’t have a global request object that you can just import, so it makes you pass around request wherever you need it. That results in a lot of library code that looks like this: # lib/helpers. py def flash_success(request, body, title=''): request. session. flash({'body': body, 'title': title'}) and a lot of view code that looks like this: # views/auth. py @view_config(route_name='auth/login') def login(request): # (do the login... ) helpers. flash_success(request, "You're now logged in. ") # (redirect... ) That is, there ends up being a lot of function calls that pass request as their first argument. Wouldn’t it be nicer if we could attach these functions as methods on request itself? That would save a few characters every time we call them, and let us stop thinking about whether request is the first or last argument. Pyramid facilitates this by letting us provide our own Request Factory: from pyramid. request import Request class MyRequest(Request): def hello(self): print "hello! " def main(global_config, **settings): config = Configurator(settings=settings, request_factory=MyRequest) # ... Now the request passed to our view methods, and everywhere else in our app, has our hello method. So, what can we do with this that’s actually useful? In our codebase, we have a few convenience methods to get data about the logged-in user, flash messages, and check if features are enabled. Here it... --- ### Writing a simple deploy script with Fabric and @roles - Published: 2012-08-16 - Modified: 2022-09-28 - URL: https://rollbar.com/blog/writing-a-simple-deploy-script-with-fabric-and-roles/ - Categories: Code Tutorials, Python - Tags: integrations I first heard about Fabric a couple years ago while at Lolapps and liked the idea of: writing deployment and sysadmin scripts in a language other than Bash that language being Python, which we used everywhere else but we already had a huge swath of shell scripts that worked well (and truth be told, Bash isn’t really that bad). But now that we have at clean slate for Rollbar, Fabric it is. I wanted a simple deployment script that would do the following: check to make sure it’s running as the user “deploy” (since that’s the user that has ssh keys set up and owns the code on the remote machines) for each webserver: git pull pip install -r requirements. txt in series, restart each web process make an HTTP POST to our deploys api to record that the deploy completed successfully Here’s my first attempt: import sys from fabric. api import run, local, cd, env, roles, execute import requests env. hosts = def deploy: # pre-roll checks check_user # do the roll. update_and_restart # post-roll tasks rollbar_record_deploy def update_and_restart: code_dir = '/home/deploy/www/mox' with cd(code_dir): run("git pull") run("pip install -r requirements. txt") run("supervisorctl restart web1") run("supervisorctl restart web2") def check_user: if local('whoami', capture=True) ! = 'deploy': print "This command should be run as deploy. Run like: sudo -u deploy fab deploy" sys. exit(1) def rollbar_record_deploy: # read access_token from production. ini access_token = local("grep 'rollbar. access_token' production. ini | sed 's/^. * = //g'", capture=True) environment = 'production' local_username =... --- ## Guides ### What is Error Logging in C++ > Error logs can be a life-saver. Learn how to create an error logging class in C++ to track errors, warnings, and status messages in runtime. - Published: 2022-07-11 - Modified: 2022-07-18 - URL: https://rollbar.com/guides/cpp/cpp-error-logging/ - Guide Languages: C++ In C++, an error logger class is typically used to track errors, warnings, and status messages at runtime. In a simple application, errors are printed directly to the console; however, in most cases, this class will log errors along with a timestamp, severity, and any other necessary details to a log file specified by the developer. This article is designed to help intermediate C++ coders learn how to create an error logging class and customize it as they see fit.   An Example of an Error Logger Class At runtime, the inner workings of a program are invisible to the user. This makes it difficult to understand why an application isn’t working as expected. An error logger is a module designed to assist in these situations. The logger sits within a program and tracks any errors or useful status messages created during runtime. Logs allow you to see the results of each independent process to determine exactly where faults are occurring. Below is an example of a basic error logging class in C++. While a fully realized logger would be more robust, this gives a good starting point to understand how a logger is designed. enum LogPriority { TraceP, DebugP, InfoP, WarnP, ErrorP, FatalP }; class BasicLogger { private: static LogPriority verbosity; public: static void Log(LogPriority priority, const char* message) { if (priority >= verbosity) { switch (priority) { case TraceP: std::cout --- ### Error Debugging in C++ with VS Code > Learn how to debug using the C/C++ extension for VS Code with advanced features like breakpoints, tracking variable values, and stepping. - Published: 2022-07-11 - Modified: 2022-07-18 - URL: https://rollbar.com/guides/cpp/cpp-debugging-with-vs-code/ - Guide Languages: C++ Debugging can be a life-saver when it comes to discovering bugs or errors in your code. In this article you will learn how to debug using the C/C++ extension for VS Code, including advanced features like breakpoints, tracking variable values, and stepping.   The Code We’ll Debug Throughout this tutorial, the following C++ class is used as an example (vector. h): class Vector { private: float start_y; float start_x; float end_y; float end_x; public: Vector { start_x = -1; start_y = -1; end_y = -1; end_x = -1; } Vector(float start_a, float start_b, float end_a, float end_b) { start_x = start_a; start_y = start_b; end_y = end_a; end_x = end_b; } float get_length { return sqrt((end_x - start_x) * (end_x - start_x) + (end_y - start_y) * (end_y - start_y)); } }; This class is being called by the following main function (pathfinder. cpp): #include #include #include “Vector. h” int main { std::cout --- ### How to Handle Exceptions in C++ > C++ exceptions provide a well-defined way for detecting errors and passing the information up the call stack. - Published: 2022-04-13 - Modified: 2022-07-18 - URL: https://rollbar.com/guides/cpp/how-to-handle-exceptions-in-cpp/ - Guide Languages: C++ When C++ code is executed, various types of errors can occur in the program - coding errors made by programmers, errors due to incorrect input or other unforeseen errors. When an error occurs, C++ usually stops the program execution and generates an error message. In most scenarios, the preferred way to report and handle both logic and runtime errors is to use exceptions. Exceptions provide a formal and well-defined way for detecting errors and to pass the information up the call stack.   C++ Exception Types C++ provides a list of standard exceptions defined in the class which can be used in code. These exceptions are arranged in a hierarchy: Figure 3: C++ Exception Types Hierarchy As shown above, all the exception classes in C++ derive from the std::exception class. Here's a short description of each of the exceptions in the hierarchy above: Table 1. C++ Exception Classes Under std::exception Exception Description std::exception Exception and parent class of all standard C++ exceptions. std::bad_alloc Generally thrown by new. std::bad_cast Generally thrown by dynamic_cast. std::bad_typeid Generally thrown by typeid. std::bad_exception Useful device to handle unexpected exceptions. std::logic_failure Can be detected by reading code. std::runtime_error Cannot be detected by reading code. std::domain_error Thrown when using a mathematically invalid domain. std::invalid_argument Thrown when using invalid arguments. std::length_error Thrown when a large std::string is created. std::out_of_range/td> Thrown by the at method. std::overflow_error Thrown when a mathematical overflow occurs. std::range_error Thrown when attempting to store an out-of-range value. std::underflow_error Thrown when a mathematical underflow occurs.  ... --- ### How to Throw Exceptions in Flutter > Exception in Flutter can be thrown using try, catch and finally blocks when an unexpected issue occurs when executing a program. - Published: 2022-03-24 - Modified: 2023-09-19 - URL: https://rollbar.com/guides/flutter/how-to-throw-exceptions-in-flutter/ - Guide Languages: Flutter An exception is an unexpected issue that occurs when executing a program and disrupts its normal flow. Exceptions can cause the application to terminate abnormally if not handled. Exceptions are intended to be caught and handled so they do not affect the flow of the program. To handle an exception in code, try. . catch. . finally blocks should be used.   Why Throw Exceptions in Flutter? Exceptions can be thrown to convey information to the user about a failure that occurred during the execution of a program. They should contain useful data fields to convey the relevant information. This can help the issue be addressed programmatically. Exceptions can be instantiated and thrown in Flutter using the throw keyword. The syntax for throwing an exception is: throw new exception_name   Flutter Throw Exception Example Here’s an example that shows how to use the throw keyword in Flutter to throw an exception: void validate_age(int age) { if(age < 0) { throw new FormatException; } } In the above example, the validate_age function is used to validate an integer age, which should not be negative in value. If the value is found to be less than 0, a FormatException is thrown.   Handling Exceptions in Flutter To handle exceptions in Flutter, try. . catch. . finally blocks can be used to prevent the application from terminating abruptly. The try block contains the code that might possibly throw an exception. The try block must be followed by on or catch blocks, and an... --- ### How to Debug PHP Errors > Most PHP error reports are vague, and identifying the underlying causes can be difficult. Learn the common steps towards pinpointing and resolving PHP errors that crop up in production. - Published: 2019-02-12 - Modified: 2021-06-11 - URL: https://rollbar.com/guides/php/how-to-debug-php-errors/ - Guide Languages: PHP Most PHP error reports are vague, and identifying the underlying causes can be difficult. Learn the common steps towards pinpointing and resolving PHP errors that crop up in production. How to Debug PHP Errors Debugging PHP errors in a production environment can be one of the single most frustrating experiences as a developer. More often than not, the error reports are vague, and identifying the underlying causes can be difficult at best. That said, there are a few common steps that can be followed towards identifying and resolving errors that crop up in production. Debugging PHP Errors Step 1: Increase the log level More information is always better. Using the methods described in Where are PHP Errors Logged? , the first step towards diagnosing any issue is to increase the log level. This allows you to see everything that is happening before and after a problem occurs. There is a good chance that the problems you are experiencing have warnings or messages associated with them that don't necessarily make it into the log files by default. Step 2: Retain logs Once you've increased the log level, the next step is to start retaining logs. This can be done through any number of log aggregation platforms, and allows you to start establishing a timeline of events without worrying about the log files being rolled over. Step 3: Attempt to replicate circumstances Once you've determined the log lines that relate to the problem at hand, the next step is to attempt to replicate the circumstances of the error in a development environment. Before we can do this, we first need to establish some testing guidelines. This involves doing things like mimicking... --- ### Where are Ruby Errors Logged? > This simple guide explains where Ruby logs are located, how to configure logging, and why error monitoring tools like Rollbar make debugging even faster. - Published: 2019-02-12 - Modified: 2021-06-11 - URL: https://rollbar.com/guides/ruby/where-are-ruby-errors-logged/ - Guide Languages: Ruby This simple guide explains where Ruby logs are located, how to configure logging, and why error monitoring tools like Rollbar make debugging even faster. Where Are Ruby Errors Logged? So, when we encounter errors in our code, where exactly can we find them? At a high level, there are two common places that Ruby errors can be found: inline with program execution, and in a designated log file. The Logger Class Before we look at where Ruby errors are logged, let's first take a look at how those errors are logged. The Logger class is a utility class that can be used to write messages to a specified output path. While this may sound relatively simplistic, it is actually a very sophisticated implementation for a built-in logging tool. Log Files vs. Inline Errors When instantiating the Logger class, you must define a destination to output all logs to. Output could be one of two types: a standard stream output like STDOUT and STDERR, or a file output like /var/log/ruby. log. The standard output stream could also be considered inline errors, as they are output directly to the command line during program execution. To instantiate a Logger that writes to STDOUT, for example, all we need to do is pass STDOUT as the first parameter to the initializer: logger = Logger. new(STDOUT) While this is incredibly valuable for live debugging, a more long-term logging solution is often more desirable. Thankfully, the Logger class initializer also accepts a file path, allowing us to log data directly to a log file: logger = Logger. new("/var/log/ruby. log") Log Levels Once we select a destination for our log data,... --- ### How to Raise Exceptions in Ruby > It's not enough to raise exceptions in Ruby. You need to raise exceptions effectively. Here's how to create a human-readable—and diagnosable—exception object. - Published: 2019-02-12 - Modified: 2021-06-11 - URL: https://rollbar.com/guides/ruby/how-to-raise-exceptions-in-ruby/ - Guide Languages: Ruby It's not enough to throw exceptions in Ruby. You need to throw exceptions effectively. Here's how to create a human-readable—and diagnosable—exception object. Raising Exceptions in Ruby Rescuing pre-defined exceptions is one thing, but to more effectively utilize exceptions within your application, it is important to understand how to create and raise your own. At its core, every Ruby exception stems from a built-in Exception class, and includes a handful of built-in methods, but the most commonly used exception method is message. This method can be used to retrieve a specific exception message from a raised exception object. Raising Generic Exceptions Like the title of this section implies, raising exceptions in Ruby can be done using the raise method. While a blank exception can be raised, however, most exceptions include a message with additional information about the error. For example, a default RuntimeError exception can be raised with a custom error message in just one line: raise "This is an exception" While this is valuable for raising generic exceptions, it is also possible to raise an instance of an Exception class, such as StandardError: raise StandardError. new "This is an exception" Keep in mind, however, that while StandardError exceptions are intended to be rescued, Exception exceptions are not (see Exception Handling in Ruby). This means that if you choose to raise a new Exception instance, you will not be able to rescue it without explicitly rescuing every top-level Exception instance, which could cause unexpected problems down the line. raise Exception. new "This is an exception" Raising Custom Exceptions In a nutshell, every custom Ruby exception should extend StandardError, rather than the Exception class... --- ### How to Handle Exceptions in Ruby > The simple guide to exception handling in Ruby. ✓ Harden your app against unexpected errors ✓ Respond more effectively ✓ Adapt to any issue that may arise. - Published: 2019-02-12 - Modified: 2022-11-30 - URL: https://rollbar.com/guides/ruby/how-to-handle-exceptions-in-ruby/ - Guide Languages: Ruby The simple guide to exception handling in Ruby. ✓ Harden your app against unexpected errors ✓ Respond more effectively ✓ Adapt to any issue that may arise. Exception Handling in Ruby In Ruby, error handling works like this; all exceptions and errors are extensions of the Exception class. While this may seem intuitive, exception handling in Ruby is a touch more nuanced than you might expect thanks to the designed hierarchy of Ruby exceptions. The begin-rescue Similar to PHP's try-catch handler, Ruby's exception handling begins with the begin-rescue block. In a nutshell, the begin-rescue is a code block in Ruby that can be used to deal with raised exceptions without interrupting the Ruby program execution. In other words, you can begin to execute a block of code, and rescue any exceptions that are raised. Rescuing Exceptions In Ruby by default, begin-rescue rescues every instance of the StandardError class. This includes no method errors, type errors, runtime errors, and every custom error that is intended to be rescued within a Ruby application (see Raising Exceptions in Ruby for more information). To rescue every StandardError, simply wrap the designated section of code in a begin-rescue block: begin # ... rescue => e # ... end In Ruby when a StandardError exception is raised within the begin block, an instance of it will be passed to the rescue block as the variable e (for more information about the structure of Ruby's Exception class, see Raising Exceptions in Ruby). Rescuing Specific Exceptions While rescuing every exception raised in your Ruby app is great for simplistic implementations—such as generalizing API error responses—best practice is to rescue for specific exceptions. To do this,... --- ### How to Debug Ruby Errors > Most Ruby error reports are vague, and identifying the underlying causes can be difficult. Learn the common steps towards pinpointing and resolving Ruby errors that crop up in production. - Published: 2019-02-12 - Modified: 2021-06-11 - URL: https://rollbar.com/guides/ruby/how-to-debug-ruby-errors/ - Guide Languages: Ruby Most Ruby error reports are vague, and identifying the underlying causes can be difficult. Learn the common steps towards pinpointing and resolving Ruby errors that crop up in production. How to Debug Ruby Errors Debugging Ruby errors in a production environment can be one of the single most frustrating experiences as a developer. More often than not, the error reports are vague, and identifying the underlying causes can be difficult at best. That said, there are a few common steps that can be followed toward identifying and resolving errors that crop up in production. Debugging Ruby Errors Step 1: Increase the log level More information is always better. Using the methods described in Where Are Ruby Errors Logged? , the first step toward diagnosing any issue is to increase the log level. This allows you to see everything that is happening before and after a problem occurs. There is a good chance that the problems you are experiencing have warnings or messages associated with them that don't necessarily make it into the log files by default. Step 2: Retain logs using an error monitoring solution Once you've increased the log level, the next step is to start retaining logs. Identifying the request parameters, user, browser, and any other information surrounding a given error can be incredibly valuable. While accomplishing this may seem difficult from within the context of a server, it can be easily done through the use of Rollbar, and allows you to start establishing a timeline of events without worrying about the log files being rolled over. Step 3: Attempt to replicate circumstances Once you've determined the log lines that relate to the problem at hand, the... --- ### Where are PHP Errors Logged? > This simple guide explains where PHP logs are located, how to configure logging, and why error monitoring tools like Rollbar make debugging even faster. - Published: 2019-02-12 - Modified: 2021-06-11 - URL: https://rollbar.com/guides/php/where-are-php-errors-logged/ - Guide Languages: PHP This simple guide explains where PHP logs are located, how to configure logging, and why error monitoring tools like Rollbar make debugging even faster. Where are PHP Errors Logged? So when we encounter errors in our code, where exactly can we find them? At a high level, there are really only three places where PHP errors can be found: inline with program execution, in the system log, or in error monitoring tools like Rollbar. Inline errors By default, whenever an error or exception is thrown, PHP sends the error message directly to the user via STDOUT. In a command-line environment, this means that errors are rendered in the terminal. In a web environment, errors and exceptions get displayed directly in the browser. While this behavior is useful for debugging problems in a development environment, it should be disabled in a production environment for security reasons. To do this, open up the PHP configuration file for the environment you are working in—typically found in a path that looks like /etc/php/:environment:/php. ini—and change the display_errors directive to Off. ; This directive controls whether or not and where PHP will output errors, ; notices and warnings too. Error output is very useful during development, but ; it could be very dangerous in production environments. Depending on the code ; which is triggering the error, sensitive information could potentially leak ; out of your application such as database usernames and passwords or worse. ; For production environments, we recommend logging errors rather than ; sending them to STDOUT. ; Possible Values: ; Off = Do not display any errors ; stderr = Display errors to STDERR (affects only... --- ### How to Throw Exceptions in PHP > It's not enough to throw exceptions in PHP. You need to throw exceptions effectively. Here's how to create a human-readable—and diagnosable—exception object. - Published: 2019-02-12 - Modified: 2022-10-17 - URL: https://rollbar.com/guides/php/how-to-throw-exceptions-in-php/ - Guide Languages: PHP It's not enough to throw exceptions in PHP. You need to throw exceptions effectively. Here's how to create a human-readable—and diagnosable—exception object. Throwing Exceptions in PHP Throwing a generic PHP exception is almost as simple as it sounds. All it takes is to instantiate an exception object—with the first parameter of the Exception constructor being the error message—and then, "throw" it. throw new Exception('Exception message') The most important thing to take note of is the message. Defined in the constructor, and accessed via the getMessage method, the message is the human-readable error that can often be related to the end user. The Exception class To more effectively utilize exceptions within your application, it is important to understand how to create and throw your own PHP exception. But before we get into throwing custom PHP exceptions, let's first take a look at what an exception is under the hood, and how to define your own, starting with the global Exception class that all PHP exceptions stem from: class Exception { protected $message = 'Unknown exception'; // exception message private $string; // __toString cache protected $code = 0; // user defined exception code protected $file; // source filename of exception protected $line; // source line of exception private $trace; // backtrace private $previous; // previous exception if nested exception public function __construct($message = null, $code = 0, Exception $previous = null); final private function __clone; // Inhibits cloning of exceptions. final public function getMessage; // message of exception final public function getCode; // code of exception final public function getFile; // source filename final public function getLine; // source line final public function getTrace;... --- ### How to Handle Exceptions in PHP > The simple guide to exception handling in PHP. ✓ Harden your app against unexpected errors ✓ Respond more effectively ✓ Adapt to any issue that may arise. - Published: 2019-02-12 - Modified: 2021-09-20 - URL: https://rollbar.com/guides/php/how-to-handle-exceptions-in-php/ - Guide Languages: PHP The simple guide to exception handling in PHP. ✓ Harden your app against unexpected errors ✓ Respond more effectively ✓ Adapt to any issue that may arise. Exception Handling in PHP The try-catch The primary method of handling exceptions in PHP is the try-catch. In a nutshell, the try-catch is a code block that can be used to deal with thrown exceptions without interrupting program execution. In other words, you can "try" to execute a block of code, and "catch" any PHP exceptions that are thrown. PHP nested try-catch Try-catch blocks in PHP can be nested up to any desired levels and are handled in reverse order of appearance i. e. innermost exceptions are handled first. Nested blocks can be useful in case a block of code causes an exception, which can be handled within that block and program execution can continue in the outer block. They can also be useful in case the handling of an exception causes another exception. Here is an example of a nested try-catch block: try{ try{ if(file_exists("myfile. json")){ //upload file } else { throw new Exception( 'File not found'); } } catch (Exception $e){ throw new Exception( 'Unable to upload file',0,$e); } //continue outer try block code } catch (Exception $e){ echo $e->getMessage . ""; while($e = $e->getPrevious) { echo 'Previous exception: '. $e->getMessage . ""; } } In this example, a file is uploaded and it is checked whether the file exists or not prior to the upload operation. If it does not exist, an exception is thrown. This code that checks whether the file exists or not is placed within a try-catch block, which is nested within another try-catch... --- ### How to Handle Exceptions in .NET > The simple guide to exception handling in .NET ✓ Harden your app against unexpected errors ✓ Respond more effectively ✓ Adapt to any issue that may arise. - Published: 2019-02-12 - Modified: 2021-09-20 - URL: https://rollbar.com/guides/dotnet/how-to-handle-exceptions-in-net/ - Guide Languages: .Net The simple guide to exception handling in .NET ✓ Harden your app against unexpected errors ✓ Respond more effectively ✓ Adapt to any issue that may arise. Where are . NET Errors Logged? Although every developer aims for bug-free code, it’s nearly impossible to deploy an application without a few unwanted bugs. You can test an application thoroughly, but still have logic errors. These errors can vary from critical issues that inhibit proper use of the application to minor annoyances. Regardless, you must be able to fix any bug in the application before it becomes a huge nuisance for your users. You detect bugs and find the . NET object that’s causing it by using logging techniques. . NET can log errors to the Windows Event Viewer, a database, or a file using libraries already included in the . NET framework. Each solution has its pros and cons. You can use your own custom libraries or simplify the process using third-party libraries installed from NuGet. . NET is a backend coding platform as opposed to client-side languages such as JavaScript. This means that your logging solution for . NET must be able to integrate with your application and your server. If the application is public, the logging solution must also be secure; otherwise, attackers can gain valuable insight on critical components for malicious purposes. Types of logs Logging provides root cause analysis for more than just . NET applications. The operating system, system applications such as IIS, and security and network appliances log events to some location determined by the administrator configurations. Custom applications may have no logging components at all, but the operating system or host... --- ### Where are JavaScript Errors Logged? > This simple guide explains where JavaScript logs are located, how to configure logging, and why error monitoring tools like Rollbar make debugging even faster. - Published: 2019-02-12 - Modified: 2021-06-11 - URL: https://rollbar.com/guides/javascript/where-are-javascript-errors-logged/ - Guide Languages: JavaScript This simple guide explains where JavaScript logs are located, how to configure logging, and why error monitoring tools like Rollbar make debugging even faster. Where are JavaScript Errors Logged? Unlike other web languages, JavaScript was originally a client-side language. As a result, error handling is designed with the client side in mind, rather than the server side. Rather than dealing with log files, rotation, permissions, and all the other fun things that come with server-side languages, JavaScript errors are dealt with inline. While the client-side-only perception is slowly giving way to server-side Node. js due to the increased security and performance benefits of server-side rendering, many of the logging conventions of Node. js are still influenced by its browser-based siblings. Introduction to The Console In both client-side JavaScript and Node. js, log data is handled by default via a global console instance. While client-side JavaScript writes console data to the individual browser's developer console, Node. js console data is written to stdout and stderr. What this means, at least in terms of client-side JavaScript, is that log data is readily available to both the end user and the developer. While this can present some privacy issues, it can make debugging significantly easier in any environment. For those concerned about privacy, logging can also be disabled in production through logging frameworks or minification tools. Log Levels When it comes to logging, console. log is one of the more common debug methods used in JavaScript development. That said, the Console object offers a handful of other useful log levels, which can be used to provide more relevant information with minimal changes. log The purpose of console.... --- ### How to Throw Exceptions in JavaScript > It's not enough to throw exceptions in JavaScript. You need to throw exceptions effectively. Here's how to create a human-readable—and diagnosable—exception object. - Published: 2019-02-12 - Modified: 2021-06-11 - URL: https://rollbar.com/guides/javascript/how-to-throw-exceptions-in-javascript/ - Guide Languages: JavaScript It's not enough to throw exceptions in JavaScript. You need to throw exceptions effectively. Here's how to create a human-readable—and diagnosable—exception object. Throwing Exceptions in JavaScript Errors are thrown by the engine, and exceptions are thrown by the developer. But what exactly does that mean? In JavaScript, all exceptions are simply objects. While the majority of exceptions are implementations of the global Error class, any old object can be thrown. With this in mind, there are two ways to throw an exception: directly via an Error object, and through a custom object. Generic exceptions While the built-in Error class is fairly well defined—including such things as the filename, line number, and stack trace to name a few—when it comes down to it, the most important thing to take note of is the message. The first—and often only—parameter to be passed during Error instantiation, the message is a human-readable error that can often be related directly to the end user. Throwing a generic exception is almost as simple as it sounds. All it takes is to instantiate an exception object—with the first parameter of the Error constructor being the error message—and then... "throw" it. throw new Error('Exception message'); error. code vs. error. message It is important to note here that, while the error message is the human readable error data, Node. js also provides an error code that identifies the kind of error that is being thrown. This value is useful as it allows you to programmatically adapt to errors that may be thrown, regardless of the message contained within the error. While error codes are generally used for system errors, when creating... --- ### How to Handle Exceptions in JavaScript > A simple guide to exception handling in JavaScript. ✓ Harden your app against unexpected errors ✓ Respond more effectively ✓ Adapt to any issue that may arise. - Published: 2019-02-12 - Modified: 2023-09-19 - URL: https://rollbar.com/guides/javascript/how-to-handle-exceptions-in-javascript/ - Guide Languages: JavaScript The simple guide to exception handling in JavaScript. ✓ Harden your app against unexpected errors ✓ Respond more effectively ✓ Adapt to any issue that may arise. Exception Handling in JavaScript The try-catch As with many programming languages, the primary method of dealing with exceptions in JavaScript is the try-catch. In a nutshell, the try-catch is a code block that can be used to deal with thrown exceptions without interrupting program execution. In other words, you can "try" to execute a block of code, and "catch" any exceptions that are thrown. Catching all exceptions At its simplest, catching exceptions in JavaScript requires simply wrapping an expression in a try-catch statement. Without any additional configuration, this method will catch any and all exceptions that get thrown. try { // ... } catch (e) { // ... } While this is relatively simplistic in terms of error handling, it is important to note that the exception that is caught is always an implementation of the JavaScript Error object, which brings with it some useful properties such as a human-readable description of the error. This allows you to log these exceptions for debugging. try { // ... } catch (e) { console. log(e); } Catching specific exceptions In most instances, however, catching every exception thrown is considered bad practice. It is far more manageable to specifically catch and react to exceptions that you expect to encounter, rather than implementing a catchall. To accomplish this, simply check the exception instance type before reacting to it. try { // ... } catch (e) { if ( e instanceof CustomExceptionError ) { // ... } } While JavaScript does offer the ability to... --- ### How to Debug JavaScript Errors > Identifying the underlying causes of most JavaScript errors can be difficult. Learn the common steps towards pinpointing and resolving JavaScript errors. - Published: 2019-02-12 - Modified: 2021-06-11 - URL: https://rollbar.com/guides/javascript/how-to-debug-javascript-errors/ - Guide Languages: JavaScript Most JavaScript error reports are vague, and identifying the underlying causes can be difficult. Learn the common steps towards pinpointing and resolving JavaScript errors that crop up in production. How to Debug JavaScript Errors Debugging JavaScript errors in a production environment can be a difficult experience. More often than not, the error reports are vague, and identifying the underlying causes can be difficult at best. That said, there are a few common steps that can be followed towards identifying and resolving errors that crop up in production. Gathering information Step 1: Attempt to replicate circumstances In software development, the first step towards debugging any issue is attempting to replicate the circumstances. With most programming languages, this is bolstered by reviewing logs leading up to an error, but with client-side JavaScript, this type of diagnosis requires significantly more foresight (more on that below). Before we can replicate any circumstances of an issue, and assuming we have access to any production logs, we first need to establish some testing guidelines. This involves doing things like mimicking the production database, the user accounts involved, and even the operating system. Everything is fair game here. Step 2: Test assumptions Once you've established the circumstances that you think might throw the exception or error you are hunting down, it's time to test them. Never test exceptions in production. Development and staging environments are designed to be breakable without any impact on the end users, so always always always try to break your code in a safe environment. Step 3: Increase logging More information is always better. Using the methods described in Where are JavaScript Errors Logged? , the first step towards diagnosing any issue... --- ### Where are Java Errors Logged? > This simple guide explains where Java logs are located, how to configure logging, and why error monitoring tools like Rollbar make debugging even faster. - Published: 2019-02-12 - Modified: 2021-06-11 - URL: https://rollbar.com/guides/java/where-are-java-errors-logged/ - Guide Languages: Java This simple guide explains where Java logs are located, how to configure logging, and why error monitoring tools like Rollbar make debugging even faster. Where are Java Errors Logged? Logging Java errors is an essential component in any application as it allows developers to track the root cause of errors and fix them easily. By default, Java log messages are stored only on the console, but they can be transferred to a longer term location as well. These messages let you see what’s happening in your application and troubleshoot problems. Console logs in Java At the most basic level, Java errors are logged on the console. Developers typically call System. out. println to print log messages on the console. Whenever the console is closed, these messages are lost as they cannot be stored in any permanent location. To overcome this problem, developers use Java logging frameworks which are responsible for storing data to any other location such as a file or a database. Java Logging frameworks There are several common frameworks for logging in Java and they let you customize where your logs are sent. Logback and Log4j are two popular Java logging frameworks that are simple to use. Logback was built as a replacement for its predecessor, Log4j. Logback offers a faster implementation than Log4j, provides more options for configuration, and gives more flexibility in archiving old log files. The newest is log4j 2 but it's still catching up in adoption. Let's focus on Logback since it offers many improvements and is very common. The Logback architecture consists of three main classes: logger, appender, and layout. The appender determines where the logs are... --- ### How to Throw Exceptions in Java > It's not enough to throw exceptions in Java. You need to throw exceptions effectively. Here's how to create a human-readable—and diagnosable—exception object. - Published: 2019-02-12 - Modified: 2025-03-17 - URL: https://rollbar.com/guides/java/how-to-throw-exceptions-in-java/ - Guide Languages: Java It's not enough to throw exceptions in Java. You need to throw exceptions effectively. Here's how to create a human-readable—and diagnosable—exception object. Throwing Exceptions in Java It is important to understand how to throw exceptions in Java. This will allow you to create higher quality code where errors are checked at compile time instead of runtime, and create custom exceptions that make debugging and recovery easier. Install the Java SDK to identify and fix exceptions How to throw exceptions in Java Throwing an exception is as simple as using the "throw" statement. You then specify the Exception object you wish to throw. Every Exception includes a message which is a human-readable error description. It can often be related to problems with user input, server, backend, etc. Here is an example that shows how to throw an exception: throw new Exception("Exception message"); It’s limiting to use a generic exception because it makes it difficult for the calling code to catch it. It’s better to throw custom exceptions, which we will come back to in a bit. Using the Throws keyword Throws is a keyword used to indicate that this method could throw this type of exception. The caller has to handle the exception using a try-catch block or propagate the exception. We can throw either checked or unchecked exceptions. The throws keyword allows the compiler to help you write code that handles this type of error, but it does not prevent the abnormal termination of the program. With the help of the throws keyword, we can provide information to the caller of the method about the types of exceptions the method might throw.... --- ### How to Handle Exceptions in Java > The simple guide to exception handling in Java. ✓ Harden your app against unexpected errors ✓ Respond more effectively ✓ Adapt to any issue that may arise. - Published: 2019-02-12 - Modified: 2022-09-28 - URL: https://rollbar.com/guides/java/how-to-handle-exceptions-in-java/ - Guide Languages: Java The simple guide to exception handling in Java. ✓ Harden your app against unexpected errors ✓ Respond more effectively ✓ Adapt to any issue that may arise. Exception Handling in Java The classic definition of an exception is an event that occurs during the execution of a program and that disrupts the normal flow of instructions. Java exceptions are specialized events that indicate something bad has happened in the application, and the application either needs to recover or exit. Why handle Java exceptions? Java exception handling is important because it helps maintain the normal, desired flow of the program even when unexpected events occur. If Java exceptions are not handled, programs may crash or requests may fail. This can be very frustrating for customers and if it happens repeatedly, you could lose those customers. The worst situation is if your application crashes while the user is doing any important work, especially if their data is lost. To make the user interface robust, it is important to handle Java exceptions to prevent the application from unexpectedly crashing and losing data. There can be many causes for a sudden crash of the system, such as incorrect or unexpected data input. For example, if we try to add two users with duplicate IDs to the database, we should throw an exception since the action would affect database integrity. Developers can predict many of the Java exceptions that a piece of code is capable of throwing. The best course of action is to explicitly handle those exceptions to recover from them gracefully. As we will see ahead, programming languages provide ways to handle exceptions starting from specific ones and moving toward... --- ### How to Debug Java Errors > Most Java error reports are vague, and identifying the underlying causes can be difficult. Learn the common steps towards pinpointing and resolving Java errors that crop up in production. - Published: 2019-02-12 - Modified: 2022-11-28 - URL: https://rollbar.com/guides/java/how-to-debug-java-errors/ - Guide Languages: Java Most Java error reports are vague, and identifying the underlying causes can be difficult. Learn the common steps towards pinpointing and resolving Java errors that crop up in production. How to Debug Java Errors Debugging Java code for errors is a must-have skill for any developer. If an application crashes in a production environment, it can badly impact your business. You can prevent crashes and errors by spending time testing and debugging your code before deploying it. There are several ways to debug Java code. When developing, you can use the tools available in your IDE or debugger. Once the application is deployed to production, you can capture the logs or use an error monitoring solution. Let’s explore each of these ways in more detail. Debugging with Eclipse IDE There are several ways to debug your code in Eclipse. Below are a few popular ways: A conditional breakpoint: For debugging a Java code in Eclipse IDE, a breakpoint is a good approach. Applying breakpoints lets a debugger temporarily suspend the execution of your program at a certain point in the code. This allows you to examine the state of the application, the values of local variables, the call stack, and to step through the code line-by-line. This information gives you more clues to why the problem occurs. To set a breakpoint, just toggle it by clicking on the left-hand side of the screen. Exception breakpoints: Runtime exceptions like NullPointerException and ArrayIndexOutofBoundException are the errors encountered most often. Figuring out the root cause of these errors can be difficult. Eclipse IDE offers exception breakpoints in which the execution of the program is stopped whenever the specified exception occurs. Watch point:... --- ### Where are .NET Errors Logged? > This simple guide explains where .NET logs are located, how to configure logging, and why error monitoring tools like Rollbar make debugging even faster. - Published: 2019-02-12 - Modified: 2022-11-30 - URL: https://rollbar.com/guides/dotnet/where-are-net-errors-logged/ - Guide Languages: .Net This simple guide explains where .NET logs are located, how to configure logging, and why error monitoring tools like Rollbar make debugging even faster. Where are . NET Errors Logged? Although every developer aims for bug-free code, it’s nearly impossible to deploy an application without a few unwanted bugs. You can test an application thoroughly, but still have logic errors. These errors can vary from critical issues that inhibit proper use of the application to minor annoyances. Regardless, you must be able to fix any bug in the application before it becomes a huge nuisance for your users. You detect bugs and find the . NET object that’s causing it by using logging techniques. . NET can log errors to the Windows Event Viewer, a database, or a file using libraries already included in the . NET framework. Each solution has its pros and cons. You can use your own custom libraries or simplify the process using third-party libraries installed from NuGet. . NET is a backend coding platform as opposed to client-side languages such as JavaScript. This means that your logging solution for . NET must be able to integrate with your application and your server. If the application is public, the logging solution must also be secure; otherwise, attackers can gain valuable insight on critical components for malicious purposes. Types of logs Logging provides root cause analysis for more than just . NET applications. The operating system, system applications such as IIS, and security and network appliances log events to some location determined by the administrator configurations. Custom applications may have no logging components at all, but the operating system or host... --- ### How to Debug .NET Errors > Most .NET error reports are vague, and identifying the underlying causes can be difficult. Learn the common steps towards pinpointing and resolving .NET errors that crop up in production. - Published: 2019-02-12 - Modified: 2022-12-03 - URL: https://rollbar.com/guides/dotnet/how-to-debug-net-errors/ - Guide Languages: .Net Most .NET error reports are vague, and identifying the underlying causes can be difficult. Learn the common steps towards pinpointing and resolving .NET errors that crop up in production. How to Debug . NET Errors There are many tools available to help developers debug errors. For local development, there is a great debugger built into Visual Studio. In production, you can look at log files and error monitoring solutions like Rollbar give your deeper insight into local variables and parameters. Debugging in Visual Studio The most popular IDE for . NET is Visual Studio and it offers great debugging tools. Visual Studio is considered one of the best development platforms on the market, and it’s easy to use once you understand how it works. Developers can put breakpoints in their code to step through each statement and watch the code execution flow. By watching and stepping through statements, you can replicate errors and find bugs. When you click "Run" from the Visual Studio Debug menu, the code is compiled and executes. The binaries are stored in the debug folder in the solution directory, and code executes until it reaches the break point (the red dot in the image above). When the debugger reaches the break point, execution stops and you can view the variable’s value by hovering your mouse over it. As you step through the program (using menu options or F10 and F11 keyboard shortcuts), you can use the Watch section at the bottom of Visual Studio to watch specific variables. Drag and drop variables to this section to watch as they change. This can help you find bugs in your program before you deploy it. It also... --- ### How to Throw Exceptions in .NET > It's not enough to throw exceptions in .NET. You need to throw exceptions effectively. Here's how to create a human-readable—and diagnosable—exception object. - Published: 2019-02-12 - Modified: 2021-09-20 - URL: https://rollbar.com/guides/dotnet/how-to-throw-exceptions-in-net/ - Guide Languages: .Net It's not enough to throw exceptions in .NET. You need to throw exceptions effectively. Here's how to create a human-readable—and diagnosable—exception object. Throwing Exceptions in . NET Types of exceptions and errors Exceptions happen on logic errors when an operation is invalid or impossible, so the normal flow of execution is aborted. If the exception is not handled, it will crash the application. For example, a QA person may be able to find bad input or a combination of bad input and logic flaws that causes an exception. Any unhandled exception is considered a bug, but even handled events can affect user experience if they are done incorrectly. Regardless of the type of bug, it’s a developer’s goal to handle any of them gracefully so the user is able to continue using the application without losing data or abruptly crashing the program. Developers want to avoid uncaught exceptions the most. These errors crash an application and interrupt user workflow. Because they’re unhandled, a user loses data if any is unsaved; these errors can even cause corruption with saved data. For instance, if the database doesn’t handle errors in workflow, orphaned records could occur and users are forced to contact customer support over issues that can’t be remedied on the front end. Exceptions vs errors You should know when to throw an exception versus an error. Throwing an exception means that you raise an event that interrupts the normal program execution. However, some workflows don’t need an exception thrown. Errors could be coded as regular function return values. For instance, a user entering the wrong URL in a browser is an error, not... --- ## KB Posts ### Error Grouping Best Practices - Published: 2022-02-08 - Modified: 2022-07-20 - URL: https://rollbar.com/knowledge-base/error-grouping-best-practices/ - KB Tags: Best Practices, Core features - KB Categories: Core Features and Best Practices Why error grouping is important Without grouping, error monitoring and error logs churn out a massive list of unsorted errors that must each be separately triaged, identified, and dealt with. Since applications are being used by thousands or even millions of users simultaneously, development teams spend vast amounts of time in triaging and fixing errors. Grouping errors is increasingly important. Below you can find a checklist that will assist you in reviewing your project settings. We also have some handy tips & tricks for you to make sure your grouping works properly, so you can concentrate on the important thing: fixing errors! Error grouping in Rollbar There are two types of item grouping in Rollbar: automation-grade grouping (default grouping) and custom fingerprinting. Automation-grade grouping is performed by Rollbar automatically, it neither requires nor accepts any input from the user and is typically used for the majority of item grouping. Automation-grade grouping combines Rollbar’s extensive error library with machine learning components to formulate optimal grouping solutions. This provides continuous improvement to the grouping engine to help improve your experience. Custom fingerprinting is more of a specialized feature that allows you to override the default grouping engine by declaring your own rules. Custom fingerprinting rules will always be evaluated first, and if no match is found then the automation-grade grouping engine will group the given occurrence. This feature allows users to create grouping rules for custom data and edge cases that the grouping engine may not properly detect. Grouping Issues Since new... --- ### How Rollbar helps ensure Low-Risk Releases - Published: 2021-06-23 - Modified: 2022-07-20 - URL: https://rollbar.com/knowledge-base/how-rollbar-helps-ensure-low-risk-releases/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Pain points You need to get ideas out quickly and with confidence, but releases are inherently risky. The first minutes or hours after release are when errors often first occur. New deploys are a high-risk environment for errors with a high potential impact on user experience. Companies are usually hesitant to deploy code to production, as they are concerned about: Downtime due to a new release in production, Bad user experience when a bug is accidentally released into production Reducing Mean Time To Acknowledge (MTTA) and remediating issues before users notice them is critical to your business. Here's how Rollbar helps make your releases low risk. Customizable notifications help you stay alert and reduce noise Sometimes folks overlook Rollbar’s powerful customizable notification engine. Notifications can be triggered in specific conditions using filters, and the message format can be customized using variables. This ensures that you are notifying people or teams only when it is important. Rollbar supports several messaging tools, including email, Slack, PagerDuty, and many more. Using Rollbar’s customizable notifications can help reduce MTTA (Mean Time To Acknowledge) by taking on the identification and tracking steps. This reduces the manual effort required to notify the right person or team responsible for the affected code. Thanks to Rollbar’s real-time reporting agent and grouping engine, the right people are notified more quickly and can begin to address the issue without spending valuable time gathering information. These notifications are delivered so quickly that they can also be used to trigger LaunchDarkly feature... --- ### Rollbar as a tool for DevOps Teams > DevOps monitoring & troubleshooting is a complex process. There are many different places where failures can occur, and it is up to you as an engineer to diagnose and address these problems. Fortunately, Rollbar can help DevOps teams by providing better alerting signal and a new starting point for your investigations. - Published: 2021-06-23 - Modified: 2022-07-20 - URL: https://rollbar.com/knowledge-base/rollbar-as-a-tool-for-devops-teams/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices DevOps monitoring & troubleshooting is a complex process. There are many different places where failures can occur, and it is up to you as an engineer to diagnose and address these problems. Fortunately, Rollbar can help DevOps teams by providing better alerting signal and a new starting point for your investigations. Rollbar is most commonly known for its ability to help developers improve their code quality by reporting errors in real-time and grouping those errors to effectively determine the code culprit of a given issue. However, thanks to features like Automation-Grade Grouping and customizable alerting, Rollbar can also be used to empower other roles such as SREs and DevOps engineers. These features give better visibility into DevOps processes such as the CI/CD pipeline and the operational health of the code. Use Rollbar as a Starting Point for all Error Investigations Thanks to Rollbar’s ML-powered grouping engine, alerts can notify your team of errors that have not been previously reported in your code. This intelligent analysis helps keep you informed of new problems as they surface — even if only a small number of users are affected — so that you can proactively be one step ahead. Rollbar items are tightly coupled to the code that causes these items. Features like Code Context can show you the exact version and line of code where an error originated, as well as the last person to change that code. Therefore, the use of Rollbar alerts as a first line of defense can be... --- ### Manage Rollbar automatically through the Rollbar Terraform Provider - Published: 2021-04-08 - Modified: 2022-07-20 - URL: https://rollbar.com/knowledge-base/manage-rollbar-automatically-through-the-rollbar-terraform-provider/ - KB Tags: Best Practices - KB Categories: Managing Your Rollbar Account Terraform Provider is available for Rollbar Accounts The Rollbar account administration is critical to get the most out of Rollbar and to maintain data visibility across teams. However, this process can be tedious for large and fast-growing accounts. Users are required to manually support provisioning and management of Rollbar Accounts (using the UI or the APIs). Fortunately, the Rollbar Terraform Provider offers an automated way! Terraform is a multi-cloud provisioning product used to create, manage, and update infrastructure resources. The Provider will automate the creation, modification, and removal of resources within your account such as projects, users, and teams. The Terraform Provider is a declarative framework - which means that you can describe the end state that you want to achieve without stating the exact steps and ‘how’ to get there. It leverages the Rollbar API to make the changes necessary to reach and maintain its desired state. This way you can reduce the time it takes to provision and manage your Rollbar account, while cutting back on manual efforts and human error. What does the integration do? A Terraform integration, known as a Provider, provides a way to provision and manage a Rollbar Account. Instead of using the Ingestion API, it will use parts of the API that create, edit, and destroy Rollbar Accounts, Project, Teams, Access Tokens, etc. With the Rollbar Terraform Provider you will be able to: Manage projects and users with ease Create, read, update or delete projects and users easily Provision new projects automatically as... --- ### Finding items by UUID - Published: 2021-03-30 - Modified: 2022-07-20 - URL: https://rollbar.com/knowledge-base/finding-items-by-uuid/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices UUID in general A universally unique identifier (UUID) is a 128-bit number used to identify information in computer systems. When generated according to the standard methods, UUIDs are, for practical purposes, unique. Unlike most other numbering schemes, their uniqueness does not depend on a central registration authority or coordination between the parties generating them. While the probability that a UUID will be duplicated is not zero, for most applications it is negligible. How Rollbar uses UUID In Rollbar, each item and the corresponding occurrences have UUIDs based on this pattern: aaaaaaaa-bbbb-cccc-dddd-eeeeffffeeee. Rollbar uses UUIDs to differentiate occurrences from each other within a project. You can use them to search and identify occurrences. Finding items by UUID First, let's see where you can find UUIDs. The two most common places are the UI and Rollbar API responses. Here you can see a UUID inside an occurrence: Here is the UUID in an instance creation API response: As every occurrence have its own UUID, regardless if those were created through an API or by a Rollbar SDK, your logs and error messages might show you some, or even your customers can send you one along with their issue. To easily navigate to the corresponding occurrence on our UI, we created an easy-to-use search link. In our last example, we will use the UUID from the first clip: fe3b5d6b-4f14-4594-b5c2-bd632c012a15 In Rollbar, we have two types of UUID search links. One for the Items: https://rollbar. com/item/uuid/? uuid=aaaaaaaa-bbbb-cccc-dddd-eeeeffffeeee And one for the Occurrences: https://rollbar. com/occurrence/uuid/?... --- ### Using Zapier to create Zendesk tickets - Published: 2021-03-19 - Modified: 2022-07-20 - URL: https://rollbar.com/knowledge-base/using-zapier-to-create-zendesk-tickets/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Why use webhooks? Webhooks are a powerful tool to receive information from Rollbar and use in any other workflows you have. These will trigger on conditions you set and contain information about the Rollbar item. More information on webhook configuration and information can be found here. What can we do with webhooks? Here’s one example utilizing Rollbar webhooks and Zapier. Zapier is a tool which can "catch" the webhook, process it, and forward it to other tools you’re using (called Zaps). The following will need a paid subscription to Zapier. For this demonstration, we will use both webhooks and our people tracking features. Suppose you have high priority clientele and need to ensure they have a smooth experience on your application. If they encounter an error you want to triage that immediately and inform your customer success team. As an example, let’s create a ticket in Zendesk for your team to follow up. Don't have time to read? Watch our short video on how you can setup Zapier to create Zendesk tickets: Create a Zendesk ticket automatically using Rollbar webhooks First, copy this Zap to your own Zapier account: https://zapier. com/shared/c2afe0eba9c4e8a565227315ac4831d2db905580 You’ll see a screen which contains the Zapier webhook URL. Copy this URL and we shall use it when creating the Rollbar webhook: We now are able to create the webhook from Rollbar. Go to your project settings, then select the + button in the Integrations column: Select Webhook and proceed to the next page: Paste the webhook URL... --- ### Rollbar Solutions: Enabling Support Teams - Published: 2021-03-18 - Modified: 2022-07-20 - URL: https://rollbar.com/knowledge-base/rollbar-solutions-enabling-support-teams/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Overview When your application surfaces bugs, it might put your Support team in a difficult position in understanding the impact of an error on users and customers and who might be the right team to assign the issue to. A proactive approach is essential: when users are affected by bugs in your software, it corrupts the customer experience, leading to users eventually choosing to stop using your product. In this article, we will walk you through how you can help Support team enablement with certain features of Rollbar: People tracking provides visibility over which users of the application are impacted by an error Item Severity level and error frequency help prioritize errors Automated Issue Tracking helps you to assign a developer to an issue to ensure resolution Rollbar helps your team understand the impact of errors on specific users, and you will be able to prioritize and assign errors based on the frequency of bugs and the volume/value of customers impacted by them. This will enable your team to address and resolve customer issues faster and with more context. People tracking When an error occurs in your application, one of the first questions is “How many people are affected? ” When you have People tracking set up, you will have visibility on how the errors in your application have impacted your customers. You can check the People menu in the Item details view to see: Which customers were affected by any one error: This gives you details on a particular... --- ### Intelligent alerting helps you stay on top of critical errors and reduce noise in your notification channels - Published: 2021-02-24 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/intelligent-alerting-helps-you-stay-on-top-of-critical-errors-and-reduce-noise-in-your-notification-channels/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Overview Discovering errors in a timely manner is crucial when it comes to fixing bugs in your product. Moreover, you should learn about an error before it is reported by your users. Setting up your alerts - for example enabling Slack notifications- can give you a huge advantage and helps your team to quickly react to critical events in a given domain. However, a large number of alerts can be overwhelming and counterproductive. The important alerts might get lost in the avalanche of notifications, and you might not notice severe alerts in time. One of the main problems causing alert noise is the under-specification of alerts created in a system. By providing insufficient parameters and filters and notifying unnecessarily large groups of users, you are essentially creating noise and causing problems in the future. The best way to reduce alert noise is to create a set of specific alert rules targeting the smallest subset of necessary users. This will involve a bit of planning and configuration, but the overhead will pay off in the long run. In this article, you will learn about: how best to set-up relevant channels and groups for notifications, how to specify filters and parameters that notify the appropriate groups of people at the right times, and how best to monitor and fine-tune alert thresholds. Create dedicated notification channels and groups Keeping your team informed on incoming errors is vital, however the noise incurred by false positive alerts can cause users to ignore notifications, which can... --- ### Introducing Automation-Grade Grouping - Published: 2020-12-01 - Modified: 2022-07-20 - URL: https://rollbar.com/knowledge-base/introducing-automation-grade-grouping/ - KB Tags: Core features - KB Categories: Working with Rollbar Items Overview Proactively discover, predict, and remediate errors with Rollbar’s real-time, AI-assisted workflows! The foundation for these workflows is Automation-Grade Grouping which dramatically improves the performance and accuracy of error categorization. Automation-Grade Grouping is the next generation of our grouping engine that is trained by machine learning on millions of crashes. Machine learning enables us to continuously analyze frequently occurring error types to deduplicate items accurately. Benefits include: Reduced noise in your items list and alerts Easier triaging by removing duplicates from the error list Faster response to errors through less manual effort and more automation Machine learning trained grouping algorithm Unlike our competitors, who use hard-coded grouping algorithms, we use machine learning to determine patterns on a on-going basis and identify frequently occurring error types. This helps increase the performance of Automation-Grade Grouping over hard-coded algorithms and significantly reduces the number of both over-grouped and under-grouped errors, getting rid of missed bugs and noise. Hardcoded rules can’t keep up with constantly changing stack traces, so we regularly run our AI model against new errors from our customers to recognize different error types and group them effectively. Frequent Grouping Update releases On the path to Automation-Grade Grouping, we frequently release new grouping updates that further improve grouping accuracy and allow users to observe and respond to errors quickly. Automation-Grade Grouping is currently available for Ruby, JavaScript, Java, Python and C#. We’ll be releasing it for additional languages, including Go and PHP soon! Our latest Ruby Grouping Update improves the grouping accuracy... --- ### Reduce noise with the help of Slack notifications integration - Published: 2020-09-25 - Modified: 2021-12-13 - URL: https://rollbar.com/knowledge-base/reduce-noise-with-the-help-of-slack-notifications-integration/ - KB Tags: Best Practices, Tool Integrations - KB Categories: Core Features and Best Practices Rollbar supports multiple messaging tools, where your team can get notified about errors and significant events. Integrating a messaging tool with your Rollbar projects helps you manage the incoming alerts, so you won’t overlook any essential event in your projects while you are not overloaded with messages. This way, you can focus on the important things: fixing bugs. In this article, we will focus on the most popular notification integration: Slack. We will cover: the benefits of using Slack integration in your projects, the perks of using Slack Actions, and tips and tricks to get the most out of using Slack (or other) notifications. So let’s get to it then! Slack notifications Slack is one of the most commonly used options for notification integration for Rollbar projects. Once Slack is integrated with Rollbar, default rules will have been created for your projects, ready to be used. You can also customize these rules and set them up to make sure they serve your team the best (and least annoying) way. With the help of notifications, you can: set-up the types of notifications you are interested in, add notification filters, to keep the messages relevant and limit the number of alerts, include notification variable values to customize the content of the messages based on the type of event that triggers the notification. With these set-ups, you can make sure that notifications are only triggered in specific conditions, with tailored messaging that fits your needs. For example, you can set-up an alert for... --- ### Jira integration best practices - Published: 2020-09-25 - Modified: 2022-07-20 - URL: https://rollbar.com/knowledge-base/jira-integration-best-practices/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Perks of an issue tracking integration Save time and debug faster by integrating an issue tracking tool with your Rollbar projects so that you can streamline workflows and issue monitoring. Rollbar can integrate with many popular issue tracking softwares, making it easy to track Rollbar detected errors in your already existing workflow. Integrating an issue tracker allows you to Manually: Create an issue to track a Rollbar error Link a Rollbar error to an already created issue Automatically: Create an issue for new or frequent occurrences Reopen a linked issue when a Rollbar error is reactivated or reopened by a user Resolve a linked issue when a Rollbar error is resolved In this article, we will focus on Jira, one of the most popular issue tracking tool for teams. Please continue reading to learn how to best leverage it with your Rollbar projects. Tracking Rollbar detected errors with Jira Setting up Jira with your Rollbar projects allows you to create issues instantly with rich contextual data and error analytics. Moreover, you can track all these in your already existing issue tracker workflow. Once you connect Rollbar with Jira, you can significantly improve your monitoring workflow with: Link and display root cause exception data in issues Set notification rules to open new issues automatically Create and assign Jira issues with a few clicks Bidirectional syncing, update statuses in both Rollbar and Jira Detailed error data will be conveniently and easily accessible within Jira, including: stack traces, error status, number total occurrences,... --- ### Filter or Ignore Errors from Bots - Published: 2020-09-22 - Modified: 2021-06-14 - URL: https://rollbar.com/knowledge-base/filter-or-ignore-errors-from-bots/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Filter or Ignore Errors from Bots Rollbar provides a few ways to filter or ignore errors that happen in requests made by bots. Using Custom Grouping You can create a Custom Grouping rule to group all errors from known bots into their own Item in Rollbar, separate from your other data. Then mute that item or change its severity. Here's an example custom grouping rule to ignore client-side JavaScript errors that are caused by the Baidu spider: }, "fingerprint": "Baiduspider js error", "title": "Baiduspider js error" } ] We use this ourselves: these errors are still tracked in case we need them, but they stay out of sight in day-to-day use. Filtering Client-Side If you would rather ignore them completely, you can filter them out before they are sent to the Rollbar API in the first place. For example, for client-side JavaScript: _rollbarConfig = { // current config... checkIgnore: function(isUncaught, args, payload) { if (window. navigator. userAgent && window. navigator. userAgent. indexOf('Baiduspider') ! == -1) { // ignore baidu spider return true; } // no other ignores return false; } } Some of our other libraries don't implement checkIgnore yet. Please check out the docs for your SDK to see if checkIgnore is implemented, and open an issue on the appropriate repo in GitHub if you'd like checkIgnore in an SDK that hasn't implemented it yet. --- ### Unknown(Script Error) - Published: 2020-09-22 - Modified: 2021-06-09 - URL: https://rollbar.com/knowledge-base/unknownscript-error/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices This happens when your JS code is hosted on a different domain (i. e. a CDN). To fix, set Access-Control-Allow-Origin: * on the JS file, and crossorigin="anonymous" on the tag. If the script errors are coming from Javascript that you don't maintain, you can suppress them using the ignoreMessages option in Rollbar. js It is normal to still get some of these errors even after following the steps below and setting up CORS, because almost everyone has third party JS on their site that isn't set up with the CORS headers. Full explanation "Script Error" happens when an uncaught JavaScript error crosses domain boundaries in violation of the cross-origin policy. For example, if you host your JavaScript code on a CDN, any uncaught errors (errors that bubble up to the window. onerror handler, instead of being caught in try-catch) will get reported as simply "Script error" instead of containing useful information. This is a browser security measure intended to prevent passing data across domains that otherwise wouldn't be allowed to communicate. It's implemented in Firefox and Chrome. To get the real error messages, do the following: 1. Send the Access-Control-Allow-Origin header Setting the Access-Control-Allow-Origin header to * signifies that the resource can be accessed properly from any domain. You can replace * with your domain if necessary, for example Access-Control-Allow-Origin: www. example. com. However, handling multiple domains gets tricky, and may not be worth the effort if using a CDN due to caching issues that may arise. See more here.... --- ### Spot and prioritize production errors with Versions - Published: 2020-09-22 - Modified: 2022-07-20 - URL: https://rollbar.com/knowledge-base/spot-and-prioritize-production-errors-with-versions-2/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Overview Versions feature is available for our Advanced and Enterprise plan customers as a useful addition to Deploy tracking. This feature comes handy if you are deploying continuously or if you have multiple code versions in production. With the help of Versions you will be able to: See which version of your deploys are throwing exceptions, Resolve your items in Versions, Resolve your items easily via Git commit messages. Watch our short video on Versions! Versions Enabling Versions provides you visibility on which versions of your code are throwing exceptions. With Version, you can have a clear view of which occurrences are the result of your latest deployed version, thus being able to decide whether to proceed with a full deployment after a canary deploy or if you should just stick with a previous stable version. It is also very helpful if you have multiple code versions running in production, such as with mobile apps. Triaging your errors will also become easier with Versions, as you will have more insights on when and who was the last to deploy and if the error has already been resolved by a teammate or not. Resolve in version With Versions, you can track which versions your errors are resolved in. When you resolve an item within Rollbar, you have the option to enter a version number. It will then appear in the item’s status history, thus providing more info about the item, when it was fixed and in which version of your deployments.... --- ### Send Log Messages to Rollbar - Published: 2020-09-22 - Modified: 2025-02-19 - URL: https://rollbar.com/knowledge-base/send-log-messages-to-rollbar/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices You can send any log message to Rollbar, not just exceptions. This is especially helpful for client-side applications that don't write to your server logs. Log messages can have the same attached metadata as exceptions (request, server, person, etc. ) and go through a similar fingerprinting process as exceptions. Log messages have a level (critical, error, warning, info, or debug), a body (just a string), and any arbitrary optional parameters you want to include. Javascript // log methods exist for each level, or pass as a param Rollbar. critical("Crash while processing payment"); Rollbar. log("error", "Crash while checking order status"); Rollbar. warning("Facebook API unavailable"); Rollbar. info("User logged in"); Rollbar. debug("Cron job starting"); // can pass arbitrary params Rollbar. info("User logged in", {loginType: "email+password"}); // rich metadata will be included automatically, but if you want to override: Rollbar. scope({person: {id: "123"}}). info("User logged in"); Ruby log methods exist for each level, or pass as a param Rollbar. critical("Crash while processing payment") Rollbar. log("error", "Crash while checking order status") Rollbar. warning("Facebook API unavailable") Rollbar. info("User logged in") Rollbar. debug("Cron job starting") # can pass arbitrary params Rollbar. info("User logged in", :login_type => "email+password") # rich metadata will be included automatically, but if you want to override: Rollbar. scope(:person => {:id => "123"}). info("User logged in") Python default level is 'error' rollbar. report_message('Got an IOError in the main loop') # logs at the 'warning' level rollbar. report_message('Got an IOError in the main loop', 'warning') # can also include the request object rollbar. report_message('Got an... --- ### Reduce Noisy Javascript Errors - Published: 2020-09-22 - Modified: 2021-09-20 - URL: https://rollbar.com/knowledge-base/reduce-noisy-javascript-errors/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Ignore noisy errors on the client-side Rollbar. js enables you to ignore errors client-side if you wish. You can filter by any value in the payload, and ensure that the error never even gets sent to the Rollbar API. To do this, use the checkIgnore configuration function. var _rollbarConfig = { ... checkIgnore: function(isUncaught, args, payload) { // Code here to determine whether or not to send the payload // to the Rollbar API // return true to ignore the payload } ... }; isUncaught is true if the error bubbled up to window. onerror. It is false if the error came from one of the Rollbar. js logging methods. args are the args passed to the Rollbar. js logging method. If the error is uncaught and is from an unhandled rejection, the args parameter contains the Promise object. payload is the payload that will be sent to the Rollbar API. You can use anything in the payload to conditionally filter these errors out. To have Rollbar. js ignore the payload here, return true from the function. To continue processing and have the error sent to the Rollbar API, return false. Whitelist specific domains You can configure Rollbar. js to only accept errors from your own domains. We recommend this if you use a lot of third party scripts that are generating errors you have no control over, and you only want to see errors coming from your own domains. var _rollbarConfig = { ... hostWhiteList: ... }; When hostWhiteList... --- ### Multiple Production Environments - Published: 2020-09-22 - Modified: 2021-05-05 - URL: https://rollbar.com/knowledge-base/multiple-production-environments/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Rollbar requires the environment property on all error occurrences to indicate where they occurred (production ,staging , qa , etc. ). The choice of which environment values to use is very important due to the following considerations: Items cannot be merged if they are in different environments The Dashboard, Items, and Deploys views can only show information from a single environment or all environments. Many of our customers deploy their apps to multiple production environments, e. g. multiple zones in Amazon Web Services, Google Cloud Platform, Azure, etc. In this case, you might want to see all the items and deploys to any of your production environments at once, but also be able to track which environment a particular error occurred in. You probably will want to merge items that occurred in different production environments if they have the same root cause. Recommended usage: Use the environment value production for all errors from and deploys to any production environment. Use the host property in your error payloads to include the 'full path' of the server where an error occurred, including the name of the region/zone, e. g. us-east-1-web02 for the server web-02 that is hosted in the us-east-1 region. If you follow this approach, you can then merge any items that occur in a production environment. To find the items that are only occurring in a particular region, you can use the host advanced search option, which supports prefix search: host:us-east-1 To find items that occurred on a specific server... --- ### Keep an eye on your deploys with the help of Deploy Tracking - Published: 2020-09-22 - Modified: 2021-06-14 - URL: https://rollbar.com/knowledge-base/keep-an-eye-on-your-deploys-with-the-help-of-deploy-tracking-2/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Overview Nowadays, constant and fast deployment has become essential for your applications to keep up with the ever-changing needs of your customers. Elevate your Rollbar projects with Deploy tracking, and notify Rollbar about each one of your deployments to: See new errors for each deployment, Highlight the deployment that is suspected to have caused each error, Auto-resolve errors that were fixed in each deployment, Enable GitHub to notify Rollbar about errors. Watch our short video! Track your deploys for more details Every project that is connected to a web app should use deploys! Reporting a new deploy to Rollbar can allow us to display all the code revisions between each release of the application. The Deploys screen provides a detailed view of all your deployments that were made to a particular environment. The entry for each deploy displays a wide range of information to help you with the debugging process, including: Start & finish time Deploy status Deploying user (if known) Target environment Code version (typically a Git SHA or a version number) Deploy comments List of commits included (if you've connected Rollbar to a git repository) The Deploys screen offers visibility over your successful commits and your undeployed commits too. Undeployed commits are the ones that were added to the master branch but have not yet been deployed. These commits will be highlighted at the top of the Deploys screen. This will provide more visibility for developers who have missed the commits while deploying to act quickly upon them.... --- ### Jenkins - Published: 2020-09-22 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/jenkins/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Tracking deployments in Jenkins will allow you to see new errors for each deployment, determine the deployment that is suspected to have caused each error, and automatically resolve errors that were fixed in each deployment. You can read more examples in our blog Continuous Delivery with Jenkins and Rollbar. To configure Jenkins, use the curl command to notify Rollbar of the deployment: curl https://api. rollbar. com/api/1/deploy/ -F access_token=access_token -F environment=development -F revision=${GIT_COMMIT} -F rollbar_username=rollbar_username -F local_username=jenkins_user -F comment='any comments' Place this command in your deploy script so that it runs once the deploy has completed successfully. If successful, Rollbar's API will give a JSON response like this: { "data": {} } Replace each of the example values according to the parameter reference below. If using a version control system other than Git, change the revision= line as appropriate to set the revision ID. Parameter Reference access_token - Your project access token (required). environment - Name of the environment being deployed, e. g. production (required). revision - Revision number/sha being deployed. If using git, use the full sha (required). local_username - User who deployed (optional). rollbar_username - Rollbar username of the user who deployed (optional). comment - Deploy comment (e. g. what is being deployed) (optional). --- ### Transfer Projects Between Accounts > How to transfer Rollbar projects to another Rollbar Account. Includes Heroku and GitHub project transfers steps. - Published: 2020-09-22 - Modified: 2023-06-16 - URL: https://rollbar.com/knowledge-base/transfer-projects-between-accounts/ - KB Tags: Knowledge Base - KB Categories: Managing Your Rollbar Account Transfer Projects Between Rollbar Accounts Rollbar projects can be moved between accounts by anyone who is a member of the Owners team in both accounts. To transfer a project to a different account Go to Project Settings --> Advanced / Transfer Accounts Select the destination account, then confirm your Rollbar username and password and submit the request. What to do before transferring projects: Add your teams into the new account Add the users you want into the new account Select the correct plan (Essenstials or Advanced) and setup payment options. What will be transferred: *Notification rules will transfer only if it’s the same user token Source control JIRA Github issues Environments settings Project access tokens Slack + its rules (need to allow the new account under Connected Accounts) Service links History and comments What will not be transferred: Existing users and existing teams (additional people on the Owners excluding myself were removed) Need to add the right teams to projects If a user was assigned to an item it turns back to unassigned (see history below) Items to review after transfer: Once you have transferred the project, you should confirm the configuration of the project in the new account, including: Team assignments Notification rules We will attempt to transfer as many settings as possible to the new account, but some may not move depending on which users have access to the new account. Transferring from Heroku / GitHub to a Direct Rollbar Account Rollbar accounts can be created via partners... --- ### Personal vs. Organization Accounts - Published: 2020-09-22 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/personal-vs-organization-accounts/ - KB Tags: Knowledge Base - KB Categories: Managing Your Rollbar Account When you sign up for Rollbar, two separate but related things are created in our system: A user, which has a username, primary email address, and password. An account, which can contain projects representing your apps/services. If you sign up with the username johndoe , then we will also create an account accessible via https://rollbar. com/johndoe . Personal vs. Organizational Accounts All new accounts are created as personal accounts, which are meant to be used by a single person for their personal projects. If you are creating an account for your organization, then you can change the account into an organization account by going to Account Settings → General → Convert to Organization. The only difference between an organization account and a personal account is that organization accounts can be renamed. The name of a personal account is based on the user, so if user johndoe is renamed to johnfoo , then their personal account would change from https://rollbar. com/johndoe to https://rollbar. com/johnfoo . --- ### Billing in Rollbar - Published: 2020-09-22 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/billing-in-rollbar/ - KB Tags: Billing - KB Categories: Billing and Event Quotas For both monthly and annual plans, your account will have a billing cycle that starts on the day of the month when you originally signed up for the plan. The billing cycle is used to calculate your monthly usage. If you sign up after the 28th then your billing cycle date will vary depending on the length of the month. If you exceed your monthly event limit, you can pay per event over the limit. If your on-demand charge is sufficiently high that it would be more economical to upgrade to the next plan, then we'll do it for you automatically and you won't be charged for the overages. Once your account has been automatically upgraded, it will remain at the new plan level for future billing cycles. You can change your plan at any time by going to Account Settings –> Choose Plan. If you choose a lower plan level, the change will take effect at the start of your next monthly billing cycle. You may also upgrade your subscription manually at any time by going to Account Settings –> Choose Plan. If you are on a strict budget and don't mind missing some errors, then you can choose to disable on-demand events at Account Settings –> Billing Info. If on-demand is disabled and you reach your plan limit, we will not process new errors until your next billing cycle begins. On-demand event charges are calculated at the end of your billing cycle, and are included in the next... --- ### Bash - Published: 2020-09-22 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/bash/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Use Curl to send an HTTP POST: ACCESS_TOKEN=POST_SERVER_ITEM_ACCESS_TOKEN ENVIRONMENT=production LOCAL_USERNAME=whoami REVISION=git rev-parse --verify HEAD curl https://api. rollbar. com/api/1/deploy/ -F access_token=$ACCESS_TOKEN -F environment=$ENVIRONMENT -F revision=$REVISION -F local_username=$LOCAL_USERNAME Place this command in your deploy script so that it runs once the deploy has completed successfully. If the POST is successful, you will receive a JSON response like: {"data": {}} If using a version control system other than Git, change the revision= line as appropriate to set the revision ID. Parameter Reference ● access_token - Your project access token (required). ● environment - Name of the environment being deployed, e. g. "production" (required). ● revision - Revision number/sha being deployed. If using git, use the full sha (required). ● local_username - User who deployed (optional). ● rollbar_username - Rollbar username of the user who deployed (optional). ● comment - Deploy comment (e. g. what is being deployed) (optional). --- ### Enable GitHub Organization Access for Rollbar - Published: 2020-09-22 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/enable-github-organization-access-for-rollbar/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices Sometimes the GitHub repo you want isn't showing up in the dropdown in our UI. If typing the repo name in and saving the settings doesn't work, it may be because you haven't granted permission to the Rollbar application on Github. Go to your personal settings on GitHub, then go to Applications and navigate to the Authorized OAuth Apps. There you should see Rollbar, click on the link and you should be able to grant permission to the organization. --- ### Filtering Javascript errors by language - Published: 2020-09-22 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/filtering-javascript-errors-by-language/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices If your application has an international user base, you may be receiving Javascript error reports in the local language of your users' browsers. While Rollbar can't translate error messages into your preferred language, it is possible to group errors by language so that you have fewer items to manage. Here are a few custom grouping recipes to match errors based on browser language: One supported language The following rule groups errors where client. language. javascript does not contain en-: { "condition": { "path": "client. javascript. language","ncontains": "en-" }, "fingerprint": "non-en error", "title": "non-english error" } Multiple supported languages The following rule groups errors where client. language. javascript does not contain en-,fr-,de-, or es-: { "condition":{ "all": }, "fingerprint": "non-supported language error", "title": "non-supported language error" } --- ### Hiding Third-Party Code - Published: 2020-09-22 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/hiding-third-party-code/ - KB Tags: Best Practices - KB Categories: Core Features and Best Practices When using libraries or frameworks you will often have large portions of well-tested third party code that is unlikely to have caused an error for you. In order to keep the focus on your code Rollbar will collapse stack frames from third party code. Single Root To set this up all you have to do is configure your SDK to send the server. root, or the prefix URL for all in-house stack frame filenames. Any code from outside the server. root directory will be collapsed by default when you load that item in the Rollbar UI. For example, in a hypothetical stack trace with lines from the following files: ● /home/deploy/www/app/model. py ● /home/deploy/www/app/controller. py ● /home/deploy/www/vendor/webfmwk/eventloop. py ● /home/deploy/www/vendor/webfmwk/startup. py ● /home/deploy/www/app/main. py and with server. root set to /home/deploy/www/app, the lines from the vendor directory would be collapsed together, to allow you to focus on your code, and not the unlikely possibility that webfmk has a bug. Extra Roots Sometimes you'll have split your code into multiple sibling modules adjacent to folders you do not want included as project code (vendor, models, controllers, for instance). In these cases you can send additional application roots in the project_package_paths key. These paths should look identical to the server root (the beginning of a URL), and the key should be in an array containing any additional folders to be considered "in-project". --- ### Disable Two Factor Authentication - Published: 2020-09-22 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/disable-two-factor-authentication/ - KB Tags: Security - KB Categories: Security If you no longer have access to your 2FA device and do not have your recovery codes, Rollbar cannot disable 2FA on your user account unless you are on a paid account (see below). There are a couple of possible solutions that can allow you to regain access to your account. If there is another user in your account that is a member of the Owners team, they can disable 2FA for you via the Account Settings --> Members screen. If you are the only Owner in your account, and your 2FA device was a smart phone (e. g. iPhone, Android), then you can restore a backup of your device that has your authentication app properly configured. Note: If you are a paying customer, we can make two small charges (less than $1 US) to your credit card. If you can tell us the amount of those charges, then we will disable 2FA and immediately reverse the charges. --- ### Preventing Client-Side Access Token Abuse - Published: 2020-09-22 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/preventing-client-side-access-token-abuse/ - KB Tags: Security - KB Categories: Security Unfortunately there is no silver bullet here -- all analytics services have this problem too (Google Analytics, Mixpanel, etc. ). Our best practices for mitigating this problem: Access tokens Use a separate client-side token with post_client_item scope only. (This is the default post_client_item token. ) The client-side access token can only be used to send events and only from client-side platforms. It can't be used to read any data, and it can't be used to spoof server-side events. Tokens can be disabled and replaced at any time. If someone is abusing your token, you can disable it and use a new one instead. IP Blocklist We also provide an IP Blocklist so that you can blocklist specific malicious IPs. You can find the source IPs in the Rollbar interface, and then add those IP(s) to the blocklist. (Project -> Settings -> IP Blocklist) --- ### Source Map Troubleshooting - Published: 2020-09-22 - Modified: 2021-06-14 - URL: https://rollbar.com/knowledge-base/source-map-troubleshooting/ - KB Tags: Troubleshooting - KB Categories: Troubleshooting Rollbar applies source maps to exceptions from minified Javascript so you can view the original line and character numbers for debugging. For full details on source maps in Rollbar, check out our Source Maps guide. Do your source maps work locally? Source maps were originally developed to support local debugging of minified Javascript. If you are not able to debug your minified Javascript code via your browser, then it will probably not work in Rollbar either. For instructions on using source maps for local debugging, see this article in Google's Tools for Web Developers. Are your source maps being successfully uploaded/downloaded? Rollbar provides a detailed view of known source maps for each project. You can view it by going to Settings -> Symbol Mapping -> Source Maps in your Rollbar project. This screen shows all attempt to access source maps, both successful and unsuccessful. It includes a search feature that can be used to look for source maps for specific Javascript files. Are your source maps valid? Sometimes source maps can be generated with no content in them, or in an invalid format, e. g. base64. Check the source maps that are being uploaded to make sure they are in a human-readable format. We also have this helpful tool to help check if your source map produces the correct mapping for the line numbers and column numbers from the exception. Are source maps enabled by default for older projects? If your project was created prior to May 16, 2017, then... --- ### Improve your Error Grouping with the help of Rollbar - Published: 2020-09-22 - Modified: 2021-06-14 - URL: https://rollbar.com/knowledge-base/improve-your-error-grouping-with-the-help-of-rollbar/ - KB Tags: Strategies - KB Categories: Working with Rollbar Items Overview Congratulations on setting up your Rollbar projects! You took a step towards more visibility and an easier flow when it comes to debugging. Now, you might as well learn how the incoming errors are examined and grouped together by Rollbar. Let’s see how it happens and what else do we have to offer! With the help of Rollbar’s default grouping algorithm, you will: Keep your items list transparent and organized, Reduce the noise in your notifications, Understand and respond to your errors better. Learn how Rollbar groups your items by default Error grouping means that when you release a code to production, and it crashes hundreds of times, our system groups all of those crashes together in one error item and sends you one notification, instead of notifying you every time, resulting in 100 notifications in your inbox. The 1 item in your items list will include all the details of all the occurrences of your error. The Rollbar grouping algorithm is smart and is being improved constantly, so we can serve our customers. Rollbar tries to group occurrences together with the same root cause in one item so that you: Have visibility over all the occurrences of one error item, which makes you Understand your errors a lot easier, and Speed up the bugfixing process. The occurrence fingerprints are resilient to deploys and code changes, so you can track the history of your occurrences through multiple deploys and code versions. Take your Grouping to the next level It... --- ### Manual merging vs. Custom fingerprints - Published: 2020-09-22 - Modified: 2021-06-14 - URL: https://rollbar.com/knowledge-base/manual-merging-vs-custom-fingerprints/ - KB Tags: Tool Integrations - KB Categories: Working with Rollbar Items Overview Rollbar has a pretty sufficient default grouping algorithm, that automatically analyzes the stack traces of the incoming occurrences and groups them if there is a common pattern. This helps to reduce the noise of incoming occurrences by a great deal! But what happens, if you want to organize your Items list differently? In this article, we will walk you through all the benefits of: Merging items manually, instantly, when you think 2 or more items should go together, Create custom fingerprints for future occurrences and tailor grouping to your own needs. Merge your items instantly You can manually merge items together, thus combining items into one new group for easier management. In this case, all past and future occurrences of those items will be combined automatically, and you will have one unified view on the Item details page of all the occurrences of the error. Manually merging your items comes handy, when the grouping algorithm separates items that you think should rather go together. You can then group them instantly with the merging option. It is also useful when you want to group items together, that do not require their own custom fingerprint. If you want to remove items from a group, because they were mistakenly grouped together or you decided to organize the occurrences separately, you have the chance to un-merge them and from then on they will be handled as separate items. Create custom fingerprints When you manually merge items together, Rollbar will analyze the items and... --- ### Streamline your items workflow - Published: 2020-09-22 - Modified: 2021-06-14 - URL: https://rollbar.com/knowledge-base/streamline-your-items-workflow-2/ - KB Tags: Tool Integrations - KB Categories: Working with Rollbar Items Overview Chances are you have multiple incoming occurrences in your Rollbar projects, grouped into items, appearing in your Item list, one after another. You also start to receive notifications pouring in your inbox. Now, you might as well keep your incoming items organized and clean by Rollbar’s useful options of: Setting up statuses for your items, that determine how they appear and behave, Triaging and rating them based on their severity level. This way you can make sure your item list is transparent, you will not be spammed by irrelevant notifications, provide clear visibility for your teams who manage the same project by appropriately triaging your errors and setting up the relevant severity level and status, to speed up the process of debugging, making sure everyone focuses their attention on the relevant things! Item statuses At Rollbar, we offer the chance to assign 3 statuses for your items: Active, Resolved, Muted. Active items All items start as active. Active means that the error is present and on-going and it requires your attention. It could represent a bug that has not yet been fixed or an intermittent ongoing backend issue. Active items Appear on the Dashboard Trigger notifications on their first occurrence and when thresholds are crossed (according to your notification rules) Count for billing purposes Can be changed to Resolved and Muted Resolved items When you believe your item is fixed or if you want to be notified if the bug re-appears you can mark it as Resolved. If possible... --- ### Auto-upgrading in Rollbar - Published: 2020-09-21 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/auto-upgrading-in-rollbar/ - KB Tags: Billing - KB Categories: Billing and Event Quotas If you have a paid subscription to Rollbar, then you can choose to automatically upgrade your account whenever you reach your monthly event limit. Automatic upgrades are enabled by default, and can be turned on/off by going to Account Settings --> Billing Info. If automatic upgrades are enabled, you will receive several warning emails before your plan is upgraded. We send you emails when your account has reached 70%, 90%, and 100% of your monthly quota, and we'll also notify you if your account was automatically upgraded. If automatic upgrades are disabled and your account reaches its monthly event limit, then your account will not receive any more data until your next monthly cycle begins. We send out notifications throughout the month to notify you if you are likely to hit your event limit, so you have the opportunity to choose to auto-upgrade or to limit the number of events sent to Rollbar. Click here for more information about billing in Rollbar --- ### GDPR & Rollbar - Published: 2020-09-20 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/gdpr-rollbar/ - KB Tags: Knowledge Base - KB Categories: Security Rollbar is compliant with GDPR and can serve as a data processor for customers who control data from individuals in the EU. We provide the following measures to enable our customers to maintain GDPR compliance: Data Processing Agreement Rollbar provides a data processing agreement (DPA) which can be viewed and accepted by going to Account Settings -> Security -> Data Processing Agreement. Data Retention To ensure that you retain your customer's identifiable data no longer than necessary, we've added the option in paid Rollbar accounts to customize your data retention period between 7-180 days. You can update this by going to Account Settings -> Security -> Data Retention. Right to be Forgotten We've added an API for deleting person tracking data. See our API docs for details. Data Subprocessor Explanation If you are required to list Rollbar as a data subprocessor, the following information can be provided: Purpose: Exception reporting Location: USA Questions? Don't hesitate to contact us via privacy@rollbar. com. --- ### Could not compare commits between SHAs ... - Published: 2020-09-17 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/could-not-compare-commits-between-shas/ - KB Tags: Tool Integrations - KB Categories: Troubleshooting Occasionally when using Rollbar's Deploy Tracking feature, you may see a message such as the following: Could not compare commits between SHAs abcdef... . and 123456... . This usually means that one of the SHAs is either invalid or has not been pushed to Github. A common cause of this problem is that your Github OAuth token has expired. Here are steps to see if this is the source of the problem: In Rollbar: In the Rollbar project where you encountered the issue, go to Settings → Source Control . Copy the Repository , Default Branch , and Project Root settings for later use. Click Disconnect where it says Connected to Github as {github-username} . In GitHub: Go to Settings → Applications → Authorized OAuth Apps, find Rollbar, click Revoke, and then confirm that you want to revoke access. In Rollbar: In the Rollbar project where you encountered the issue, go to Settings → Source Control, select Github as the source control provider, then click Connect to Github, and then complete the authorization process. Reconfigure Repository , Default Branch , and Project Root . Check your deploys page. If the SHAs specified in the deploys are valid, then you should no longer see the message. --- ### Get more insights and control over your errors - Published: 2020-09-17 - Modified: 2021-06-14 - URL: https://rollbar.com/knowledge-base/get-more-insights-and-control-over-your-errors/ - KB Tags: Tool Integrations - KB Categories: Core Features and Best Practices Overview In this article, we will walk you through all the perks of integrating GitHub source control with your Rollbar projects. Once you have source control integration set up and a Git repository is connected to your Rollbar projects, you will have more visibility on: where the error was most recently activated, the context of the code line where the bug occurred, and who the last person was to work on the affected code section, thus being able to assign it to the right person to work on it and resolve it faster. Additionally, you won’t even have to leave your Rollbar project. Sounds tempting, right? Let's get to it! Don't have time to read? Watch our short video on GitHub source control integration. Gain more visibility all in one place When a Rollbar project is connected to a Git repo, stack traces will include links to each file in the code version where the error was most recently activated. Another advantage is that the list of commits included in each deploy will include URLs so you can view the difference for each commit as well as the entire deployed code version, thus spotting where the error occurred and fixing it with ease. You will also have the chance to view un-deployed commits. Any commit that has been merged to your master branch but not yet deployed will be highlighted at the top of the Deploys screen. This will provide more visibility for developers who have missed the commits while... --- ### "There was a problem trying to connect to your Asana account." message appears - Published: 2020-09-17 - Modified: 2021-06-11 - URL: https://rollbar.com/knowledge-base/there-was-a-problem-trying-to-connect-to-your-asana-account-message-appears/ - KB Tags: Tool Integrations - KB Categories: Troubleshooting This warning message typically appears because the Rollbar app is having problems accessing the Asana API due to an outage or a timeout. This happens intermittently and is a known issue in the Asana API. Asana's platform team are working to improve performance and stability of the API to reduce future occurrences. If you encounter this error, please wait a couple of minutes and try to repeat your action again. If the error persists, please notify Asana via https://asana. com/support as well as Rollbar via support@rollbar. com or the in-app chat. --- ## Press ### SafetyDetectives - Interview with Brian Rue - CEO and Co-founder at Rollbar - Published: 2024-01-22 - Modified: 2024-01-22 - URL: https://rollbar.com/press/safetydetectives-interview-with-brian-rue-ceo-and-co-founder-at-rollbar/ Inter --- ### Rollbar Research Shows Developers Feel Most Productive When Creating Better Quality Code - Published: 2022-07-12 - Modified: 2022-09-28 - URL: https://rollbar.com/press/rollbar-research-shows-developers-feel-most-productive-when-creating-better-quality-code/ SAN FRANCISCO--(BUSINESS WIRE)--New research from Rollbar, provider of real-time error monitoring Software as a Service, indicates that nearly a third (32%) of CTOs, developers, engineers and technical leads feel the most productive when they are creating better quality code – and not just more code. Nearly as many (28%) said that meeting and exceeding their managers’ expectations is what makes them feel the most productive, while more than a quarter (26%) said that productivity means delivering more new product features and services. Meanwhile, just 13% said that they equate productivity with the quantity of code they create. This research is based on a national survey of more than 1,000 CTOs, developers, engineers and technical leads across sectors done on behalf of Rollbar by Propeller Insights in 2022. “Coding is hard, tedious work, and it’s easy for developers to become tired of it, especially amid the uncertainties created by COVID-19 and the changing global business landscape,” said Brian Rue, CEO and co-founder at Rollbar. “But, as our research highlights, developers care deeply about code quality and meeting business objectives, and they equate their productivity to these considerations and to improving product. And 76% of survey participants said that better tools could increase their productivity. So, managers and companies must keep developers engaged with new and challenging tasks, support them with new tools to code better and faster, and create environments that nurture creativity and acknowledge that burnout is real. ” Most organizations are already working on making all of that happen.... --- ### Rollbar Secures $11 Million Series B To Help Engineering Teams Release More Often - Published: 2020-03-03 - Modified: 2021-06-11 - URL: https://rollbar.com/press/rollbar-secures-11-million-series-b-to-help-engineering-teams-release-more-often/ SAN FRANCISCO, CA - March 4, 2020 -- Rollbar, provider of real-time error monitoring Software as a Service, today announces $11 million in Series B funding. The round was led by Runa Capital, an international VC firm headquartered in Silicon Valley that backs early-stage startups in deep tech and cloud business software. Long Light Capital and Blossom Street Ventures also participated in this round, along with existing investors Cota Capital, Bain Capital, and Patagonia Capital. Dmitry Galperin from Runa Capital will take a board seat. As every business becomes a software business, real advantages come from being able to iterate quickly and release continuously. And for that, automated release is not enough anymore, you also need automated response. Automated response includes being able to see, understand, and resolve problems in real-time across the entire software development lifecycle. And that's exactly what Rollbar is building. Rollbar provides an automated error response platform centered around its proprietary, customizable grouping engine. Its solution offers workflow capabilities and integrates seamlessly into the modern development stack. "Traditional monitoring doesn't give developers what they need to understand and respond to massive amounts of machine data. Developers need a better way to see where they're going. We're already working with more than 100,000 developers at over 4,000 customers, such as Twilio, Branch, Salesforce and Instacart to help them iterate faster and with more confidence. We're pleased with the support from Runa Capital as we scale our company," said Brian Rue, CEO and Co-Founder of Rollbar. Rollbar plans... --- ### New UX From Rollbar Takes The Hassle Out Of Monitoring And Debugging Errors In Microservices - Published: 2019-12-15 - Modified: 2021-06-11 - URL: https://rollbar.com/press/new-ux-from-rollbar-takes-the-hassle-out-of-monitoring-and-debugging-errors-in-microservices/ Centralized Realtime View of Errors Helps Companies Deliver Better Customer Experiences SAN FRANCISCO – December 16, 2019 - Rollbar, provider of real-time error monitoring Software as a Service, announced today a new UX and interface that fully supports microservices and provides users with a much richer experience. As complex distributed architecture becomes the norm, Rollbar is working diligently to ensure its core user experience reflects this paradigm shift by adopting powerful multi-project views across the entire user workflow. Rollbar’s new UX allows users to monitor all microservices with one tool in one view and receive real-time alerts on errors across multiple services with its multi-project filter. Developers know exactly where the error occurred, how many times, and why. They can also track deploy version quality across one or every microservice in a single glance. And users can set up their own personal workspace for services or projects they are working on with powerful filters for projects, environments, frameworks, and error severity that persist across different views. “When Rollbar was first introduced, practices such as microservice architecture and continuous delivery weren’t as common,” said Cory Virok, co-founder and CTO of Rollbar. “But most enterprises have or are in the process of migrating to a microservices model, which was the primary driving force behind our new UX. ” With the new UX, Rollbar users can have their own personal workspace for services or projects they care about. Whether looking at the main dashboard, the Items view, or Versions, users only see what... --- ### Rollbar Announces First Error Monitoring Solution For Salesforce Apex Platform - Published: 2019-11-13 - Modified: 2021-06-11 - URL: https://rollbar.com/press/rollbar-announces-first-error-monitoring-solution-for-salesforce-apex-platform/ Four Million Salesforce Developers Can Now Find and Fix Errors in Apex Apps in Real-Time SAN FRANCISCO – November 13, 2019 -- Rollbar, provider of real-time error monitoring Software as a Service, announced today the first error monitoring solution for Salesforce’s Apex platform. Rollbar’s automatic error detection and analysis solution empowers Salesforce customers and partners using its Apex platform with customizable tools and filters that greatly reduce the time it takes to detect and fix errors in code. There are currently more than four million developers on the Salesforce platform and thousands of ISVs that have built apps on Apex. Apex is a strongly typed, object-oriented programming language that allows developers to execute flow and transaction control statements on Salesforce servers in conjunction with calls to the API. Using syntax that looks like Java and acts like database stored procedures, Apex enables developers to add business logic to most system events, including button clicks, related record updates and Visualforce pages. “The idea to develop a Rollbar solution for Apex was really driven by our customers, who are increasingly utilizing this robust platform to develop a wide variety of applications,” said Francesco Crippa, VP of engineering at Rollbar. “Salesforce developers can now monitor Apex applications they’ve created in real-time and see if anything is broken, where it’s broken, does it matter, and how to fix it, which saves time and human resources and gets applications to the market sooner. ” Whether developing apps internally to extend the functionality of Salesforce or... --- ### Rollbar to Offer Its Error-Monitoring Solution on Google Cloud Platform Marketplace - Published: 2019-04-08 - Modified: 2021-06-11 - URL: https://rollbar.com/press/rollbar-to-offer-its-error-monitoring-solution-on-google-cloud-platform-marketplace/ SAN FRANCISCO - April 9, 2019 -- Rollbar, provider of real-time error monitoring Software as a Service, announced today its partnership with Google Cloud and its availability on the Google Cloud Platform (GCP) Marketplace. Rollbar provides automatic error detection and analysis centered around its customizable grouping engine. GCP Marketplace lets users quickly deploy software that runs on Google Cloud Platform and allows customers to easily start up a familiar software package with Google Cloud services, with no manual configuration required. With debugging taking up to 50 percent of software development time, adding Rollbar’s error-monitoring solution to the GCP Marketplace means customers now have instant access to a cutting-edge solution that enables developers and DevOps teams to monitor errors in real-time as new software is built and deployed, notify the right team of an error, and have rich contextual data for debugging the error faster across the development lifecycle. With Rollbar, engineering teams can detect application errors and resolve them quickly - greatly reducing time and human resources spent on traditional debugging. “Availability on the GCP Marketplace empowers development teams to take advantage of Rollbar’s real-time error monitoring solution - enabling them to release their software with confidence by providing visibility into the quality of code throughout their development lifecycle,” said Brian Rue, CEO of Rollbar. GCP Marketplace supports ready-to-go technology stacks to accelerate development. Deploying Rollbar into any GCP environment is fast and easy, and billing is simplified because Rollbar shows up as a line item in the monthly GCP... --- ### Rollbar Acquires Hungary-Based Samebug - Published: 2019-02-24 - Modified: 2022-07-20 - URL: https://rollbar.com/press/rollbar-acquires-hungary-based-samebug/ SAN FRANCISCO and BUDAPEST, February 25, 2019 -- Rollbar, provider of real-time error monitoring Software as a Service, announced today it has acquired Hungary-based Samebug, in a strategic move that further deepens its domain expertise in grouping and allows for integration of proprietary Samebug technology into its error monitoring solution. It also allows Rollbar to quickly grow its engineering team and have greater access to European customers. A study, published in InfoQ, shows debugging takes up to 50 percent of the development cycle, and that it’s twice as hard as writing code in the first place. Rollbar enables developers and DevOps teams to monitor errors in real-time as new software is built and deployed, notify the right team of an error, and provide rich contextual data for debugging the error faster across the development lifecycle. With Rollbar, engineering teams can detect application errors and resolve them quickly - greatly reducing time and human resources spent on traditional debugging, which can better be used elsewhere. Samebug was founded by CEO, Renáta Tamási-Irsai, a recognized entrepreneur and innovator who was the second-place winner at the prestigious CEE Women Startup Competition, along with CTO Árpád Tamási and lead developer Dániel Poroszkai. “We are very excited to be part of the Rollbar family and ready to tackle the challenges associated with this fast-growing market,” said Renáta. “Our goal is to change how developers, in any industry, code and debug, providing solutions to software problems (crashes) automatically whenever it’s needed, in a form it’s needed.... --- ### A Rollbar felvásárolja a Samebugot - Published: 2019-02-24 - Modified: 2021-06-11 - URL: https://rollbar.com/press/rollbar-acquires-hungary-based-samebug-hu/ San Francisco & BUDAPEST, 25 február 2019 -- A szoftverhibák valós idejű monitorozását végző szoftvercég, a Rollbar felvásárolja a magyarországi székhelyű Samebugot. A stratégiai lépés célja a szoftverfejlesztés során felmerülő hibák csoportosításában szerzett eddig tudás mélyítése, valamint a Samebug technológiájának integrálása a jelenlegi szolgáltatásba. Egyben remek lehetőség ez arra is, hogy a Rollbar gyorsan növelje fejlesztői létszámát és könnyebben elérjék az európai ügyfeleiket. Egy InfoQ-ban megjelent tanulmány szerint a fejlesztők idejének nagyjából ötven százaléka telik hibakereséssel, vagyis debugginggal és javítással, ráadásul hibákat keresni kétszer olyan nehéz, mint kódot írni. A Rollbar megoldásával a fejlesztőcsapatok valós időben, a szoftverek megírásával egyidőben követhetik nyomon a hibákat és azonnal értesíthetik a megfelelő csapatot, hogy azok javítsák a problémát. Ezzel kellő mennyiségű adatot szolgáltatnak és maga a hibakeresés folyamata is felgyorsul - az így felszabaduló erőforrást új célok elérésére tudják használni. A Samebugot hárman alapították, Tamási-Irsai Renáta cégvezető, Tamási Árpád technológiai vezető és Poroszkai Dániel vezető fejlesztő. "Büszkék vagyunk arra, hogy a kaliforniai Rollbar csapat tagjaivá válunk és együtt nézünk szembe a gyorsan növekvő piac kihívásaival", mondta Tamási-Irsai Renáta. "Célunk, hogy megváltoztassuk ahogyan a fejlesztők kódolnak és hibákat javítanak azzal, hogy automatikus megoldásokat nyújtunk a szoftveres problémákra olyan formában és ott, ahol azokra szükség van. ” "Ez a felvásárlás megszilárdítja a Rollbar vezető pozícióját az ágazatban", ezt Salil Deshpande, a Palo Alto-i Bain Capital Ventures igazgatója mondta, cége hatmillió dollárt fektetett a Rollbarba. "A valós idejű hibakeresés gyorsan válik minden fejlesztő eszköztárának meghatározó részévé, a Samebug technológiájának és szakértelmének integrációjával a Rollbar elsődleges választása... --- ### Series A Funding - Published: 2017-10-22 - Modified: 2021-06-11 - URL: https://rollbar.com/press/series-a-funding/ --- ## Testimonials ### Anonymous ThredUP (Results) - Published: 2021-10-18 - Modified: 2021-10-18 - URL: https://rollbar.com/?testimonial=anonymous-thredup-results --- ### Anonymous ThredUP (Strategy #2) - Published: 2021-10-18 - Modified: 2021-10-18 - URL: https://rollbar.com/?testimonial=anonymous-thredup-strategy-2 --- ### Anonymous ThredUP (Strategy #1) - Published: 2021-10-18 - Modified: 2021-10-18 - URL: https://rollbar.com/?testimonial=anonymous-thredup-strategy-1 --- ### Plexus (Goal) - Published: 2021-09-17 - Modified: 2021-09-21 - URL: https://rollbar.com/?testimonial=plexus-goal --- ### Plexus (Strategy) - Published: 2021-09-17 - Modified: 2021-09-21 - URL: https://rollbar.com/?testimonial=plexus-strategy --- ### Plexus (Results) - Published: 2021-09-17 - Modified: 2021-09-21 - URL: https://rollbar.com/?testimonial=plexus-results --- ### W. Habib - Everplans (light) As an agile - Published: 2021-07-28 - Modified: 2021-07-28 - URL: https://rollbar.com/?testimonial=w-habib-everplans-light-as-an-agile --- ### A. Childs - Clubhouse (dark) Rollbar lets us - Published: 2021-07-28 - Modified: 2021-07-28 - URL: https://rollbar.com/?testimonial=a-childs-clubhouse-light-rollbar-lets-us --- ### Fintech (dark) The more you - Published: 2021-07-28 - Modified: 2021-07-28 - URL: https://rollbar.com/?testimonial=fintech-dark-the-more-you --- ### J. Bazemore - Greenhouse (light) When you move - Published: 2021-07-28 - Modified: 2021-07-28 - URL: https://rollbar.com/?testimonial=j-bazemore --- ### R. Zuber - CircleCI (light) If you don't - Published: 2021-07-28 - Modified: 2021-07-28 - URL: https://rollbar.com/?testimonial=r-zuber-circleci-light-if-you-dont --- ### D. Rohov - CVENT (light) Rollbar has been - Published: 2021-07-28 - Modified: 2021-07-28 - URL: https://rollbar.com/?testimonial=d-rohov-cvent-light-rollbar-has-been --- ### D Rohov - CVENT (light) You could have - Published: 2021-07-28 - Modified: 2021-07-28 - URL: https://rollbar.com/?testimonial=d-rohov-cvent-light-you-could-have --- ### D. Rohov - CVENT (light) The out of the - Published: 2021-07-28 - Modified: 2021-07-28 - URL: https://rollbar.com/?testimonial=d-rohov-cvent-light-the-out-of-the --- ### H. Villafuerte – Duolingo – light – I really can't imagine... - Published: 2021-07-28 - Modified: 2021-07-28 - URL: https://rollbar.com/?testimonial=h-villafuerte-duolingo-light-i-really-cant-imagine --- ### Tyler Wells - Twilio (light) if a tool - Published: 2021-07-28 - Modified: 2021-07-28 - URL: https://rollbar.com/?testimonial=tyler-wells-twilio-light-if-a-tool --- ### H. Villafuerte - Duolingo - light - Rollbar helps make... - Published: 2021-07-28 - Modified: 2021-07-28 - URL: https://rollbar.com/?testimonial=h-villafuerte-duolingo-light-rollbar-helps-make --- ### R. Zuber (circle - dark) - Published: 2021-06-02 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=r-zuber-circle-dark --- ### T. Wells (circle - dark) - Published: 2021-06-02 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=t-wells-circle-dark --- ### S. Hacker (circle - dark) - Published: 2021-06-02 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=s-hacker-circle --- ### Duolingo - Hacker (light) - Published: 2021-05-26 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=duolingo-hacker-light --- ### D. Rohov - CVENT (dark) - Published: 2021-05-26 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=d-rohov-cvent-dark --- ### R. Zuber - CircleCI (dark) - Published: 2021-05-26 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=r-zuber-circleci-dark --- ### T. Wells - Twilio (dark) - Published: 2021-05-26 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=t-wells-twilio-dark --- ### M. Blaze - Duolingo (dark) - Published: 2021-05-26 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=m-blaze-duolingo-dark --- ### C. Amadieh - Cvent (dark) - Published: 2021-05-26 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=c-amadieh-cvent-dark --- ### M. Blaze - Duolingo (light) - Published: 2021-05-13 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=m-blaze-duolingo --- ### C. Amadieh - Cvent (Light) Anytime you fix - Published: 2021-05-13 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=c-amadieh --- ### T. Wells - Twilio (light) - Published: 2021-05-13 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=t-wells-twilio --- ### R. Zuber - CircleCI (light) - Published: 2021-05-13 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=r-zuber-circleci --- ### D. Rohov - CVENT (light) - Published: 2021-05-12 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=d-rohov-cvent --- ### Duolingo - Hacker (dark) - Published: 2021-04-05 - Modified: 2021-08-23 - URL: https://rollbar.com/?testimonial=duolingo-hacker --- ## Employees ### Anler Hernandez Peral - Published: 2023-02-16 - Modified: 2023-02-16 - URL: https://rollbar.com/?employee=anler-hernandez-peral --- ### Cyrus Radfar - Published: 2022-06-30 - Modified: 2022-06-30 - URL: https://rollbar.com/?employee=cyrus-radfar --- ### Nick Hodges - Published: 2022-03-10 - Modified: 2022-06-30 - URL: https://rollbar.com/?employee=nick-hodges --- ### - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=1139 --- ### Juanjo Marrón - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=juanjo-marron --- ### Maggie Liu - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=maggie-liu --- ### Drew Meyers - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=drew-meyers --- ### Diego Veralli Bortheiry - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=diego-veralli-bortheiry --- ### Owen Linderholm - Published: 2021-05-05 - Modified: 2022-06-30 - URL: https://rollbar.com/?employee=owen-linderholm --- ### Rafael Moore Cid - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=rafael-moore-cid --- ### David Hackett - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=david-hackett --- ### Christian Fitzgerald - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=christian-fitzgerald --- ### Jennifer Vannoy - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=jennifer-vannoy --- ### Justin Hochsprung - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=justin-hochsprung --- ### Krisztián Griz - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=krisztian-griz --- ### Nitin Bhasin - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=nitin-bhasin --- ### Maria Stanley - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=maria-stanley --- ### Daniel McCoy - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=daniel-mccoy --- ### Rollbar Editorial Team - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=rollbar-editorial-team --- ### Pawel Szczodruch - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=pawel-szczodruch --- ### Patrick Bonner - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=patrick-bonner --- ### Nico Kruger - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=nico-kruger --- ### Jack Delahunt - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=jack-delahunt --- ### Nia Hampton - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=nia-hampton --- ### Queen Lee - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=queen-lee --- ### Gaurav Anand - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=gaurav-anand --- ### Hayden Kempton - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=hayden-kempton --- ### Ian Flanagan - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=ian-flanagan --- ### Israel Perez - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=israel-perez --- ### Matheas Hutcherson - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=matheas-hutcherson --- ### Abby Dugan - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=abby-dugan --- ### Martin Malloy - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=martin-malloy --- ### András Tarsoly - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=andras-tarsoly --- ### Dean Rizzo - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=dean-rizzo --- ### Jeffrey Hoffer - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=jeffrey-hoffer --- ### Alex Tkach - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=alex-tkach --- ### Nathan Sweet - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=nathan-sweet --- ### Oluwarotimi Joseph Olorunyomi - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=oluwarotimi-joseph-olorunyomi --- ### Yoz Grahame - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=yoz-grahame --- ### Ami Felson - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=ami-felson --- ### Tamsin Guy - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=tamsin-guy --- ### Omar Powell Guaglione - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=omar-powell-guaglione --- ### Árpád Fülöp - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=arpad-fulop --- ### Michael Ng - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=michael-ng --- ### Syed Ahmed - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=syed-ahmed --- ### Daniel Day - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=daniel-day --- ### Charles Roberts - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=charles-roberts --- ### Sachin Goyal - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=sachin-goyal --- ### Mrunal Kapade - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=mrunal-kapade --- ### Ryan Clark - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=ryan-clark --- ### Sami Atiq - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=sami-atiq --- ### Hardik "HK" Parekh - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=hardik-hk-parekh --- ### Angeline Junaedy - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=angeline-junaedy --- ### Finbar Fleming - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=finbar-fleming --- ### Eva Zhang - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=eva-zhang --- ### Zoltán Bődi - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=zoltan-bodi --- ### Phillip Ramirez - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=phillip-ramirez --- ### Christopher Seaman - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=christopher-seaman --- ### Julian Simpson - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=julian-simpson --- ### An Nguyen - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=an-nguyen --- ### Renee Wells-Wood - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=renee-wells-wood --- ### Jonathan Lilienthal - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=jonathan-lilienthal --- ### David Woller - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=david-woller --- ### Tin Nguyen - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=tin-nguyen --- ### Atsuko Nishiguchi - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=atsuko-nishiguchi --- ### Mani Askari - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=mani-askari --- ### Patrick Smyth - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=patrick-smyth --- ### Michael Mukhin - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=michael-mukhin --- ### Colin Flynn - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=colin-flynn --- ### Ramon Niebla - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=ramon-niebla --- ### Gianina Borcean - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=gianina-borcean --- ### Austen Lacy - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=austen-lacy --- ### Marcelo Oliveira - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=marcelo-oliveira --- ### Imran Rizvi - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=imran-rizvi --- ### Dmitry Mazin - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=dmitry-mazin --- ### Chris Maki - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=chris-maki --- ### Nicholas Vincent-Hill - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=nicholas-vincent-hill --- ### Gabriella Papp - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=gabriella-papp --- ### Lubos Parobek - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=lubos-parobek --- ### Mike French - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=mike-french --- ### Rachel Foster - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=rachel-foster --- ### Erwin Tung - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=erwin-tung --- ### Paul Moriarty - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=paul-moriarty --- ### Steve Beane - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=steve-beane --- ### Michael "MC" McCullough - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=michael-mc-mccullough --- ### David Basoco - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=david-basoco --- ### Francesco Crippa - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=francesco-crippa --- ### Anthony Tran - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=anthony-tran --- ### Kay Xiong - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=kay-xiong --- ### Sharrin Fuller - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=sharrin-fuller --- ### Artur Moczulski - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=artur-moczulski --- ### Andrey Kornich - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=andrey-kornich --- ### Mary Lee Olson - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=mary-lee-olson --- ### Jessica Hsieh - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=jessica-hsieh --- ### Letania Ferreira - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=letania-ferreira --- ### Vijay Selvaraj - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=vijay-selvaraj --- ### Renáta Tamási-Irsai - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=renata-tamasi-irsai --- ### Árpád Tamási - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=arpad-tamasi --- ### Dániel Poroszkai - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=daniel-poroszkai --- ### András Horváth - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=andras-horvath --- ### Magdalena Dzindzisz - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=magdalena-dzindzisz --- ### Ádám Németh - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=adam-nemeth --- ### Zita Lőrinczi - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=zita-lorinczi --- ### Walt Jones - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=walt-jones --- ### Nellie Sisti - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=nellie-sisti --- ### Vince Power - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=vince-power --- ### Sergei Bezborodko - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=sergei-bezborodko --- ### Chris Pfohl - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=chris-pfohl --- ### Zachary Flower - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=zachary-flower --- ### Hemant Jain - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=hemant-jain --- ### Daniel Steuernol - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=daniel-steuernol --- ### Jon de Andrés Frías - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=jon-de-andres-frias --- ### Dan St. Clair - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=dan-st-clair --- ### Adil Aijaz, Co-Founder & CEO of Split - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=adil-aijaz-co-founder-ceo-of-split --- ### Taron Foxworth - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=taron-foxworth --- ### István Erdő - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=istvan-erdo --- ### Michal Zalecki - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=michal-zalecki --- ### Mehak Garg - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=mehak-garg --- ### Helaine de Tomasi - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=helaine-de-tomasi --- ### Lotanna Nwose - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=lotanna-nwose --- ### Michael Davis - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=michael-davis --- ### Ivan Gomez - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=ivan-gomez --- ### Julie Jones - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=julie-jones --- ### Derick Chung - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=derick-chung --- ### Alex Moraca - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=alex-moraca --- ### Jesse Gibbs - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=jesse-gibbs --- ### Brian Rue - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=brian-rue --- ### Cory Virok - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=cory-virok --- ### Jason Skowronski - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=jason-skowronski --- ### Craig Guillot - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=craig-guillot --- ### Tyler Cascade - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=tyler-cascade --- ### Michael Auderer - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=michael-auderer --- ### Sadequl Hussain - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=sadequl-hussain --- ### Jaee Apte - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=jaee-apte --- ### Megan Anderson - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=megan-anderson --- ### Twain Taylor - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=twain-taylor --- ### Rivkah Standig - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=rivkah-standig --- ### Mike Smith - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=mike-smith --- ### Phil Nash - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=phil-nash --- ### Derek Haynes - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=derek-haynes --- ### Jennifer Marsh - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=jennifer-marsh --- ### Ken Sheppardson - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=ken-sheppardson --- ### Cuttlesoft - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=cuttlesoft --- ### Elliott Spira - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/?employee=elliott-spira --- ## Job Titles ### Chief Product Officer - Published: 2022-06-30 - Modified: 2022-06-30 - URL: https://rollbar.com/?job_title=chief-product-officer --- ### Talent & Operations - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=talent-operations --- ### Co-founder and CTO - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=co-founder-and-cto --- ### CRO - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=cro --- ### Sales - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=sales --- ### Engineering - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=engineering --- ### Operations - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=operations --- ### Product Design - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=product-design --- ### Finance - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=finance --- ### Talent - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=talent --- ### Country Manager, Hungary - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=country-manager-hungary --- ### Marketing - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=marketing --- ### Product - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=product --- ### Co-founder and CEO - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=co-founder-and-ceo --- ### Customer Success - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=customer-success --- ### Revenue Operations - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=revenue-operations --- ### Developer Advocate - Published: 2021-04-21 - Modified: 2021-04-21 - URL: https://rollbar.com/?job_title=developer-advocate --- ## Customers ### eCommerce - Published: 2021-10-18 - Modified: 2021-11-09 - URL: https://rollbar.com/customers/ecommerce/ --- ### Plexus - Published: 2021-09-22 - Modified: 2021-11-09 - URL: https://rollbar.com/customers/plexus/ --- ### Shortcut - Published: 2021-07-28 - Modified: 2022-12-07 - URL: https://rollbar.com/customers/shortcut/ --- ### Everplans - Published: 2021-07-28 - Modified: 2021-08-16 - URL: https://rollbar.com/customers/everplans/ --- ### FinTech - Published: 2021-07-28 - Modified: 2021-08-16 - URL: https://rollbar.com/customers/fintech/ --- ### Greenhouse - Published: 2021-07-28 - Modified: 2023-05-23 - URL: https://rollbar.com/customers/greenhouse/ --- ### CircleCI - Published: 2021-07-28 - Modified: 2023-05-23 - URL: https://rollbar.com/customers/circleci/ --- ### CVENT - Published: 2021-07-28 - Modified: 2021-11-09 - URL: https://rollbar.com/customers/cvent/ --- ### Twilio - Published: 2021-07-28 - Modified: 2023-05-23 - URL: https://rollbar.com/customers/twilio/ --- ## Changelogs ### Rollbar is removing old grouping versions to improve fingerprinting in July - Published: 2022-07-12 - Modified: 2022-07-12 - URL: https://rollbar.com/development-updates/rollbar-is-removing-old-grouping-versions-to-improve-fingerprinting-in-july/ Seamless grouping is the concept of making sure that when we roll out new grouping versions, already grouped items won’t change. When we receive an occurrence, we basically fingerprint it with all previous versions, to make sure that we keep the existing grouping (if any). This means that as we keep adding new grouping versions, more and more versions need to be checked, thus the performance of the fingerprinting degrades. As we keep adding new grouping versions, more and more versions need to be checked. Thus, the performance of the fingerprinting degrades. To improve fingerprinting, we decided to remove old grouping versions. What does this mean? Removing grouping versions means that occurrences that have been grouped by these rules will be re-grouped. You might see new items generated for occurrences that have been grouped before (with the history of the original item not visible in the new item). Do I need to do anything? No action is needed from your side, the changes will take effect automatically on July 12, 2022. We continue to train our models regularly on millions of crashes to analyze frequently occurring error types and accurately distinguish different ones. This allows engineers to identify, triage, and respond to errors more quickly. Learn more about how grouping works at Rollbar --- ### Rollbar is removing old grouping versions to improve fingerprinting in April - Published: 2022-04-29 - Modified: 2022-07-12 - URL: https://rollbar.com/development-updates/rollbar-is-removing-old-grouping-versions-to-improve-fingerprinting/ Seamless grouping ensures that when we roll out new grouping versions, items that are already grouped won’t change. When we receive an occurrence, we basically fingerprint it with all previous versions to ensure that we keep the existing grouping (if any). As we keep adding new grouping versions, more and more versions need to be checked. Thus, the performance of the fingerprinting degrades. To improve fingerprinting, we decided to remove old grouping versions. What does this mean? Removing grouping versions means that occurrences that have been grouped by these rules will be re-grouped. You might see new items generated for occurrences that have been grouped before (with the history of the original item not visible in the new item). Do I need to do anything? No action is needed from your side, the changes will take effect automatically on May 18, 2022. We continue to train our models regularly on millions of crashes to analyze frequently occurring error types and accurately distinguish different ones. This allows engineers to identify, triage, and respond to errors more quickly. Learn more about how grouping works at Rollbar --- ### New, updated Software Development Kits are available - Published: 2022-04-28 - Modified: 2022-04-28 - URL: https://rollbar.com/development-updates/new-updated-software-development-kits-are-available/ We are pleased to announce new and updated software development kits (SDKs) and capabilities. These SDKs keep Rollbar current on both older, but very significant, platforms like . Net, PHP and Laravel and also the fastest-moving platforms like Apple iOS, React, Typescript and Flutter. “Rollbar is an essential tool from the moment developers say ‘Hello World’ in whatever language they leverage. These releases ensure that we evolve along with the range of languages and frameworks that we support,” Cyrus Radfar, Rollbar Chief Product Officer The new and updated SDKs that Rollbar unveiled today include: . Net v5: The latest release of Rollbar’s . Net SDK adds Blazor browser-side WebAssembly (Wasm) support and introduces RollbarInfrastructure. When enabled within Blazor client-side hosts, RollbarInfrastructure offloads significant payload packaging and processing to a dedicated background worker thread to be handled asynchronously. Also, Rollbar configuration can now be grouped into functionally relevant groups, or configurational options, instead of one long flat list of settings. Apple/Mac SDK: The successor to the Rollbar-iOS SDK, this new release is more lightweight, has better-defined public APIs that are more Swift-friendly and can be used on all current Apple operating systems and platforms. The modular design allows users to leverage all or just parts of this SDK, for which each SDK module is a self-contained SPM package that automatically brings in any required dependency on any other package of the SDK as needed. Also, crash reporting with this SDK is now optional. Memory management features are coming soon. Flutter Beta:... --- ### April 2022 Grouping Update - Published: 2022-04-26 - Modified: 2022-04-26 - URL: https://rollbar.com/development-updates/april-2022-grouping-update/ We are pleased to announce our new Grouping Update which introduces patterns for Elixir and Scala. Both recently supported SDKs with increasing usage and user demand Additionally, this update significantly improves grouping accuracy across all our major languages: Ruby, Java, Javascript, PHP, Python, C#, and Go allowing users to discover and respond to errors more quickly with less noise and more accurate items in the item list. We continue training our models regularly on millions of crashes to analyze frequently occurring error types and accurately distinguish different ones. As usual, these improvements have been rolled out automatically for all accounts with auto-upgrade enabled, so you can focus on fixing bugs! Learn more about how grouping works at Rollbar --- ### Slack Oauth 2.0 system is available for your Rollbar projects - Published: 2022-03-18 - Modified: 2022-03-18 - URL: https://rollbar.com/development-updates/slack-oauth-2-0-system-is-available-for-your-rollbar-projects/ Rollbar is adopting the updated Oauth 2. 0 flow created by Slack. Slack has revised their access tokens and now allows the Rollbar Slack bot to have its own credentials. This replaces the use of member’s credentials.   What does this mean? You don’t have to switch over, but you should consider the benefits of migrating. To complete the migration, you must add the Rollbar Slack bot to any channels that you'd like to post alerts.   What are the benefits of Bot Tokens on Slack? Slack integration will use a single bot token, so there will not be any confusion regarding switching user access tokens. You will have the chance to manually enter the appropriate Slack channel via a text input box, which will eliminate the long load times of a drop-down for channel selection when configuring Slack notifications. When team members leave your Slack workspace, their “owned” tokens do not need to be swapped out as they would today. How to migrate to Slack Oauth 2. 0? We recommend you complete the migration process to ensure continued support of notifications. To start the migration process for the new Slack Oauth 2. 0 version, you will need to go to your Account Settingsand follow the steps in Rollbar.   Migrate to Slack Oauth 2. 0  1. Go toSettings, and selectSlack, underNotifications. 2. On theManage Account Slack Settingspage, begin the migration process by clicking on theAdd to Slackbutton. 3. On the upper left corner,select the Slack workplaceyou want to add... --- ### January 2022 Grouping Update - Published: 2021-12-20 - Modified: 2022-03-18 - URL: https://rollbar.com/development-updates/january-2022-grouping-update/ This month we are excited to roll out a new January Grouping Update which significantly improves Grouping quality for some of our more relevant SDKs. Mainly PHP, Ruby, Python and Javascript. This update simplifies over 100 Grouping rules within our Grouping rule set by: Reducing overgrouping with new rules placeholders added and an increase of 4. 16% in successful new fingerprints Fixing undergrouping by removing generic rules and decrease of 16. 36% in the affected fingerprints Finally, and the most exciting part, these improvements have been rolled out automatically for all accounts with auto-upgrade enabled, so you can focus on fixing bugs while we take care of the squashing effort! --- ### Update regarding Log4j Java vulnerabilities - Published: 2021-12-15 - Modified: 2022-02-10 - URL: https://rollbar.com/development-updates/update-regarding-log4j-java-vulnerabilities/ Rollbar is aware of the Log4j Java vulnerabilities (CVE-2021-44228 and CVE-2021-45046) and we have updated all the potentially impacted infrastructure and we are making updates available for our Java SDK users. We are dedicated to making sure that Rollbar runs quickly and securely within your applications.  Learn about how we’ve addressed the Log4J “Log4Shell” zero-day CVE-2021-44228 and CVE-2021-45046 --- ### December 2021 Grouping Update - Published: 2021-12-07 - Modified: 2022-02-10 - URL: https://rollbar.com/development-updates/december-2021-grouping-update/ We are pleased to announce our December 2021 Grouping Update that significantly improves grouping coverage and quality for some of our most common SDKs. Java, PHP, and Python issues now have from 2% to 6% higher coverage rates allowing users to discover more bugs and respond to them more quickly. Grouping quality has been improved as well by reducing overgrouping of errors caused by generic rules overwriting more specific ones. Additionally, this release improves our internal pattern standardization for easier rule management. We can continue training our models more efficiently and analyzing millions of crashes to distinguish different error types accurately. Best of all, these improvements have been rolled out automatically for all accounts with auto-upgrade enabled, so you can focus on squashing and fixing bugs! --- ## Events ### We’ve partnered with the team over at Vue School to bring you Vue.js Forge Episode 4 for FREE! - Published: 2023-07-24 - Modified: 2023-07-24 - URL: https://rollbar.com/event/big-news-weve-partnered-with-the-team-over-at-vue-school-to-bring-you-vue-js-forge-episode-4-for-free/ --- ### Webinar: Technical Intro to Improve: Release - Published: 2022-10-10 - Modified: 2022-10-10 - URL: https://rollbar.com/event/webinar-technical-intro-to-improverelease/ --- ### Webinar: Introduction to Improve:Release - Published: 2022-09-23 - Modified: 2022-09-23 - URL: https://rollbar.com/event/webinar-introduction-to-improverelease/ --- ### Webinar: Accelerating Code Quality with the DORA Metrics - Published: 2021-05-24 - Modified: 2023-06-20 - URL: https://rollbar.com/event/next-event/ --- ### Webinar: 99% DevOps Presents | The Anatomy of Observability - Published: 2021-04-29 - Modified: 2021-05-27 - URL: https://rollbar.com/event/title-lorem-ipsum-dolor-sit-amet-consectetur-adipi-scing-elit-sed-do-eiusmod-tempor-incididunt-ut-labore-et-dolore-magna-aliqua-3/ --- ### Conference: Developer Week Management 2021 - Published: 2021-04-29 - Modified: 2023-06-20 - URL: https://rollbar.com/event/title-lorem-ipsum-dolor-sit-amet-consectetur-adipi-scing-elit-sed-do-eiusmod-tempor-incididunt-ut-labore-et-dolore-magna-aliqua-2/ --- ## News ### Rollbar to improve code with new AI-assisted workflows and automation-grade grouping - Published: 2020-11-19 - Modified: 2021-06-09 - URL: https://rollbar.com/news/rollbar-to-improve-code-with-new-ai-assisted-workflows-and-automation-grade-grouping/ Rollbar wants to shift developers’ focus to continuously improving code, instead of having to continuously fix it. --- ### Rollbar powers AI-assisted workflows with new grouping engine - Published: 2020-11-19 - Modified: 2021-06-09 - URL: https://rollbar.com/news/rollbar-powers-ai-assisted-workflows-with-new-grouping-engine/ Rollbar, providers of the Continuous Code Improvement Platform, is introducing AI-assisted workflows powered by its new automation-grade grouping engine, enabling developers... --- ### Rollbar Lets Developers Focus on Continuously Improving Code with AI-Assisted Workflows and Automation-Grade Grouping - Published: 2020-11-19 - Modified: 2021-05-27 - URL: https://rollbar.com/news/rollbar-lets-developers-focus-on-continuously-improving-code-with-ai-assisted-workflows-and-automation-grade-grouping/ Rollbar, providers of the Continuous Code Improvement Platform, today announced AI-assisted workflows powered by its new automation-grade grouping engine. --- ### Rollbar Announced AI-Assisted Workflows - Published: 2020-11-19 - Modified: 2021-06-09 - URL: https://rollbar.com/news/rollbar-announced-ai-assisted-workflows/ Rollbar announced AI-assisted workflows powered by its new automation-grade grouping engine. --- ### Rollbar rolls out service to improve error detection for developers - Published: 2020-11-18 - Modified: 2021-06-09 - URL: https://rollbar.com/news/rollbar-rolls-out-service-to-improve-error-detection-for-developers/ Rollbar Inc. today updated its Continuous Code Improvement Platform with a new “automation-grade grouping engine”... --- ### Rollbar Acquires Hungary-Based Samebug - Published: 2019-02-25 - Modified: 2021-05-27 - URL: https://rollbar.com/news/rollbar-acquires-hungary-based-samebug/ Rollbar announced it has acquired Hungary-based Samebug --- ### Lolapps engineers launch Rollbar - Published: 2013-02-26 - Modified: 2021-05-27 - URL: https://rollbar.com/news/lolapps-engineers-launch-rollbar/ Brian Rue and Cory Virok launch an error tracking platform for developers. --- ## Tradeshows ## Webinars ### Speeding Up Software Delivery: You're Only As Good As Your Weakest Link - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/webinar/speeding-up-software-delivery-youre-only-as-good-as-your-weakest-link/ Learn about the trends in DevOps and modern application architectures, and the common challenges enterprises face as they try to scale and speed up software delivery. --- ### CircleCI and Rollbar on enabling Continuous Delivery - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/webinar/circleci-and-rollbar-on-enabling-continuous-delivery/ Join CircleCI CTO Rob Zuber and Rollbar Co-founder and CTO Cory Virok as they discuss 9 questions about continuous delivery. --- ### Debugging Apex Applications with Error Monitoring - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/webinar/debugging-apex-applications-with-error-monitoring/ Rollbar is the first company bringing the value of modern Error Monitoring and Debugging to the Apex ecosystem and to the broader Salesforce platform (supporting Apex, Lightning and Heroku). Learn how to set it up and start using it. --- ### Maximize Your Workflow Through the Clubhouse API - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/webinar/maximize-your-workflow-through-the-clubhouse-api/ Learn how the Clubhouse API can give you a greater amount of control over your data and help automate your workflow. --- ### Advanced Error Monitoring & Debugging With Rollbar - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/webinar/advanced-error-monitoring-debugging-with-rollbar/ Rollbar helps developers deploy better software, faster, with solutions that identify, prioritize and resolve coding errors. Join Rollbar's product experts as they showcase key features to reduce deployment time and cost with an accuracy that you and your team can rely on. In this webinar we will demo: - Error Monitoring with Rollbar Core - Error classification - Rollbar Query Language (RQL) for best in-class insights - Notifications Rules Engine - Rollbar release monitoring --- ### Smart Error Monitoring for Spring Developers - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/webinar/smart-error-monitoring-for-spring-developers/ Nobody likes to find out about errors from the customers themselves. The ripple effect of churn from a single user interaction is crucial to an organization. For Spring Developers, capturing errors early on in your application is important as it’s a popular framework for enterprise application. Join us to learn how to get started with a sophisticated Error Monitoring with simple integration for Spring apps. Learn key benefits, installation guidelines and configuration tips on Error Monitoring for Spring. In this webinar we will review: - Market Overview - Introduction to Error Monitoring for Spring Apps - How to get started with Rollbar for Spring - Key Features Overview - Live Q&A --- ### Best Practices for Moving from a Monolith to Microservices - Published: 2021-05-05 - Modified: 2021-05-05 - URL: https://rollbar.com/webinar/best-practices-for-moving-from-a-monolith-to-microservices/ Transitioning from a Monolith to a Microservices architecture can take years to complete. Companies are under more pressure than ever before to innovate faster and decrease the time to market while maintaining best-in-class customer experience. In this webinar, we'll discuss: - Organizational changes that will help you adopt a Microservice architecture - How to bring change to your organization - How you develop applications in a Microservice architecture - Setting up your Monolith for Microservices and optimizing your local development environment ---